logo

Chiave esterna nel DBMS

Una chiave esterna è diversa da una super chiave, una chiave candidata o una chiave primaria perché una chiave esterna è quella utilizzata per collegare due tabelle insieme o creare connettività tra le due.

Qui, in questa sezione, discuteremo della chiave esterna, del suo utilizzo e vedremo alcuni esempi che ci aiuteranno a comprendere il funzionamento e l'utilizzo della chiave esterna. Ne vedremo anche l'implementazione pratica su un database, ovvero la creazione e la cancellazione di una chiave esterna su una tabella.

Cos'è una chiave esterna

Una chiave esterna è quella utilizzata per collegare due tabelle insieme tramite la chiave primaria. Significa che le colonne di una tabella puntano all'attributo della chiave primaria dell'altra tabella. Significa inoltre che se un attributo è impostato come attributo di chiave primaria funzionerà in un'altra tabella come attributo di chiave esterna. Ma bisogna sapere che una chiave esterna non ha nulla a che fare con la chiave primaria.

Utilizzo della chiave esterna

L'uso di una chiave esterna consiste semplicemente nel collegare insieme gli attributi di due tabelle con l'aiuto di un attributo di chiave primaria. Pertanto, viene utilizzato per creare e mantenere la relazione tra le due relazioni.

Esempio di chiave esterna

Discutiamo un esempio per comprendere il funzionamento di una chiave esterna.

registro insensato

Consideriamo due tabelle Alunno E Dipartimento aventi i rispettivi attributi come mostrato nella struttura della tabella seguente:

Chiave esterna nel DBMS
Chiave esterna nel DBMS

Nelle tabelle, come puoi vedere, un attributo è comune Stud_Id , ma presenta vincoli chiave diversi per entrambe le tabelle. Nella tabella Studenti, il campo Stud_Id è a chiave primaria perché identifica in modo univoco tutti gli altri campi della tabella Studente. D'altra parte, Stud_Id è un chiave esterna attributo per la tabella Dipartimento perché funge da attributo di chiave primaria per la tabella Studente. Ciò significa che sia la tabella Student che quella Department sono collegate tra loro grazie all'attributo Stud_Id.

Nella figura sotto riportata è possibile visualizzare la seguente struttura della relazione tra le due tabelle.

la stringa Java è vuota
Chiave esterna nel DBMS

Nota: l'integrità referenziale nel DBMS si sviluppa dal concetto di chiave esterna. È chiaro che una chiave primaria è una sola chiave esistente e una chiave esterna fa sempre riferimento a una chiave primaria in qualche altra tabella, in cui la tabella che contiene la chiave primaria è nota come tabella di riferimento o tabella padre per l'altra tabella che sta avendo la chiave esterna.

Creazione del vincolo di chiave esterna

Su CREA TABELLA

Di seguito la sintassi che ci farà apprendere la creazione di una chiave esterna in una tabella:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) ); 

Quindi, in questo modo, possiamo impostare una chiave esterna per una tabella nel database MYSQL.

In caso di creazione di una chiave esterna per una tabella nel server SQL o Oracle, funzionerà la seguente sintassi:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) ); 

Su ALTER TABLE

Di seguito è riportata la sintassi per creare un vincolo di chiave esterna su ALTER TABLE:

ipconfig gratuito
 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Eliminazione della chiave esterna

Per eliminare una chiave esterna, è possibile utilizzare la sintassi descritta di seguito:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Quindi, in questo modo, possiamo eliminare una chiave esterna utilizzando ALTER TABLE nel database MYSQL.

Punto da ricordare

Quando si rilascia la chiave esterna, è necessario prendersi cura dell'integrità delle tabelle connesse tramite una chiave esterna. Nel caso in cui si apporti modifiche in una tabella e si comprometta l'integrità di entrambe le tabelle, potrebbero essere visualizzati alcuni errori dovuti a una connettività impropria tra le due tabelle.

Azioni referenziali

Esistono alcune azioni collegate alle azioni intraprese dal titolare della tabella della chiave esterna:

1) Cascata

Quando eliminiamo righe nella tabella padre (ovvero, quella che contiene la chiave primaria), vengono eliminate anche le stesse colonne nell'altra tabella (ovvero, quella che contiene una chiave esterna). Pertanto, l'azione è nota come Cascata .

operatore ternario java

2) Imposta NULL

Tale azione referenziale mantiene l'integrità referenziale di entrambe le tabelle. Quando manipoliamo/eliminiamo una riga referenziata nella tabella padre/riferita, nella tabella figlia (tabella con chiave esterna), il valore di tale riga di riferimento viene impostato come NULL. Tale azione referenziale eseguita è nota come Imposta NULL .

3) Impostare PREDEFINITO

Tale azione ha luogo quando i valori nella riga di riferimento della tabella padre vengono aggiornati o la riga viene eliminata, i valori nella tabella figlio vengono impostati sui valori predefiniti della colonna.

4) Limitare

allinea l'immagine CSS

È il vincolo di restrizione in base al quale il valore della riga a cui si fa riferimento nella tabella madre non può essere modificato o eliminato a meno che non venga indicato dalla chiave esterna nella tabella figlia. Pertanto, si tratta di una normale azione referenziale di una chiave esterna.

5) Nessuna azione

È anche un vincolo di restrizione della chiave esterna ma viene implementato solo dopo aver tentato di modificare o eliminare la riga di riferimento della tabella padre.

6) Trigger

Tutte queste e altre azioni referenziali sono sostanzialmente implementate come trigger in cui le azioni di una chiave esterna sono molto simili o quasi simili ai trigger definiti dall'utente. Tuttavia, in alcuni casi, le azioni referenziali ordinate vengono sostituite dai trigger equivalenti definiti dall'utente per garantire la corretta esecuzione del trigger.