SQL Clé étrangère



SQL > Manipulation de table > clé étrangère 

La clé étrangère représente un champ (ou des champs) qui pointe vers la clé primaire d’une autre table. L’objectif de la clé étrangère est d’assurer l’intégrité référentielle des données. En d’autres mots, seules les valeurs devant apparaître dans la base de données sont permises.

Par exemple, nous avons deux tables, l’une appelée CUSTOMER qui inclut toutes les données du client, et l’autre ORDERS qui comprend ses commandes. La contrainte ici est que toutes les commandes doivent être associées à un client qui se trouve déjà référencé dans la table CUSTOMER. Dans ce cas, une clé étrangère devra être placée sur la table ORDERS et mise en relation avec la clé primaire de la table CUSTOMER. De cette façon, il sera possible d’assurer que toutes les commandes de la table ORDERS sont mises en relation avec un client de la table CUSTOMER. En d’autres mots, la table ORDERS ne peut contenir d’informations sur un client qui ne se trouve pas dans la table CUSTOMER.

La structure de ces deux tables sera comme suit :

Table CUSTOMER
 Nom de Colonne   Caractéristique 
 SID   Clé primaire 
 Last_Name   
 First_Name   

Table ORDERS
 Nom de Colonne   Caractéristique 
 Order_ID   Clé primaire 
 Order_Date   
 Customer_SID   Clé étrangère 
 Amount   

Dans l’exemple ci-dessus, la colonne Customer_SID de la table ORDERS représente une clé étrangère pointant vers la colonne SID de la table CUSTOMER.

Les exemples ci-dessous illustrent comment spécifier la clé étrangère lors de la création de la table ORDERS :

MySQL:

CREATE TABLE ORDERS
(Order_ID integer,
Order_Date datetime,
Customer_SID integer,
Amount double,
PRIMARY KEY (Order_ID),
FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID));

Oracle:

CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date date,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);

SQL Server:

CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date datetime,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);

Vous trouverez ci-dessous quelques exemples pour spécifier une clé étrangère lors de la modification d’une table. Il est supposé que la table ORDERS a été créée, et que la clé étrangère n’a pas encore été introduite :

MySQL:

ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

Oracle:

ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

SQL Server:

ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

SQL CREATE VIEW >>

Cette page a été mise à jour pour la dernière fois le 18/06/2022


Copyright © 2024   1keydata.com   Tous droits réservés