I progettisti di database fanno ampio uso di chiavi nello sviluppo di database relazionali. Tra le più comuni di queste chiavi ci sono le chiavi primarie e le chiavi esterne. Una chiave esterna del database è un campo in una tabella relazionale che corrisponde alla colonna della chiave primaria di un'altra tabella. Per capire come funziona una chiave esterna, diamo un'occhiata più da vicino all'idea di un database relazionale.
Alcune nozioni di base sui database relazionali
In un database relazionale, i dati vengono archiviati in tabelle contenenti righe e colonne, semplificando la ricerca e la manipolazione. Esiste una seria matematica dietro il concetto di un database relazionale (algebra relazionale, proposto da E.F.
Codd in IBM nel 1970), ma questo non è l'argomento di questo articolo.
Per scopi pratici (e non matematici), un database relazionale memorizza i dati correlati in righe e colonne. Inoltre - ed ecco dove diventa interessante - la maggior parte dei database sono progettati in modo che i dati in una tabella possano accedere ai dati in un'altra tabella. Questa capacità di creare relazioni tra tabelle è il vero potere di un database relazionale.
Utilizzo di chiavi esterne
La maggior parte delle tabelle, in particolare quelle in database complessi e di grandi dimensioni, ha chiavi primarie. Le tabelle progettate per accedere ad altre tabelle devono avere anche una chiave esterna.
Per utilizzare il database Northwinds comunemente citato, ecco un estratto da una tabella di prodotto:
Codice prodotto | Nome del prodotto | IDCategoria | QuantityPerU | Prezzo unitario |
---|---|---|---|---|
1 | Chai | 1 | 10 scatole x 20 borse | 18.00 |
2 | Chang | 1 | 24 - 12 bottiglie di oz | 19.00 |
3 | Sciroppo d'anice | 2 | 12 - flaconi da 550 ml | 10.00 |
4 | Condimento Cajun dello Chef Anton | 2 | Vasetti da 48 - 6 once | 22.00 |
5 | Gumbo Mix dello Chef Anton | 2 | 36 scatole | 21.35 |
6 | Diffusione di Boysenberry della nonna | 2 | Vasetti da 12 - 8 once | 25.00 |
7 | Pere secche organiche dello zio Bob | 7 | 12 - 1 libbra pkgs. | 30.00 |
Il Codice prodotto la colonna è la chiave primaria di questa tabella. Assegna un ID univoco a ciascun prodotto.
Questa tabella contiene anche una colonna chiave esterna, IDCategoria. Ogni prodotto nella tabella Prodotto si collega a una voce nella tabella Categorie che definisce la categoria di quel prodotto.
Prendi nota di questo estratto dalla tabella Categorie del database:
IDCategoria | Nome della categoria | Descrizione |
---|---|---|
1 | Bevande | Bibite, caffè, tè, birre e birre |
2 | condimenti | Salse, condimenti, creme e condimenti dolci e salati |
3 | confezioni | Dessert, caramelle e animelle |
5 | latticini | formaggi |
La colonna IDCategoria è la chiave principale di questa colonna. (Non ha alcuna chiave esterna perché non ha bisogno di accedere a un'altra tabella.) Ogni chiave esterna nella tabella Prodotto si collega a una chiave primaria nella tabella Categorie. Ad esempio, al prodotto Chai viene assegnata una categoria "Bevande", mentre Anice Sciroppo si trova nella categoria Condimenti.
Questo tipo di collegamento crea una miriade di modi per utilizzare e riutilizzare i dati in un database relazionale.