Clé étrangère (FK)
Une clé étrangère est une colonne qui reprend la clé primaire d'une autre table pour matérialiser un lien du MCD. Le SGBD vérifie alors que la ligne référencée existe bien.
- FK
- FOREIGN KEY
- référence
- nullable
- intégrité référentielle
Syntaxe
table_enfant(…, cle_parent FK → table_parent) NOT NULL si la cardinalité de ce côté est (1,1) nullable si elle est (0,1)Exemple
client(num_client PK, nom)commande(num_commande PK, date_commande, num_client FK → client)client : (17, Dupont)commande : (C1001, 2026-10-03, 17) ✓ le client 17 existe (C1002, 2026-10-04, 99) ✗ refusée : aucun client 99À retenir
- La clé étrangère se place dans la table dont la cardinalité maximale vaut 1 : une commande pointe vers son client, jamais l'inverse.
- Elle est NOT NULL quand la cardinalité de son côté est (1,1), nullable quand elle est (0,1).
- Elle reprend le nom de la clé visée (num_client), sauf quand un rôle l'impose, comme num_encadrant dans une association réflexive.
- À la suppression d'un parent, choisissez selon la règle métier : refus (RESTRICT ou NO ACTION, le défaut), CASCADE pour une dépendance forte, SET NULL pour un lien optionnel.
- Piège : faire pointer la clé étrangère vers une colonne qui n'est ni clé primaire ni UNIQUE, comme le nom du client. Le SGBD la refuse, ou la référence devient ambiguë au premier homonyme.
Voir aussi
- Clé primaire (PK)La clé primaire est la colonne, ou le groupe de colonnes, qui identifie chaque ligne sans ambiguïté. Elle vient de l'identifiant du MCD et ne peut être ni vide ni dupliquée.
- Cardinalités (x,n) — (x,1) : association fonctionnelleDans une association (x,n)–(x,1), la clé étrangère va dans la table dont la cardinalité maximale vaut 1. Elle est NOT NULL en (1,1) et nullable en (0,1) : c'est la règle la plus utilisée.
- Contraintes d'intégritéNOT NULL, UNIQUE, CHECK et les clés étrangères traduisent les règles de gestion dans le SGBD, qui refuse alors les données incohérentes quelle que soit l'application qui les écrit.