283 votes

Différence entre clé primaire et clé unique

J'utilise une base de données MySQL.

Dans quelles situations dois-je créer une clé unique ou une clé primaire ?

12 votes

En ce qui concerne la nullité, une bonne façon de faire la distinction entre les deux est la suivante PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT

2 votes

271voto

Mr. KB Points 329

Clé primaire :

  • Il ne peut y avoir qu'une seule contrainte de clé primaire dans une table.
  • Dans certains SGBD, il ne peut pas être NULL - Par exemple, MySQL ajoute NOT NULL
  • La clé primaire est un identifiant unique de l'enregistrement.

Clé unique :

  • Il peut y avoir plus d'une clé unique dans une table.
  • La clé unique peut avoir NULL valeurs
  • Il peut s'agir d'une clé de candidat
  • La clé unique peut être NULL ; plusieurs lignes peuvent avoir NULL et peuvent donc ne pas être considérées comme "uniques"

0 votes

I) Il ne peut y en avoir qu'un seul dans une table /// désolé mais vous pouvez avoir PFK, ce n'est pas la même chose que PK mais les deux ont l'identifiant PK.

19 votes

Je voudrais également ajouter que la clé primaire peut être créée sur plusieurs colonnes, par exemple la clé primaire (CustomerID, ProductID). C'est ce qu'on appelle une clé primaire composite. Ceci pour clarifier le premier point, car il peut être pris tel quel (une clé => une colonne) par un nouveau venu à sql : )

0 votes

passionforsql.com/ Voici le lien avec une description détaillée.

87voto

dhi Points 141

Clé unique (UK) : Il s'agit d'une colonne ou d'un groupe de colonnes qui peut identifier une unicité dans une ligne.

Clé primaire (PK) : C'est également une colonne ou un groupe de colonnes permettant d'identifier une unicité dans une ligne.

La clé primaire n'est donc qu'un autre nom pour la clé unique, mais la mise en œuvre par défaut dans SQL Server est différente pour la clé primaire et la clé unique.

Par défaut :

  1. PK crée un index en grappe et UK crée un index non en grappe.
  2. PK n'est pas nul, mais UK autorise les nullités (Note : Par défaut)
  3. Il ne peut y avoir qu'un et un seul PK dans une table, mais il peut y avoir plusieurs UK.
  4. Vous pouvez remplacer l'implémentation par défaut en fonction de vos besoins.

La décision de créer un UK ou un PK dépend vraiment de l'objectif que vous poursuivez. Il s'agit d'une analogie du type "S'il y a une équipe de trois personnes, toutes sont des pairs, mais l'une d'entre elles sera une paire de pairs : PK et UK ont une relation similaire". Je vous suggère de lire cet article : L'exemple donné par l'auteur peut ne pas sembler approprié, mais essayez d'en avoir une idée générale.

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html

0 votes

J'ai lu une dizaine de pages web qui disent que les PK peuvent contenir plus d'une colonne. Alors comment peut-il y avoir un et un seul PK dans une table ?

0 votes

Un PK avec plus d'une colonne agit comme une seule colonne en ce qui concerne l'unicité. Dans PostgreSQL au moins, cela signifie qu'une nouvelle colonne (avec le nom par défaut [table_name]_pkey ) est ajoutée à la table (j'ai entendu parler de clé de substitution). Source : postgresqltutorial.com/postgresql-primary-key Je suis novice dans ce domaine et j'apprécierais qu'une personne plus expérimentée me signale les nuances qui m'ont échappé.

0 votes

D'accord, ce n'est pas une chronique. J'ai mal lu. C'est une contrainte, pas une colonne. Il y a toujours l'index en grappe, mais il porte sur deux colonnes au lieu d'une. Et chaque colonne n'est pas une clé primaire en soi, c'est l'ensemble qui est une clé primaire. Il n'y a donc pas plus d'une clé primaire dans ces cas.

27voto

Oded Points 271275

Une clé primaire doit être unique.

Une clé unique ne doit pas nécessairement être la clé primaire - voir clé du candidat .

En d'autres termes, il peut y avoir plusieurs combinaisons de colonnes dans une table qui peuvent identifier une ligne de manière unique - seule l'une d'entre elles peut être sélectionnée comme clé primaire. Les autres, bien qu'uniques, sont des clés candidates.

17voto

Jens Schauder Points 23468

Une clé primaire a pour fonction d'identifier la ligne d'une base de données. Il ne peut donc y avoir qu'une seule clé primaire pour une table donnée, alors qu'il peut y avoir plusieurs clés uniques.

Pour la même raison, une clé primaire ne peut pas être NULL (au moins dans Oracle, pas sûr pour les autres bases de données).

Puisqu'il identifie la ligne, il ne devrait jamais changer. La modification des clés primaires est vouée à de graves souffrances et probablement à la damnation éternelle.

C'est pourquoi, dans la plupart des cas, vous voulez un identifiant artificiel pour la clé primaire qui n'est utilisé que pour identifier des lignes individuelles dans la table.

Les clés uniques, en revanche, peuvent être modifiées autant que vous le souhaitez.

22 votes

+1 pour évoquer le risque de damnation éternelle. Il est temps d'introduire la théologie dans la théorie des bases de données relationnelles.

0 votes

PK ne peut pas être NULL dans SQL Server également

9voto

Buhake Sindi Points 38654

Une clé primaire est une clé unique.

Chaque tableau doit avoir au maximum UNE clé primaire mais il peut y avoir plusieurs clés uniques. Une clé primaire est utilisée pour identifier de manière unique une ligne de la table. Une clé primaire ne peut pas être NULL depuis NULL n'est pas une valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X