Chiave esterna

Da Wikipedia, l'enciclopedia libera.

Nel contesto dei database relazionali, una chiave esterna (ingl. foreign key) è un vincolo di integrità referenziale tra due o più tabelle. Essa identifica una o più colonne di una tabella (referenziante) che referenzia una o più colonne di un'altra tabella (referenziata).

I valori di un record delle colonne referenzianti devono essere presenti in un unico record della tabella referenziata. Ciò implica che un record nella tabella referenziante non può contenere valori che non esistono nella tabella referenziata (eccetto nel caso particolare di valori NULL). Più record della tabella referenziante possono puntare allo stesso record della tabella referenziata. Nella maggior parte dei casi, ciò corrisponde alla relazione "uno a molti" tra una tabella padre ed una tabella figlio.

La tabella referenziante e quella referenziata possono essere la stessa tabella. Una chiave esterna di questo tipo è anche chiamata auto-referenziante o ricorsiva.

Una tabella può avere molte chiavi esterne, ed ogni chiave esterna può referenziare una tabella diversa.

Descrizione[modifica | modifica sorgente]

Azioni[modifica | modifica sorgente]

Quando nella tabella referenziata si verifica un cambiamento che interessa la chiave esterna, un'azione può essere eseguita automaticamente dal DBMS per garantire l'integrità. L'azione specifica da eseguire può essere scelta dall'utente, chiave per chiave. Gli eventi che interessano la chiave primaria sono due: ON DELETE si verifica quando viene chiesta la cancellazione di un record nella tabella referenziata; ON UPDATE si verifica quando si tenta di modificare uno o più campi referenziati dalla chiave esterna.

Tipi di corrispondenza[modifica | modifica sorgente]

Gli standard SQL prevedono tre diverse modalità per trovare le corrispondenze tra i record, ognuna delle quali implica un modo diverso di trattare i valori NULL. I tre tipi sono:

  • MATCH FULL - Se la chiave esterna è composta da più colonne, non è possibile inserire un valore NULL in una colonna a meno che tutte le colonne non siano NULL. Se la chiave esterna è composta da una sola colonna, è possibile inserire valori NULL.
  • MATCH PARTIAL - Permette di inserire valori NULL. Se la chiave esterna è composta da più colonne, è possibile inserire valori NULL in tutte le colonne o in alcune di esse.
  • MATCH SIMPLE - I valori NULL non sono ammessi.

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]