Breve corso di SQL - Le relazioni fra tabelle
Descriviamo ora una caratteristica molto importante delle Basi di Dati Relazionali: le relazioni fra tabelle.
Prima di analizzare le relazioni fra tabelle servono alcune definizioni molto importanti.
Il campo Matricola è chiave per la tabella, mentre il campo Costo no. I campi chiave sono molto importanti perché permettono non solo di ritrovare facilmente dati all'interno delle tabelle, ma soprattutto di collegare tra loro tabelle diverse. La necessità di scrivere informazioni su più tabelle collegate nasce da due esigenze fondamentali: la prima riguarda lo spreco di spazio all'interno di una tabella (ridondanza delle informazioni), la seconda riguarda la coerenza tra le informazioni ridondanti. Es: sia la tabella Elezioni:
Si vede subito che la prima colonna contiene informazioni ripetute, ed anche se questo spreco ci sembra di poca importanza, consideriamo che la colonna Lista contiene 129 caratteri, mentre la seconda 42 e la terza 6. Quindi su un totale di 129+42+6=177 caratteri circa il 73% è occupato dalla prima colonna (questi calcoli non hanno nessuno scopo formale, ma servono solo per spiegare il concetto che è alla base dell'esempio). Se invece avessimo due tabelle: 1 - Lista in cui il campo Num_lista è chiave per la tabella
2 - Preferenze in cui il campo Candidato è chiave per la tabella
Le informazioni occupate dalla prima colonna scenderebbero a 6 caratteri, quindi sul totale di 6+42+6=54 caratteri il campo Num_lista occupa l' 11% dello spazio occupato dalla tabella. (In queste righe non si è tenuto conto della nuova tabella Lista come influisce lo spazio occupato da questa tabella? E' sempre conveniente spezzare?) Ovviamente abbiamo fatto un esempio in cui la tabella Preferenze è molto piccola, e quindi correggendo alcuni conti il risparmio potrebbe non essere evidente, ma si pensi che una base dati di un certo interesse ha almeno alcune migliaia di righe per ogni tabella. Il Campo Num_lista della tabella Preferenze viene detto Chiave Esterna per tale tabella, perché è il campo che permette di collegare le informazioni qui contenute con quelle contenute nella tabella Liste. Un'ultima considerazione: mettiamo che il nome della lista numero 2 invece di "Siamo forti" sia "Siamo molto forti", e che questa correzione debba essere fatta a tabella Preferenze già riempita: nel caso a tabella unica le righe da correggere sono due, mentre nel caso a tabelle separate bisogna solo correggere la tabella Liste, senza dover toccare la tabella Preferenze, cosa che ha un numero ampio di aspetti postivi, tra cui uno dei più importanti è che non si possono creare situazioni "ibride" in cui qualche record è stato aggiornato e altri no. A chi interessano le problematiche relative a questo procedimento consiglio di guardare qualche pubblicazione nei capitoli che parlano di Normalizzazioni e Forme Normali di Boice-Codd.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||