Che cos'è una chiave esterna?
I database sono composti da tabelle in cui sono memorizzati dati o informazioni. Una chiave esterna è un meccanismo in un database relazionale che consente l'associazione di tali tabelle o che le tabelle abbiano una relazione tra loro. Ci sono caratteristiche uniche che una chiave esterna deve avere. Deve essere una colonna o un gruppo di colonne in una tabella i cui valori stabiliscono una relazione con i valori in un'altra tabella all'interno dello stesso database.
Una chiave esterna garantisce che le righe in una tabella corrispondono alle righe in un'altra tabella, stabilendo così relazioni o riferimenti a livello di database. La tabella che contiene la chiave esterna è "figlio" e l'altra tabella è "padre". È possibile che il valore di una chiave esterna sia nullo o vuoto e che possa effettivamente fare riferimento o fare riferimento a ciò che è noto come chiave primaria della tabella in cui si trova. Questo è noto come autoreferenziazione.
È necessario avere una buona comprensione di cosa sia una chiave primaria prima di tentare di comprendere appieno il concetto alla base delle chiavi esterne. Ad esempio, se in un database sono presenti due tabelle che memorizzano informazioni sui libri pubblicati per un sito Web che vende libri, una tabella potrebbe essere la tabella degli editori e l'altra la tabella dei libri. La tabella dei publisher potrebbe essere composta da due colonne, una chiave primaria sempre unica per ogni record e una colonna del nome del publisher. Un minimo di tre colonne costituirebbe la tabella dei libri, contenente la chiave primaria o l'identificatore univoco per ciascun libro, i titoli dei libri e una colonna tramite la quale stabilire una relazione con la tabella degli editori. Quella colonna sarebbe la chiave esterna.
La chiave primaria per la tabella dei publisher potrebbe essere qualcosa come "pub_id" con valori di: P01, P02, P03, ecc. Una relazione sarebbe stabilita con la tabella dei libri se contenesse una colonna pub_id con gli stessi valori. Questa sarebbe la chiave esterna che collegherebbe questa tabella figlio al suo genitore - la tabella dei publisher.
Una chiave esterna può tuttavia avere un nome di colonna diverso rispetto alla chiave principale a cui fa riferimento. Una solida comprensione del funzionamento delle chiavi primarie ed esterne è essenziale per mantenere l'integrità referenziale. Database molto grandi composti da più tabelle o che coinvolgono una tabella di giunzione presentano più di un tipo di relazione, il che può complicare il compito di lavorare con chiavi esterne.