I database sono composti da tabelle in cui sono archiviati 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 deve avere una chiave esterna. Deve essere una colonna o un gruppo di colonne in una tabella i cui valori stabiliscono una relazione con i valori di un’altra tabella all’interno dello stesso database.
Una chiave esterna garantisce che le righe di una tabella corrispondano alle righe di un’altra tabella, stabilendo così relazioni o riferimenti a livello di database. La tabella che contiene la chiave esterna è il “figlio” e l’altra tabella è il “genitore”. È possibile che il valore di una chiave esterna sia nullo o vuoto e che faccia effettivamente riferimento o si riferisca a quella che è nota come chiave primaria della tabella in cui si trova. Questo è noto come autoreferenzialità.
È 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 degli editori può essere composta da due colonne, una chiave primaria sempre univoca per ogni record e una colonna del nome dell’editore. Un minimo di tre colonne costituirebbe la tabella libri, contenente la chiave primaria o identificatore univoco per ogni libro, i titoli dei libri e una colonna attraverso la quale si stabilirebbe una relazione con la tabella editori. Quella colonna sarebbe la chiave esterna.
La chiave primaria per la tabella editori potrebbe essere qualcosa come “pub_id” con valori di: P01, P02, P03, ecc. Verrebbe stabilita una relazione con la tabella libri se contenesse una colonna pub_id con gli stessi valori. Questa sarebbe la chiave esterna che metterebbe in relazione questa tabella figlio con il suo genitore, la tabella degli editori.
Una chiave esterna può, tuttavia, avere un nome di colonna diverso rispetto alla chiave padre a cui fa riferimento. Una buona comprensione del funzionamento delle chiavi primarie ed esterne è essenziale per mantenere l’integrità referenziale. I database molto grandi che sono composti da molte tabelle o che coinvolgono una tabella di giunzione presentano più di un tipo di relazione, che può complicare il compito di lavorare con chiavi esterne.