|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : juillet 2005 Messages : 86 ![]() |
bonjour,
Malgré de nombreuses recherches, je n'ai jamais trouvé de justification satisfaisante. Pour une clé primaire plutôt qu'un champ indexé sans doublon ? Dans les deux cas, on a : garantie de l'unicité des saisies relation possible 1 à plusieurs rapidité liée à l'index Que fait Access en plus sur une clef primaire qu'il ne fait pas sur un champ indexé sans doublon ? Merci pour vos explications |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() |
tu peux appliquer l'intégrité référentielle...
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : juillet 2005 Messages : 86 ![]() |
Bonsoir Maxence,
Le problème est qu'un simple champ indexé sans doublons permet aussi de faire une relation avec intégrité référentielle (donc sans clé primaire). je sèche toujours... Merci d'avoir répondu |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() |
Une clé primaire peut être référencée dans une autre table en tant que clé étrangère, pour le champ indexé j'ai des doutes.
Et une clé primaire ne peut pas être nulle, alors qu'un champ indexé sans doublons peut l'être. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
un clef primaire est l'index qui est pris par défaut parmi les différents indexs existants est qui défini l'ordre de la table, ce n'est pas toujours négligeable.
|
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : juillet 2005 Messages : 86 ![]() |
Bonsoir,
pour la question du NULL, je mets la propriété NULL INTERDIT à OUI et ca fait pareil que la clé primaire. Un champ indexé sans doublon peut en effet servir de clé étrangère. Cependant, il ne doit pas être très fréquent qu'une clé primaire serve aussi de clé étrangère pour une autre relation. (si j'ai bien compris ce que tu veux dire). merci de m'avoir répondu |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() |
relation 1----1
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : juillet 2005 Messages : 86 ![]() |
bonjour,
ok, merci pour toutes vos réponses. On me pose souvent cette question donc je cherchais des avis éclairés. Je répondrai donc que la clef primaire est l'index le mieux géré par Access. Au delà de cela, je n'aurai pas d'autres arguments. |
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
si tu utilise une requete du genre:
quand tu as plusieurs indexs tu ne saurais déterminer le bon résultat. access établissant par défaut l'index de son choix qui semble immuable mais imprévisible: (après testes) ne dépend pas du nom ni de sa longueur, de l'ordre dans la table, de l'ordre de création, du contenu, de l'ouverture d'access (peut être pb cache) (peut être un critère qui m'aurait échappé? donc pas forcemment celui que tu veux. mais je ne doute pas qu'il existe d'autre cas particulier où la clef primaire prend tout son sens. il faut remarquer aussi que dans une base SQL la clef primaire peut être constituée de plusieurs champs et là la nuance est plus clair. Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() Inscription : juillet 2005 Messages : 86 ![]() |
bonsoir,
Merci pour ces précisions, je vais conserver cela dans un coin car ça va me resservir. |
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 364 ![]() |
Petite précision supplémentaire :
Une clé primaire peut porter sur plusieurs champs. Chose qu'un champ indexé sans doublon ne peut faire.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() |
un champ indexé... non
Mais tu peux créer un index Unique multi-champ qui n'est pas une clé primaire
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#13 | |
|
En attente de confirmation mail
Inscription : février 2005 Messages : 1 731 ![]() |
Petite contribution à la réflexion,
On peut considérer la question sous l'angle de l'analyse et de la conception du modèle de données: La mise en relation de deux entités du modèle de données s'effectue au moyen d'une relation entre clé primaire et clé étrangère. Donc la notion de clé primaire pourrait résulter directement de l'analyse et, éventuellement, n'avoir de sens que dans ce contexte. Citation:
Si dans une table il existe plusieurs index uniques, alors il est utile pour l'analyste d'en désigner un comme plus particulièrement significatif. Cet index est la clé primaire. Les autres index sont donc des... (on réfléchit)... des clés secondaires ![]() ![]() ![]() Mais là où ça devient plus sérieux, c'est lorsque vous voulez travailler avec une table attachée ODBC qui a plusieurs index uniques, mais aucune clé primaire. Quand Access attache la table ODBC, il ne sait pas quel index utiliser et du coup n'en utilise aucun !!! En conséquence, la table ODBC n'est pas modifiable en l'état et il faut l'intervention de l'utilisateur pour créer un pseudo index local nécessaire aux modifications !!! En revanche, si on spécifie une clé primaire alors Access l'utilise automatiquement comme index d'accès et modification des données d'une table ODBC: c'est beaucoup plus simple. _ |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com