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



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


SQL CREATE TABLE
SQL CONSTRAINT
SQL Clé primaire
SQL Clé étrangère
SQL CREATE VIEW
SQL CREATE INDEX
SQL ALTER TABLE
SQL DROP TABLE
SQL TRUNCATE TABLE
SQL INSERT INTO
SQL UPDATE
SQL DELETE FROM




Plan du site