Différence entre la clé primaire et la clé étrangère

Dans un système de gestion de base de données relationnelle (SGBDR), les données sont stockées dans des tables. Comme une énorme quantité de données est stockée dans les tables, il est toujours possible que les données ne soient pas organisées ou contiennent des doublons. De plus, lorsque nous devons récupérer les données selon nos besoins à partir de ces énormes données, la tâche devient difficile. Le concept de clé est utilisé dans le SGBDR pour identifier les enregistrements dans le tableau à partir de milliers de lignes de données. En outre, l'utilisation de Key aide à établir la relation entre les tables afin que les données puissent être référencées à partir de différentes tables. Ainsi, la clé dans le système de gestion de base de données relationnelle maintient l'intégrité au niveau de la table ainsi que l'intégrité référentielle. Dans cet article, nous examinerons en détail la différence entre la clé primaire et la clé étrangère.

La clé primaire d'une table identifie les enregistrements de manière unique et la clé étrangère fait référence à la clé primaire d'une autre table. Prenons l'exemple de deux tableaux: les tableaux des employés et des salaires pour comprendre les concepts de clé primaire et de clé étrangère. Si la table Employee a la clé primaire comme Employee_ID, une colonne Employee_ID doit être présente dans la table Salary car elle doit avoir une relation entre ces deux tables en ayant une clé étrangère dans la table Salary qui peut faire référence à la clé primaire de la table Employé.

Comparaison directe entre la clé primaire et la clé étrangère (infographie)

Voici les 6 principales différences entre la clé primaire et la clé étrangère:

Différences clés entre la clé primaire et la clé étrangère

Laissez-nous discuter de certaines des principales différences entre la clé primaire et la clé étrangère:

  • La clé primaire identifie les enregistrements d'une table de façon unique tandis que la clé étrangère est utilisée pour lier les tables, c'est-à-dire qu'elle fait référence à la clé primaire d'une autre table.
  • La colonne Clé primaire d'une table ne peut pas avoir de valeurs Null et doit toujours avoir des valeurs uniques. Mais la clé étrangère dans le tableau peut contenir des valeurs nulles et peut également avoir des valeurs en double.
  • Une table ne peut avoir qu'une seule clé primaire alors qu'il peut y avoir plus d'une clé étrangère pour une table.
  • L'index est créé automatiquement pour la clé primaire tandis que, pour la clé étrangère, les index ne sont pas créés automatiquement.
  • Il est facile de supprimer la contrainte de clé étrangère bien qu'elle fasse référence à la clé primaire. Mais la suppression de la contrainte de clé primaire peut créer des enregistrements avec des enregistrements enfants n'ayant aucun enregistrement parent.

Tableau de comparaison entre la clé primaire et la clé étrangère

Le tableau ci-dessous résume les comparaisons entre la clé primaire et la clé étrangère:

Clé primaireClé étrangère
La clé primaire d'une table dans le SGBDR peut être une seule colonne ou peut comprendre plusieurs colonnes utilisées pour identifier chaque ligne d'une table de manière unique. Dans le cas de la clé primaire composée de plusieurs colonnes, les données de chaque colonne sont utilisées pour décider du caractère unique d'une ligne. Une table dans RDMBS ne peut avoir qu'une seule clé primaire.La clé étrangère peut être une seule colonne ou peut se composer de plusieurs colonnes dans une table qui est utilisée pour faire référence à la clé primaire d'une autre table. La clé étrangère peut être utilisée pour lier les tables dans le SGBDR. Contrairement à l'attribut de clé primaire, une table du SGBDR peut avoir plusieurs clés étrangères.
Il y a peu de conditions qui doivent être remplies pour qu'une colonne soit une clé primaire dans une table. L'une des conditions est que la clé primaire doit contenir une valeur unique pour chaque enregistrement. Par conséquent, une table dans SGBDR ne peut pas être autorisée à avoir des valeurs en double pour deux lignes pour l'attribut de clé primaire.Contrairement à la clé primaire d'une table dans SGBDR, la clé étrangère peut contenir des valeurs en double. Cela permet d'avoir des valeurs en double pour les lignes d'une table pour l'attribut de clé étrangère.
L'autre condition d'une colonne satisfaisant pour être une clé primaire est qu'elle ne doit pas contenir de valeurs nulles.Mais la clé étrangère d'une table dans le SGBDR peut contenir des valeurs nulles.
Une clé primaire est spécifiée lors de la définition de la table et il est obligatoire de définir la clé primaire.Contrairement à la clé primaire, il n'y a pas de définition de table spécifique pour désigner une clé comme clé étrangère.
Il n'est pas possible de supprimer la contrainte de clé primaire d'une table parent avec la clé étrangère de la table enfant s'y référant. La table enfant doit donc être supprimée avant de supprimer la table parent.Mais si nous devons supprimer la contrainte de clé étrangère dans une table, elle peut être supprimée de la table enfant même si elle fait référence à la clé primaire de la table parent.

La clé primaire est indexée automatiquement, c'est-à-dire que la clé primaire est stockée dans un index pour une table et cet index aide à administrer l'exigence d'unicité et pour cette raison, les valeurs de clé étrangère sont facilement référencées aux valeurs de clé primaire correspondantes.Dans le cas d'une clé étrangère, les index ne sont pas créés automatiquement et généralement, l'administrateur de base de données les définit.

Conclusion

Les clés primaire et étrangère implémentent non seulement différents types d'intégrité mais créent également des relations entre les tables. Les clés primaire et étrangère garantissent également que les colonnes créées pour la relation doivent contenir des valeurs correspondantes et que les enregistrements uniques sont conservés dans la table. Le système de gestion de base de données relationnelle fonctionne efficacement en raison de la présence de la clé primaire et étrangère.

La contrainte de clé primaire aide à appliquer automatiquement l'intégrité des données car elle empêche d'insérer ou de mettre à jour une ligne de données en double. En utilisant les contraintes de clé, cela empêche également la suppression de la ligne de la table de clé primaire de la table parent afin qu'aucun enregistrement enfant de ce type ne soit créé pour lequel il n'existe aucun enregistrement parent. De même, lorsqu'une ligne en référence à la clé primaire est supprimée ou mise à jour dans la table parent, l'intégrité référentielle est conservée par la clé étrangère. Les clés jouent un rôle essentiel dans l'établissement de liens entre les tables de base de données et également au sein de la table.

Articles recommandés

Ceci est un guide de la clé primaire vs clé étrangère. Nous discutons ici des différences entre la clé primaire et la clé étrangère avec des infographies et un tableau de comparaison. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. WebLogic vs WebSphere
  2. ROLAP vs MOLAP vs HOLAP
  3. GoCD vs Jenkins
  4. Financement par emprunt ou par actions