Clé étrangère

Un article de Wikipédia, l'encyclopédie libre.

Dans une base de données relationnelle, une clé étrangère est une contrainte qui garantit l'intégrité référentielle entre deux tables. Une clé étrangère identifie une colonne ou un ensemble de colonnes d'une table comme référençant une colonne ou un ensemble de colonnes d'une autre table (la table référencée). Ces colonnes de la table référencée doivent faire partie d'une contrainte de clé primaire ou d'une contrainte d'unicité. La contrainte de clé étrangère garantit que les valeurs de chaque ligne de la table référençant existent dans la table référencée : ainsi une ligne de la table référençant ne peut pas contenir un ensemble de valeurs qui n'existe pas dans la table référencée.

Une contrainte de clé étrangère permet ainsi d'établir des liens entre plusieurs tables : il s'agit d'un des principes fondamentaux des bases de données relationnelles.

Exemple : Dans un inventaire, on a des objets, relevant chacun de une parmi n catégories (exemple : meuble, véhicule, ordinateur, ...) (gras = clé primaire italique = clé étrangère)

Objets(objet_id, cat_id, description)

Cats(cat_id, cat)

Si je peux supprimer de cats une catégorie utilisée dans un ou plusieurs objets, alors il n'y a plus intégrité référentielle.

Le SGBD ou le programme doivent m'en empêcher.

MS Access le fait, PostgreSQL le fait, Oracle le fait, MySQL le fait ou pas selon le moteur choisi : avec InnoDB oui, avec les autres non.