Qu'est-ce qu'une clé étrangère?
Les bases de données sont composées de tables dans lesquelles des données ou des informations sont stockées. Une clé étrangère est un mécanisme d’une base de données relationnelle qui permet d’associer ces tables ou d’établir une relation entre elles. Une clé étrangère doit avoir des caractéristiques uniques. Il doit s'agir d'une colonne ou d'un groupe de colonnes d'une table dont les valeurs établissent une relation avec les valeurs d'une autre table de la même base de données.
Une clé étrangère garantit que les lignes d'une table correspondent à celles d'une autre table, établissant ainsi des relations ou références à l'échelle de la base de données. La table contenant la clé étrangère est "l'enfant" et l'autre table est le "parent". Il est possible que la valeur d'une clé étrangère soit nulle ou vide et qu'elle référence ou se rapporte à ce que l'on appelle la clé primaire de la table dans laquelle elle se trouve. Ceci est connu sous le nom d'auto-référencement.
Avant de tenter de comprendre pleinement le concept des clés étrangères, il faut bien comprendre ce qu’est une clé primaire. Par exemple, s'il existe deux tables dans une base de données stockant des informations sur les livres publiés pour un site Web vendant des livres, l'une des tables peut être la table des éditeurs et l'autre la table des livres. La table publishers peut être composée de deux colonnes, une clé primaire toujours unique pour chaque enregistrement et une colonne de nom d'éditeur. Un minimum de trois colonnes constituerait la table des livres, contenant la clé primaire ou un identifiant unique pour chaque livre, les titres des livres et une colonne via laquelle une relation serait établie avec la table des éditeurs. Cette colonne serait la clé étrangère.
La clé primaire de la table publishers pourrait ressembler à "pub_id" avec les valeurs suivantes: P01, P02, P03, etc. Une relation serait établie avec la table books si elle contenait une colonne pub_id avec les mêmes valeurs. Ce serait la clé étrangère qui relierait cette table enfant à sa table mère - la table publishers.
Cependant, une clé étrangère peut avoir un nom de colonne différent de celui de la clé parente à laquelle elle fait référence. Une bonne compréhension du fonctionnement des clés primaires et étrangères est essentielle au maintien de l’intégrité référentielle. Les très grandes bases de données composées de nombreuses tables ou impliquant une table de jonction présentent plusieurs types de relations, ce qui peut compliquer la tâche de travail avec des clés étrangères.