Clé étrangère

Définition - Que signifie clé étrangère?

Une clé étrangère est une colonne ou un groupe de colonnes dans une table de base de données relationnelle qui fournit un lien entre les données de deux tables. Il agit comme une référence croisée entre les tables car il fait référence à la clé primaire d'une autre table, établissant ainsi un lien entre elles.

La majorité des tables d'un système de base de données relationnelle adhèrent au concept de clé étrangère. Dans les bases de données et les entrepôts de données complexes, les données d'un domaine doivent être ajoutées sur plusieurs tables, maintenant ainsi une relation entre elles. Le concept d'intégrité référentielle est dérivé de la théorie des clés étrangères.

Les clés étrangères et leur implémentation sont plus complexes que les clés primaires.

Definir Tech explique la clé étrangère

Bien qu'une clé primaire puisse exister seule, une clé étrangère doit toujours faire référence à une clé primaire quelque part. La table d'origine contenant la clé primaire est la table parent (également appelée table référencée). Cette clé peut être référencée par plusieurs clés étrangères d'autres tables, appelées tables «enfants».

Pour toute colonne agissant comme une clé étrangère, une valeur correspondante doit exister dans la table liée. Des précautions particulières doivent être prises lors de l'insertion de données et de la suppression de données de la colonne de clé étrangère, car une suppression ou une insertion imprudente peut détruire la relation entre les deux tables.

Si l'intégrité entre les deux bases de données est compromise, des erreurs peuvent survenir.

Par exemple, s'il y a deux tables, client et commande, une relation peut être créée entre elles en introduisant une clé étrangère dans la table de commande qui fait référence au CUSTOMER_ID dans la table client. La colonne CUSTOMER_ID existe dans les tables client et commande.

Le CUSTOMER_ID dans la table de commande devient la clé étrangère, faisant référence à la clé primaire dans la table client. Pour insérer une entrée dans la table de commande, la contrainte de clé étrangère doit être satisfaite.

Une tentative de saisie d'un CUSTOMER_ID qui n'est pas présent dans la table client échoue, conservant ainsi l'intégrité référentielle de la table.

Dans les bases de données du monde réel, l'intégrité entre les tables de clé étrangère et de clé primaire peut être garantie en appliquant des contraintes référentielles chaque fois que les lignes d'une table référencée sont mises à jour ou supprimées.

Certaines actions référentielles associées à une action de clé étrangère sont les suivantes:

Cascade

Lorsque les lignes de la table parent sont supprimées, les colonnes de clé étrangère correspondantes dans la table enfant sont également supprimées, créant une suppression en cascade.

Définir Null

Lorsqu'une ligne référencée dans la table parente est supprimée ou mise à jour, les valeurs de clé étrangère dans la ligne de référence sont définies sur null pour maintenir l'intégrité référentielle.

triggers

Les actions référentielles sont normalement implémentées en tant que déclencheurs. À bien des égards, les actions de clé étrangère sont similaires aux déclencheurs définis par l'utilisateur. Pour garantir une exécution correcte, les actions référentielles ordonnées sont parfois remplacées par leurs déclencheurs équivalents définis par l'utilisateur.

Définir par defaut

Cette action référentielle est similaire à «définir null». Les valeurs de clé étrangère dans la table enfant sont définies sur la valeur de colonne par défaut lorsque la ligne référencée dans la table parent est supprimée ou mise à jour.

Restreindre

Il s'agit de l'action référentielle normale associée à une clé étrangère. Une valeur de la table parent ne peut pas être supprimée ou mise à jour tant qu'elle est référencée par une clé étrangère dans une autre table.

Pas d'action

Cette action référentielle est similaire en fonction à l'action "restreindre" sauf qu'une vérification de non-action n'est effectuée qu'après avoir essayé de modifier la table.