Database
 sql >> Database >  >> RDS >> Database

CHIAVE ESTERA SQL

In questo articolo impareremo a conoscere i vincoli FOREIGN KEY e come definire un vincolo FOREIGN KEY per costruire la relazione tra due tabelle.

In un sistema di gestione di database relazionali (RDBMS), una CHIAVE ESTERA è un campo o un insieme di campi che viene utilizzato per costruire una relazione tra due tabelle o unire le due tabelle.

  • FOREIGN KEY è anche noto come chiave di riferimento nell'RDBMS
  • Utilizzando i vincoli FOREIGN KEY tra due tabelle, definiamo una relazione padre-figlio tra due tabelle.
  • Il campo definisce i vincoli PRIMARY KEY in una tabella nota come tabella padre, mentre lo stesso campo definisce i vincoli FOREIGN KEY in un'altra tabella nota come tabella figlio.
  • Può esserci solo una CHIAVE PRIMARIA nella tabella, ma non esiste un limite definito per la CHIAVE ESTERA. Possiamo avere una o più CHIAVI ESTERE sul tavolo.
  • Possiamo definire vincoli FOREIGN KEY durante la creazione della tabella o definire vincoli FOREIGN KEY sulla tabella già esistente.

Facciamo un esempio per capire e conoscere i vincoli FOREIGN KEY.

Esempio:

Qui abbiamo due tabelle una è la tabella del Corso e la seconda è la tabella degli Studenti:

Gli studenti selezionano i corsi. Il seguente esempio di vincoli FOREIGN KEY è definito su un campo.

Tavolo numero uno:Tavolo degli studenti

ID_studente Nome Cognome Email_Id Città
101 Kareena Detto [email protected] Hyderabad
102 Anmol Temani [email protected] Galgaon
103 Harshal Patel [email protected] Mumbai
104 Sakshi Cappa [email protected] Pune
105 Certo Kohli [email protected] Hyderabad

Tabella numero due:tabella dei corsi

Course_Id Nome_corso ID_studente
C101 Java 101
C102 SQL 102
C103 SOA Null
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

Nella tabella Student, il campo Student_Id è la CHIAVE PRIMARIA e nella tabella Corso, Student_Id è la CHIAVE STRANIERA.

La FOREIGN KEY vincolo impedisce l'inserimento di dati non validi nella colonna della chiave esterna perché deve essere uno dei valori contenuti nella tabella padre.

Definisci vincoli CHIAVE ESTERA su CREATE TABLE

L'esempio seguente definisce una CHIAVE STRANIERA nella tabella del corso.

Innanzitutto, abbiamo creato la tabella Studente con i seguenti campi:

CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50),  City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));

L'esempio seguente mostra come definire i vincoli FOREIGN KEY sull'altra tabella.

Corso sul nome del tavolo:

CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));

Nella tabella Corso, non abbiamo definito alcuna CHIAVE PRIMARIA. Basta definire i vincoli FOREIGN KEY su Student_Id.

Il seguente esempio di vincoli FOREIGN KEY è definito su più campi.

Supponiamo di avere tre tabelle, una è la tabella Package, la seconda è la tabella Data e la terza è la tabella Talk_time:

Tabella 1:Pacchetto:

ID_pacchetto ID_dati Id_tempo di conversazione
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

Tabella 2:Dati:

ID_dati Limite_dati Prezzo_dati
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

Tabella 3:Talk_Time:

Talk_Time_Id Limite_tempo di conversazione Talk_Time _Prezzo
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

Nella tabella Talk_Time, Talk_Time_Id è la CHIAVE PRIMARIA.

Nella tabella Data, Data_Id è la CHIAVE PRIMARIA.

Mentre nella tabella Package, Talk_Time_Id e Data_Id sono le chiavi FOREIGN

Tabella numero uno:dati:

CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));

Tabella numero due:Talk_Time:

CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));

Tabella numero tre:Pacchetto:

CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));

FOREIGN KEY Vincoli utilizzando ALTER TABLE:

Supponiamo di aver già creato la tabella e di voler definire i vincoli FOREIGN KEY sul campo. Utilizzeremo la query ALTER TABLE per aggiungere vincoli FOREIGN KEY in questo caso.

La seguente query viene utilizzata per aggiungere i vincoli FOREIGN KEY nel campo Student_Id.

ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);

ADD Keyword viene utilizzato dopo il nome della tabella per aggiungere i vincoli FOREIGN KEY alla tabella già esistente.

Elimina il vincolo FOREIGN KEY dalla tabella

Utilizzare la query seguente per rimuovere il vincolo FOREIGN KEY dalla tabella.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

La parola chiave Drop viene utilizzata per rimuovere i vincoli FOREIGN KEY dal campo Student_Id.

course_ibfk_1 è il nome del vincolo di chiave esterna.

Possiamo avere valori nulli nel campo dei vincoli FOREIGN KEY. Possiamo avere valori duplicati nel campo dei vincoli FOREIGN KEY.