La principale différence entre la clé étrangère et la clé primaire est que la clé étrangère est une colonne ou un ensemble de colonnes qui font référence à une clé primaire ou à une clé candidate d'une autre table tandis que la clé primaire est une colonne ou un ensemble de colonnes qui peut être utilisé pour identifier de manière unique une ligne dans une table.
Une colonne ou un ensemble de colonnes pouvant être utilisé pour identifier ou accéder à une ligne ou à un ensemble de lignes dans une base de données est appelé une clé. Une clé primaire dans une base de données relationnelle est une combinaison de colonnes dans une table qui identifient de manière unique une ligne de la table. La clé étrangère dans une base de données relationnelle est un champ dans une table qui correspond à la clé primaire d'une autre table. La clé étrangère est utilisée pour croiser les tables de références.
Qu'est-ce qu'une clé étrangère ?
La clé étrangère est une contrainte référentielle entre deux tables. Il identifie une colonne ou un ensemble de colonnes dans une table, appelée la table de référence qui fait référence à un ensemble de colonnes dans une autre table, appelée la table référencée. La clé étrangère ou les colonnes de la table de référence doivent être la clé primaire ou une clé candidate (une clé qui peut être utilisée comme clé primaire) dans la table référencée. De plus, les clés étrangères permettent de lier des données entre plusieurs tables. Par conséquent, la clé étrangère ne peut pas contenir de valeurs qui n'apparaissent pas dans la table à laquelle elle fait référence. Ensuite, la référence fournie par la clé étrangère permet de lier des informations dans plusieurs tables et cela deviendrait indispensable avec des bases de données normalisées. Plusieurs lignes de la table de référence peuvent faire référence à une seule ligne de la table référencée.
Figure 01: Mappage de clé étrangère
Dans la norme SQL ANSI, la contrainte FOREIGN KEY définit les clés étrangères. De plus, il est possible de définir les clés étrangères lors de la création de la table elle-même. Une table peut avoir plusieurs clés étrangères, et elles peuvent référencer différentes tables.
Qu'est-ce que la clé primaire ?
La clé primaire est une colonne ou une combinaison de colonnes qui définit de manière unique une ligne dans une table d'une base de données relationnelle. Une table peut avoir au plus une clé primaire. La clé primaire applique la contrainte implicite NOT NULL. Par conséquent, une colonne avec une clé primaire ne peut pas contenir de valeurs NULL. La clé primaire peut être un attribut normal dans la table dont l'unicité est garantie, tel qu'un numéro de sécurité sociale, ou il peut s'agir d'une valeur unique générée par le système de gestion de base de données, telle qu'un identificateur global unique (GUID) dans Microsoft SQL Server.
Figure 02: Clé primaire
De plus, la contrainte PRIMARY KEY dans ANSI SQL Standard définit les clés primaires. Il est également possible de définir une clé primaire lors de la création de la table. En plus de cela, SQL permet à la clé primaire d'être composée d'une ou plusieurs colonnes, et chaque colonne incluse dans la clé primaire est implicitement définie comme étant NOT NULL. Mais certains systèmes de gestion de base de données nécessitent de rendre les colonnes de clé primaire explicitement NOT NULL.
Quelle est la différence entre la clé étrangère et la clé primaire ?
Clé étrangère vs clé primaire |
|
La clé étrangère est une colonne ou un groupe de colonnes dans une table de base de données relationnelle qui fournit une association entre les données de deux tables. | La clé primaire est une colonne de table de base de données relationnelle spéciale ou une combinaison de plusieurs colonnes qui permet d'identifier de manière unique tous les enregistrements de table. |
NULL | |
La clé étrangère accepte la valeur NULL. | La valeur de la clé primaire ne peut pas être NULL. |
Nombre de clés | |
La table peut avoir plusieurs clés étrangères. | La table ne peut avoir qu'une seule clé primaire. |
Duplication | |
Les tuples peuvent avoir une valeur en double pour un attribut de clé étrangère. | Deux tuples dans une relation ne peuvent pas avoir de valeurs en double pour un attribut de clé primaire. |
Résumé - Clé étrangère vs clé primaire
La différence entre clé étrangère et clé primaire est que la clé étrangère est une colonne ou un ensemble de colonnes faisant référence à une clé primaire ou à une clé candidate d'une autre table, tandis que la clé primaire est une colonne ou un ensemble de colonnes qui peut être utilisé pour identifier de manière unique une ligne dans une table.