SQL 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
Table ORDERS
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);
Copyright © 2024 1keydata.com Tous droits réservés |