Différence entre clé primaire et clé étrangère
Principales différences entre la clé primaire et la clé étrangère
- Une contrainte de clé primaire est une colonne qui identifie de manière unique chaque ligne de la table du système de gestion de base de données relationnelle, tandis qu'une clé étrangère est une colonne qui crée une relation entre deux tables.
- La clé primaire n'accepte jamais de valeurs nulles, alors que la clé étrangère peut accepter plusieurs valeurs nulles.
- Vous ne pouvez avoir qu’une seule clé primaire dans une table, alors que vous pouvez avoir plusieurs clés étrangères dans une table.
- La valeur de la clé primaire ne peut pas être supprimée de la table parent, alors que la valeur de la clé étrangère peut être supprimée de la table enfant.
- Deux lignes ne peuvent pas avoir des valeurs identiques pour une clé primaire ; en revanche, une clé étrangère peut contenir des valeurs en double.
- Il n'y a aucune limitation à l'insertion des valeurs dans la colonne du tableau lors de l'insertion d'une valeur dans la table de clé étrangère ; assurez-vous que la valeur est présente dans une colonne d’une clé primaire.

Ici, j'ai analysé la différence entre la clé primaire et la clé étrangère et j'évaluerai de manière exhaustive leurs avantages et leurs inconvénients.
Qu'est-ce que la clé primaire ?
Une contrainte de clé primaire est une colonne ou un groupe de colonnes qui identifie de manière unique chaque ligne de la table du système de gestion de base de données relationnelle. Il ne peut pas s'agir d'un doublon, ce qui signifie que la même valeur ne doit pas apparaître plus d'une fois dans le tableau.
Une table ne peut pas avoir plus d'une clé primaire. Le clé primaire peut être défini au niveau de la colonne ou de la table. Si vous créez une clé primaire composite, elle doit être définie au niveau de la table.
Exemple de clé primaire
syntaxe:
Vous trouverez ci-dessous la syntaxe de la clé primaire :
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
Ici,
- Table_Name est le nom de la table que vous devez créer.
- Column_Name est le nom de la colonne contenant la clé primaire.
Mise en situation :
ID d'étalon | Rouleau Non | Prénom | Nom de famille | |
---|---|---|---|---|
1 | 11 | Tom | Prix | abc@gmail.com |
2 | 12 | Nick | Wright | xyz@gmail.com |
3 | 13 | Dana | Nathan | mno@yahoo.com |
Dans l'exemple ci-dessus, nous avons créé une table d'étudiants avec des colonnes telles que StudID, Roll No., First Name, Last Name et Email. StudID est choisi comme clé primaire car il peut identifier de manière unique d'autres lignes de la table.
Pourquoi utiliser la clé primaire ?
Au cours de mes années de gestion de systèmes de bases de données, j'ai noté les inconvénients et avantages suivants lors de l'utilisation d'une clé primaire :
- L'objectif principal de la clé primaire est d'identifier chaque enregistrement de la table de la base de données.
- Vous pouvez utiliser une clé primaire lorsque vous n'autorisez personne à saisir des valeurs nulles.
- Si vous supprimez ou mettez à jour des enregistrements, l'action que vous avez spécifiée sera entreprise pour garantir l'intégrité des données.
- Exécutez l’opération de restriction pour rejeter l’opération de suppression ou de mise à jour de la table parent.
- Les données sont organisées dans une séquence d’index groupés chaque fois que vous organisez physiquement une table SGBD.
Qu'est-ce qu'une clé étrangère ?
La clé étrangère est une colonne qui crée une relation entre deux tables. Le but de la clé étrangère est de maintenir l’intégrité des données et de permettre la navigation entre deux instances différentes d’une entité. Il agit comme une référence croisée entre deux tables car il fait référence à la clé primaire d'une autre table. Chaque relation dans la base de données doit être prise en charge par une clé étrangère.
Exemple de clé étrangère
syntaxe:
Vous trouverez ci-dessous la syntaxe de la clé étrangère :
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
Ici,
- Le paramètre Table Name indique le nom de la table que vous allez créer.
- Les paramètres column1, column2… décrivent les colonnes qui doivent être ajoutées au tableau.
- Une contrainte indique le nom de la contrainte que vous créez.
- Les références indiquent une table avec la clé primaire.
Mise en situation :
Code de service | NomDépartement |
---|---|
001 | Science |
002 | Anglais |
005 | Ordinateur |
ID d'enseignant | Fnom | Nom |
---|---|---|
B002 | David | Warner |
B017 | Sara | Joseph |
B009 | Michel | brunon |
Dans l'exemple ci-dessus, nous avons deux tables : un enseignant et un département dans une école. Cependant, il n’existe aucun moyen de savoir quelle recherche fonctionne dans quel département.
Dans ce tableau, en ajoutant la clé étrangère de Deptcode au nom du professeur, nous pouvons créer une relation entre les deux tables.
ID d'enseignant | Code de service | Fnom | Nom |
---|---|---|---|
B002 | 002 | David | Warner |
B017 | 002 | Sara | Joseph |
B009 | 001 | Michel | brunon |
Ce concept est également connu sous le nom d’intégrité référentielle.
Pourquoi utiliser une clé étrangère ?
D'après ce que j'ai vu, voici les raisons importantes d'implémenter des clés étrangères :
- Les clés étrangères vous aident à migrer des entités à l'aide d'une clé primaire de la table parent.
- A clé étrangère vous permet de lier deux ou plusieurs tables ensemble.
- Cela rend les données de votre base de données cohérentes.
- Une clé étrangère peut être utilisée pour faire correspondre une colonne ou une combinaison de colonnes avec la clé primaire d'une table parent.
- La contrainte de clé étrangère SQL est utilisée pour garantir que l'intégrité référentielle des données parent correspond aux valeurs de la table enfant.
Différence entre clé primaire et clé étrangère
Permettez-moi de partager la différence importante entre une clé primaire et une clé étrangère, comme j'en ai personnellement fait l'expérience :
Base de comparaison | Clé primaire | Clé étrangère |
---|---|---|
Définition | Une contrainte de clé primaire est une colonne ou un groupe de colonnes qui identifie de manière unique chaque ligne de la table du Système de gestion de base de données relationnelle. | Une clé étrangère est une colonne qui crée une relation entre deux tables. |
Basic | Il vous aide à identifier de manière unique un enregistrement dans la table. | C'est un champ de la table qui est la clé primaire d'une autre table. |
NULL | La clé primaire n'accepte jamais les valeurs nulles. | Une clé étrangère peut accepter plusieurs valeurs nulles. |
Indexage | La clé primaire est un index clusterisé et les données de la table SGBD sont physiquement organisées dans la séquence de l'index clusterisé. | Une clé étrangère ne peut pas créer automatiquement un index, clusterisé ou non. |
que vous avez | Vous pouvez avoir une seule clé primaire dans une table. | Vous pouvez avoir plusieurs clés étrangères dans une table. |
Suppression | La valeur de la clé primaire ne peut pas être supprimée de la table parent. | La valeur de la clé étrangère peut être supprimée de la table enfant. |
Table temporaire | Vous pouvez définir implicitement la clé primaire dans les tables temporaires. | Vous ne pouvez pas définir de clés étrangères sur les tables temporaires locales ou globales. |
Lien familial | La clé primaire est un index clusterisé. | Par défaut, il ne s'agit pas d'un index clusterisé. |
Duplication | Deux lignes ne peuvent pas avoir des valeurs identiques pour une clé primaire. | Une clé étrangère peut contenir des valeurs en double. |
Insertion | Il n'y a aucune limitation à l'insertion des valeurs dans la colonne du tableau. | Lors de l'insertion d'une valeur dans la table de clé étrangère, assurez-vous que la valeur est présente dans une colonne d'une clé primaire. |
Comment choisir entre une clé primaire et une clé étrangère
D'après ce que nous avons vu, les clés primaires identifient de manière unique les entrées de table et les clés étrangères relient ces entrées entre les tables, toutes deux essentielles pour maintenir l'intégrité des données et faciliter une récupération efficace des données.