L'une des fonctionnalités les plus puissantes d'une base de données relationnelle est la capacité de lier des tables entre elles. Au lieu de répéter des informations dans chaque ligne, vous les stockez une fois et les référencez depuis d'autres tables. Cette leçon explique comment fonctionnent les relations et les clés étrangères.
Pourquoi les tables sont liées
Imaginez une base de données de programmes communautaires. Chaque programme se tient dans un emplacement. Vous pourriez stocker le nom et l'adresse de l'emplacement dans chaque ligne de la table programmes — mais si l'adresse de l'emplacement change, vous devrez mettre à jour chaque ligne de programme. La meilleure approche : stocker les informations d'emplacement une fois dans une table emplacements, et les référencer depuis la table programmes en utilisant un identifiant.
Clés étrangères
Une clé étrangère est une colonne dans une table qui référence la clé primaire d'une autre table. Dans l'exemple ci-dessus, la table programmes a une colonne emplacement_id. Cette colonne est une clé étrangère — ses valeurs doivent correspondre à un emplacement_id qui existe dans la table emplacements.
La base de données applique cela via l'intégrité référentielle : vous ne pouvez pas insérer un programme qui référence un emplacement qui n'existe pas, et vous ne pouvez pas supprimer un emplacement que des programmes référencent encore.
Types de relations
Un-à-plusieurs est la relation la plus courante. Un emplacement peut accueillir plusieurs programmes. Un programme peut avoir plusieurs inscriptions. Le côté "plusieurs" contient la clé étrangère.
Un-à-un : chaque enregistrement dans la table A correspond à exactement un enregistrement dans la table B.
Plusieurs-à-plusieurs nécessite une troisième table. Un participant peut s'inscrire à plusieurs programmes, et un programme peut avoir plusieurs participants. Vous créez une table de jonction — par exemple, une table inscriptions avec un participant_id et un programme_id. Chaque ligne dans inscriptions représente l'inscription d'un participant à un programme.
Enregistrements parents et enfants
Dans une relation, la table référencée est le parent et la table contenant la clé étrangère est l'enfant. Un emplacement est le parent; un programme est l'enfant. Vous devez généralement créer l'enregistrement parent avant l'enregistrement enfant.
Éviter la répétition d'informations
Les relations vous permettent de stocker chaque information exactement une fois. Si l'adresse d'un emplacement change, vous mettez à jour une ligne dans la table emplacements et chaque programme qui référence cet emplacement reflète automatiquement le changement.
Une clé étrangère est une promesse : "cette valeur fait référence à un enregistrement réel dans une autre table." La base de données applique cette promesse. Si l'enregistrement référencé n'existe pas, la base de données rejette l'insertion ou la mise à jour.
Points à retenir
- Les clés étrangères lient les tables en référençant la clé primaire d'une autre table.
- L'intégrité référentielle empêche les enregistrements orphelins et les références invalides.
- Un-à-plusieurs est la relation la plus courante; le côté "plusieurs" contient la clé étrangère.
- Les relations plusieurs-à-plusieurs nécessitent une table de jonction.
- Stocker les informations une fois et les référencer réduit la duplication et l'incohérence.
- clé étrangère base de données expliquée
- relation un-à-plusieurs base de données
- table de jonction plusieurs-à-plusieurs SQL
- intégrité référentielle base de données