Recherche…


Créer une table avec une clé étrangère

Dans cet exemple, nous avons une table existante, SuperHeros .

Cette table contient un ID clé primaire.

Nous allons ajouter une nouvelle table afin de stocker les pouvoirs de chaque super héros:

CREATE TABLE HeroPowers
(
    ID int NOT NULL PRIMARY KEY,
    Name nvarchar(MAX) NOT NULL,
    HeroId int REFERENCES SuperHeros(ID)
)

La colonne HeroId est une clé étrangère à la table SuperHeros .

Clés étrangères expliquées

Les contraintes des clés étrangères garantissent l'intégrité des données en imposant que les valeurs d'une table doivent correspondre aux valeurs d'une autre table.

Voici un exemple de lieu où une clé étrangère est requise: Dans une université, un cours doit appartenir à un département. Le code pour ce scénario est le suivant:

CREATE TABLE Department (
    Dept_Code        CHAR (5)     PRIMARY KEY,
    Dept_Name        VARCHAR (20) UNIQUE
);

Insérer des valeurs avec l'instruction suivante:

INSERT INTO Department VALUES ('CS205', 'Computer Science');

Le tableau suivant contiendra les informations sur les sujets proposés par la branche informatique:

CREATE TABLE Programming_Courses (
    Dept_Code       CHAR(5),
    Prg_Code        CHAR(9) PRIMARY KEY,
    Prg_Name        VARCHAR (50) UNIQUE,
    FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);

(Le type de données de la clé étrangère doit correspondre au type de données de la clé référencée.)

La contrainte de clé étrangère sur la colonne Dept_Code autorise les valeurs uniquement si elles existent déjà dans la table référencée, Department . Cela signifie que si vous essayez d'insérer les valeurs suivantes:

INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');

la base de données générera une erreur de violation de clé étrangère, car CS300 n'existe pas dans la table Department . Mais lorsque vous essayez une valeur clé qui existe:

INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');

alors la base de données autorise ces valeurs.

Quelques conseils pour l'utilisation de clés étrangères

  • Une clé étrangère doit faire référence à une clé UNIQUE (ou PRIMARY) dans la table parent.
  • La saisie d'une valeur NULL dans une colonne de clé étrangère ne génère pas d'erreur.
  • Les contraintes de clé étrangère peuvent référencer des tables dans la même base de données.
  • Les contraintes de clé étrangère peuvent faire référence à une autre colonne du même tableau (auto-référence).


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow