Une clé étrangère est différente d'une super clé, d'une clé candidate ou d'une clé primaire car une clé étrangère est celle qui est utilisée pour relier deux tables entre elles ou créer une connectivité entre les deux.
Ici, dans cette section, nous discuterons de la clé étrangère, de son utilisation et examinerons quelques exemples qui nous aideront à comprendre le fonctionnement et l'utilisation de la clé étrangère. Nous verrons également sa mise en œuvre pratique sur une base de données, c'est-à-dire créer et supprimer une clé étrangère sur une table.
Qu'est-ce qu'une clé étrangère
Une clé étrangère est celle qui sert à relier deux tables entre elles via la clé primaire. Cela signifie que les colonnes d'une table pointent vers l'attribut de clé primaire de l'autre table. Cela signifie en outre que si un attribut est défini comme attribut de clé primaire, il fonctionnera dans une autre table en tant qu'attribut de clé étrangère. Mais il faut savoir qu’une clé étrangère n’a rien à voir avec la clé primaire.
Utilisation de clé étrangère
L'utilisation d'une clé étrangère consiste simplement à relier les attributs de deux tables entre eux à l'aide d'un attribut de clé primaire. Ainsi, il est utilisé pour créer et entretenir la relation entre les deux relations.
Exemple de clé étrangère
Discutons d'un exemple pour comprendre le fonctionnement d'une clé étrangère.
inverser la chaîne java
Considérons deux tableaux Étudiant et Département ayant leurs attributs respectifs comme indiqué dans la structure du tableau ci-dessous :
Dans les tableaux, un attribut, comme vous pouvez le voir, est commun, c'est-à-dire Stud_Id , mais il a des contraintes clés différentes pour les deux tables. Dans la table Student, le champ Stud_Id est un clé primaire car il identifie de manière unique tous les autres champs de la table Student. D'un autre côté, Stud_Id est un clé étrangère attribut pour la table Department car il agit comme un attribut de clé primaire pour la table Student. Cela signifie que les tables Student et Department sont liées les unes aux autres en raison de l'attribut Stud_Id.
un objet en java
Dans la figure ci-dessous, vous pouvez visualiser la structure suivante de la relation entre les deux tables.
Remarque : L'intégrité référentielle dans le SGBD est développée à partir du concept de clé étrangère. Il est clair qu'une clé primaire est une clé existante seule et qu'une clé étrangère fait toujours référence à une clé primaire dans une autre table, dans laquelle la table qui contient la clé primaire est connue sous le nom de table référencée ou table parent pour l'autre table qui c'est d'avoir la clé étrangère.
Création d'une contrainte de clé étrangère
Sur CRÉER UNE TABLE
Ci-dessous la syntaxe qui va nous faire apprendre la création d'une clé étrangère dans une table :
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) );
Ainsi, de cette manière, nous pouvons définir une clé étrangère pour une table de la base de données MYSQL.
En cas de création d'une clé étrangère pour une table dans un serveur SQL ou Oracle, la syntaxe suivante fonctionnera :
fusionner le tri java
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) );
Sur ALTER TABLE
Voici la syntaxe pour créer une contrainte de clé étrangère sur ALTER TABLE :
ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id);
Supprimer la clé étrangère
Afin de supprimer une clé étrangère, il existe une syntaxe décrite ci-dessous qui peut être utilisée :
ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment;
Ainsi, de cette façon, nous pouvons supprimer une clé étrangère en utilisant ALTER TABLE dans la base de données MYSQL.
Point à retenir
Lorsque vous supprimez la clé étrangère, il faut veiller à l'intégrité des tables connectées via une clé étrangère. Si vous apportez des modifications à une table et perturbez l'intégrité des deux tables, certaines erreurs peuvent apparaître en raison d'une connectivité inappropriée entre les deux tables.
Actions référentielles
Certaines actions sont liées aux actions entreprises par le détenteur de la table de clé étrangère :
1) Cascades
Lorsque nous supprimons des lignes de la table parent (c'est-à-dire celle contenant la clé primaire), les mêmes colonnes de l'autre table (c'est-à-dire celle contenant une clé étrangère) sont également supprimées. Ainsi, l’action est connue sous le nom Cascade .
2) Définir NULL
Une telle action référentielle maintient l’intégrité référentielle des deux tables. Lorsque nous manipulons/supprimons une ligne référencée dans la table parent/référencée, dans la table enfant (table ayant une clé étrangère), la valeur de cette ligne de référencement est définie sur NULL. Une telle action référentielle effectuée est connue sous le nom de Définir NULL .
pointeurs en c
3) Définir la valeur par défaut
Une telle action a lieu lorsque les valeurs de la ligne référencée de la table parent sont mises à jour ou que la ligne est supprimée, les valeurs de la table enfant sont définies sur les valeurs par défaut de la colonne.
compteur java
4) Restreindre
Il s'agit de la contrainte de restriction où la valeur de la ligne référencée dans la table parent ne peut pas être modifiée ou supprimée à moins qu'elle ne soit référencée par la clé étrangère dans la table enfant. Il s’agit donc d’une action référentielle normale d’une clé étrangère.
5) Aucune action
C'est aussi une contrainte de restriction de la clé étrangère mais n'est implémentée qu'après avoir tenté de modifier ou de supprimer la ligne référencée de la table parent.
6) Déclencheurs
Toutes ces actions référentielles et d'autres sont essentiellement implémentées comme des déclencheurs où les actions d'une clé étrangère sont très similaires ou presque similaires aux déclencheurs définis par l'utilisateur. Cependant, dans certains cas, les actions référentielles ordonnées sont remplacées par leurs déclencheurs équivalents définis par l'utilisateur pour garantir la bonne exécution du déclencheur.