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.
