SQL : La propriété de Clé Etrangère Foreign key



C’est quoi une cétrangère ??

Une cétrangère est un champ qui est déjà une clé primaire dans une autre table, par exemple dans la table Fournisseur on a le champ numclt est une c étrangère dans la table Fournisseur car il est tout simplement une clé primaire dans une autre table qui est la table Client.

Remarque : Dans le cas d’une table qui contient des clés étrangères avant la créer on doit avant créer les tables qui contiennent ces clés étrangères comme des clés primaires, pour que le système SQL sache qu’ils sont des clés primaires dans d’autres tables durant les déclarer comme des clés étrangères dans les autres tables qui les contient comme des clés étrangères,
Sinon ce n’est pas logique de déclarer un champ comme une cétrangère s’il n’est pas décrée comme une clé primaire dans une autre table.

Syntaxe


Create Table Nom_Table (Champ1 Type Ses_Propriés, Champ2 Type Ses_Propriétés, CONSTRAINT Nom_Clé_etrangére foreign key (Champs_decrlaré_comme_clé_étrangére) references Nom_Table_Origine (Nom_du_Champs_clé_primaire)


Explication de la syntaxe


Nom_Clé_etrangére : Un nom qu’on donne tout simplement à la c étrangère qu’on va créer, pour la faire appelle on cas qu’on veut la supprimer où la modifier

Champs_decrla_comme_c_étrangére : Le nom du champ qu’on veut déclarer comme une clé étrangère.

Nom_Table_Origine : Le nom de la table dans laquelle le champ déclaré est déjà de type cprimaire



Nom_du_Champs_clé_primaire : Le nom avec lequel le champ qu’on a déclaré comme clé étrangère existe dans la table dans laquelle il est clé primaire.



Exemple (clé primaire constitué de deux clés étrangères)


Créer une table Fournisseur avec quatre champs numéro fournisseur (son nom num), tel, numclt, numovr, avec une clé primaire combi des deux champs  numclt et numovr

Avant de créer cette table on doit observer que les deux champs numclt et numovr sont des clés primaires dans d’autres tables Ouvrier et Client, alors on doit les déclarer comme des clés étrangères dans la table Fournisseur qu’on va cer avant de déclarer les deux comme clé primaire.

Il faut aussi ajouter une autre chose importante avant de déclarer une cétrangère il faut quelle soit décrée comme cprimaire dans sa table originale, ça veut dire avant de créer cette table Fournisseur, on doit avant créer les tables qui contient les clés étrangères (numclt, numovr) quon veut déclarer dans Fournisseur, alors il faut créer Client et Ouvrier sils ne sont pas déjà crées puis Fournisseur.

Create Table Fournisseur (numclt int,  numovr int, numf int, tel char(9),
CONSTRAINT Cle_etrangere1 foreign key (numclt) references Client (numclt), CONSTRAINT Cle_etrangere2 foreign key (numovr) references Ouvrier (numovr), CONSTRAINT Cleprimaire3 primary key (numclt, numovr))

Aucun commentaire:

Enregistrer un commentaire