
La différence essentielle entre la clé primaire et la clé unique réside dans le fait que la clé primaire n'accepte pas les valeurs NULL, alors que les valeurs NULL sont autorisées dans les contraintes de clé unique.
Tableau de comparaison
Base de comparaison | Clé primaire | Clé unique |
---|---|---|
De base | Il est utilisé comme identifiant unique pour chaque ligne d'une table. | Il détermine également de manière unique une ligne qui n'est pas définie en tant que clé primaire. |
Acceptation de la valeur NULL | La clé primaire n'acceptera pas les valeurs NULL. | Unique acceptera une valeur NULL. |
Nombre de clés pouvant être définies dans la table | Une seule clé primaire | Plus d'un |
Indice | Crée un index clusterisé | Crée un index non-cluster |
Définition de clé primaire
Une colonne peut être appelée clé primaire de sa table si elle identifie de manière unique chaque tuple (ligne) de cette table. Il applique des contraintes d'intégrité à la table. Une seule clé primaire est autorisée dans une table. La clé primaire n'accepte pas les valeurs dupliquées et NULL. La clé primaire est choisie avec soin, car les changements peuvent survenir rarement, ce qui signifie qu'une clé primaire dans une table change très rarement.
Comprenons la notion de clé primaire à l'aide d'une table. Nous créons ici une table nommée table Student, qui possède des attributs tels que Roll_number, Nom, Batch, Phone_number, Citizen_ID.

Une clé primaire peut être référencée par une clé étrangère. Il crée un index cluster unique sur la table. Dans un index clusterisé, les lignes de données sont triées et stockées dans une table ou des vues sur la base de ses valeurs de clé. Il ne peut y avoir qu’un seul index clusterisé dans une table. La raison en est qu’une ligne de données d’une table ne peut être triée que dans un seul ordre.
Définition de clé unique
Semblables à une clé primaire, les contraintes de clé unique identifient également un tuple individuel de manière unique dans une relation. Mais, il y a certaines différences entre eux. Une table peut avoir plus d'une clé unique. Les contraintes de clé uniques ne peuvent accepter qu'une seule valeur NULL pour une colonne.
Comprenons cela avec l'exemple similaire, où nous avions une table Student avec les attributs Roll_number, Name, Batch, Phone_number et Citizen_ID. L'attribut du numéro de rôle est attribué à la clé primaire.

Les contraintes uniques sont également référencées par la clé étrangère. Il peut être utilisé lorsque quelqu'un souhaite appliquer des contraintes à une colonne et à un groupe de colonnes qui n'est pas une clé primaire. Contrairement à la clé primaire, il génère l' index non clusterisé . Les index non clusterisés ont une structure distincte des lignes de données. Chaque entrée de valeur-clé qu'il contient pointe sur la ligne de données qui contient la valeur de clé et utilise donc des pointeurs.
Différences de clé entre la clé primaire et la clé unique
- Lorsqu'un attribut déclaré comme clé primaire, il n'acceptera pas les valeurs NULL. D'autre part, lorsqu'un attribut déclaré Unique, il peut accepter une valeur NULL.
- Une table ne peut avoir qu'une clé primaire alors qu'il peut y avoir plusieurs contraintes uniques sur une table.
- Un index clusterisé créé automatiquement lorsqu'une clé primaire est définie. En revanche, Unique key génère l'index non clusterisé.
Conclusion
La clé primaire et la clé unique servent à la fois d'identifiant unique pour les lignes d'une table avec les valeurs uniques dans une colonne ou un groupe de colonnes. Ces contraintes de clé sont différenciées de manière significative, chaque table pouvant avoir au plus une clé primaire, tandis qu'une table peut avoir plusieurs clés uniques non primaires.