OVH Cloud OVH Cloud

Doutes sur Clé primaire

1 réponse
Avatar
Marie
Bonjour,

Jusqu'à présent j'étais persuadée qu'une clé primaire était indispensable
dans une table, que sans elle il n'était pas possible de mettre en relation
les tables avec l'intégrité référencielle, que sans clé primaire l'assistant
formulaire ne pouvait pas créer des formulaires avec sous-formulaires etc...
Aujourd'hui je suis plongée dans le doute : quelqu'un ayant essayé de me
convaincre que la clé primaire ne servait à rien et qu'il suffisait qu'un
champ soit indexé sans doublon, j'ai fait des tests et ai constaté que tout
marche très bien sans clé primaire et avec à la place un champ indexé sans
doublon (exemple : numéro de client)....

Je me demande donc si c'est complètement équivalent d'avoir un champ clé
primaire ou un champ indexé sans doublon ou, (sachant que la clé primaire
est d'office indexée sans doublon et que ceci accélère recherches et tris),
s'il y a des raisons supplémentaires de préférer une clé primaire.

Merci de m'éclairer,
Marie

1 réponse

Avatar
Sylvain Lafontaine
Il s'agit plus ici d'une définition sémantique qu'autre chose: normalement,
une clef primaire ne devrait plus changer de valeur une fois qu'elle a été
allouée tandis que rien ne garantit que les valeurs indexées sans doublon ne
changeront pas de valeur à tout moment. Les programmes clients
reconnaissent automatiquement la clef primaire d'une table une fois celle-ci
déterminée. Elle sera également automatiquement utilisée dans le cas de
certaines clauses (DISTINCTROW) et opérations même si vous ne la
sélectionner pas comme valeur à retourner; ce qui ne sera pas le cas des
autres colonnes indexées sans doublons.

Bien entendu, avec Access, il est possible de changer la valeur d'une clef
primaire mais là, on s'éloigne du standard original du language SQL.

Finalement, je ne sais pas pour Access mais avec SQL-Server, si vous
définissez une clef primaire autre chose qu'un entier, SQL-Server attribue
quand même à l'interne une valeur entière unique à stocker comme identifiant
de rangée dans les indexes; alors vous ne sauvez pas grand chose de ce
côté-là.

Il y a également la question que les valeurs de clefs primaires ne doivent
pas être nulles.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Marie" wrote in message
news:44f87475$0$21145$
Bonjour,

Jusqu'à présent j'étais persuadée qu'une clé primaire était indispensable
dans une table, que sans elle il n'était pas possible de mettre en
relation les tables avec l'intégrité référencielle, que sans clé primaire
l'assistant formulaire ne pouvait pas créer des formulaires avec
sous-formulaires etc...
Aujourd'hui je suis plongée dans le doute : quelqu'un ayant essayé de me
convaincre que la clé primaire ne servait à rien et qu'il suffisait qu'un
champ soit indexé sans doublon, j'ai fait des tests et ai constaté que
tout marche très bien sans clé primaire et avec à la place un champ indexé
sans doublon (exemple : numéro de client)....

Je me demande donc si c'est complètement équivalent d'avoir un champ clé
primaire ou un champ indexé sans doublon ou, (sachant que la clé primaire
est d'office indexée sans doublon et que ceci accélère recherches et
tris), s'il y a des raisons supplémentaires de préférer une clé primaire.

Merci de m'éclairer,
Marie