Une clé étrangère en bases de données est un mécanisme simple qui permet de garantir l’intégrité référentielle entre les données de différentes tables. Concrètement, la clé étrangère oblige une table à être liée aux données d’une autre table. Ainsi dans l’exemple suivant, une structure est obligatoirement liée à une ville par la clé de la ville.
ville (vil_id, vil_nom) structure (str_id, str_nom, str_adresse, str_commentaire, #vil_id)
#vil_id est la clé étrangère de la table structure.
vil_id est la clé primaire de ville.
Ces 2 clés sont la traduction concrète de la relation entre les tables « structure » et « ville ».
Par convention, les clés étrangères sont représentées préfixées du symbole dièse #.
Dans une table (au niveau du MLD et du MPD), une clé étrangère est une clé particulière qui n’est pas la clé principale de la table. La clé principale est appelée clé primaire. Lorsqu’une ou plusieurs autres clés apparaissent dans une table, ce sont donc des clés étrangères. À la différence des clés primaires, on peut retrouver plusieurs fois la même valeur dans les clés étrangères d’une table (et c’est logique, dans l’exemple ci-dessus, il est normal que la même ville puisse être utilisée par plusieurs structures).
Les clés étrangères sont la conséquence directe de l’application de règles qui permettent le passage du MCD au MPD / MLD. Les clés sont les identifiants du MCD. Elles deviennent clés primaires ou clés étrangères suivant les cas de figures :
- Dans une CIF (une relation avec une cardinalité supérieure à 1), on obtient une clé étrangère. L’identifiant de l’entité qui n’est pas du côté du 1 est ajouté en tant que clé étrangère à la table du côté du 1. Au passage, cette clé récupère le #.
- Dans une CIM (une relation sans cardinalité supérieure à 1), il n’y a pas de clé étrangère mais une seule clé primaire composée des identifiants de chaque table liée.