J'utilise une base de données MySQL.
Dans quelles situations dois-je créer une clé unique ou une clé primaire ?
J'utilise une base de données MySQL.
Dans quelles situations dois-je créer une clé unique ou une clé primaire ?
Clé primaire :
NULL
- Par exemple, MySQL ajoute NOT NULL
Clé unique :
NULL
valeursNULL
; plusieurs lignes peuvent avoir NULL
et peuvent donc ne pas être considérées comme "uniques"
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.
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 : )
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 :
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
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 ?
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é.
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.
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.
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.
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.
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
Jetez un coup d'œil à dba.stackexchange.com/questions/15572/ . Et stackoverflow.com/questions/1401572/