Database
 sql >> Base de données >  >> RDS >> Database

CLÉ ÉTRANGÈRE SQL

Dans cet article, nous allons découvrir les contraintes FOREIGN KEY et comment définir une contrainte FOREIGN KEY pour construire la relation entre deux tables.

Dans un système de gestion de bases de données relationnelles (RDBMS), une FOREIGN KEY est un champ ou un groupe de champs qui est utilisé pour établir une relation entre deux tables ou joindre les deux tables.

  • CLÉ ÉTRANGÈRE est également appelée clé de référencement dans le SGBDR
  • En utilisant les contraintes FOREIGN KEY entre deux tables, nous définissons une relation parent-enfant entre deux tables.
  • Le champ définit les contraintes PRIMARY KEY dans une table appelée table parent, tandis que le même champ définit les contraintes FOREIGN KEY dans une autre table appelée table enfant.
  • Il ne peut y avoir qu'une seule CLÉ PRIMAIRE dans la table, mais il n'y a pas de limite définie pour la CLÉ ÉTRANGÈRE. Nous pouvons avoir une ou plusieurs FOREIGN KEY sur la table.
  • Nous pouvons définir des contraintes FOREIGN KEY lors de la création de la table ou définir des contraintes FOREIGN KEY sur la table déjà existante.

Prenons un exemple pour comprendre et connaître les contraintes FOREIGN KEY.

Exemple :

Ici, nous avons deux tables, l'une est la table Course et la seconde est la table Student :

Les étudiants sélectionnent les cours. L'exemple de contraintes FOREIGN KEY suivant est défini sur un champ.

Table numéro un :Table des élèves

Student_Id Prénom Nom_de_famille Email_Id Ville
101 Kareena Sayyed [email protected] Hyderabad
102 Anmol Temani [email protected] Jalgaon
103 Harshal Patel [email protected] Bombay
104 Sakshi Capuche [email protected] Pune
105 Suresh Kohli [email protected] Hyderabad

Table numéro deux :Table des cours

Course_Id Course_Name Student_Id
C101 Java 101
C102 SQL 102
C103 SOA Nul
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

Dans la table Student, le champ Student_Id est la PRIMARY KEY et dans la table Course, Student_Id est la FOREIGN KEY.

La FOREIGN KEY La contrainte empêche l'insertion de données non valides dans la colonne de clé étrangère car il doit s'agir de l'une des valeurs contenues dans la table parent.

Définir les contraintes FOREIGN KEY sur CREATE TABLE

L'exemple suivant définit une FOREIGN KEY sur la table Course.

Tout d'abord, nous avons créé la table Student avec les champs suivants :

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'exemple suivant montre comment définir les contraintes FOREIGN KEY sur l'autre table.

Cours de nom de table :

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));

Dans la table Course, nous n'avons pas défini de PRIMARY KEY. Définissez simplement les contraintes FOREIGN KEY sur le Student_Id.

L'exemple de contraintes FOREIGN KEY suivant est défini sur plusieurs champs.

Supposons que nous ayons trois tables, l'une est la table Package, la seconde est la table Data et la troisième est la table Talk_time :

Tableau 1 :Paquet :

Package_Id Data_Id Talktime_Id
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

Tableau 2 :Données :

Data_Id Data_Limit Data_Price
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

Tableau 3 :Talk_Time :

Talk_Time_Id Talk_Time _Limit Talk_Time _Price
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

Dans la table Talk_Time, Talk_Time_Id est la CLÉ PRIMAIRE.

Dans la table de données, Data_Id est la CLÉ PRIMAIRE.

Alors que dans la table Package, Talk_Time_Id et Data_Id sont les clés FOREIGN

Tableau numéro un :Données :

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

Table numéro deux :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));

Tableau numéro trois :Package :

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)); 

Contraintes FOREIGN KEY utilisant ALTER TABLE :

Supposons que nous ayons déjà créé la table et que nous souhaitions définir les contraintes FOREIGN KEY sur le champ. Nous utiliserons la requête ALTER TABLE pour ajouter des contraintes FOREIGN KEY dans un tel cas.

La requête suivante est utilisée pour ajouter des contraintes FOREIGN KEY sur le champ Student_Id.

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

ADD Keyword est utilisé après le nom de la table pour ajouter les contraintes FOREIGN KEY à la table déjà existante.

Contrainte DROP FOREIGN KEY de la table

Utilisez la requête suivante pour supprimer la contrainte FOREIGN KEY de la table.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

Le mot-clé Drop est utilisé pour supprimer les contraintes FOREIGN KEY du champ Student_Id.

course_ibfk_1 est le nom de la contrainte de clé étrangère.

Nous pouvons avoir des valeurs nulles dans le champ des contraintes FOREIGN KEY. Nous pouvons avoir des valeurs en double dans le champ FOREIGN KEY contraintes.