← Retour à la référence SQL

FOREIGN KEY

Catégorie : conception

Contrainte qui crée un lien entre deux tables. Elle assure l'intégrité référentielle : les valeurs de la colonne dans la table enfant (référençante) doivent exister dans la colonne référencée de la table parent (généralement une clé primaire).

📝 Syntaxe

CREATE TABLE table1 (..., col TYPE, FOREIGN KEY (col) REFERENCES table2(col_cible)) ou ALTER TABLE table1 ADD FOREIGN KEY (col) REFERENCES table2(col_cible)

💡 Exemples

CREATE TABLE commandes (id INT PRIMARY KEY, client_id INT, FOREIGN KEY (client_id) REFERENCES clients(id));
Table 'commandes' créée avec une clé étrangère vers la table 'clients'.
ALTER TABLE emprunts ADD FOREIGN KEY (livre_id) REFERENCES livres(id) ON DELETE CASCADE;
Ajout d'une clé étrangère avec action en cascade : si un livre est supprimé, ses emprunts le sont aussi.

🎯 Exercice

Une table 'notes' référence un 'eleve_id' et un 'cours_id'. Quelles tables parentes doivent exister et quelles colonnes doivent-elles référencer ?

Voir la solution
Il doit exister une table 'élèves' avec une PRIMARY KEY sur 'id' et une table 'cours' avec une PRIMARY KEY sur 'id'. La FOREIGN KEY (eleve_id) REFERENCES élèves(id) et FOREIGN KEY (cours_id) REFERENCES cours(id).

⚠️ Pièges courants

  • Créer une clé étrangère vers une colonne qui n'est pas unique dans la table parent.
  • Oublier de créer un index sur la colonne de clé étrangère, ce qui peut ralentir les jointures.
Pixel