Existe-t-il une source canonique soutenant "Tous-Cherrogats"?
https://softwareengineering.stackexchange.com/questions/204521
-
29-09-2020 - |
Question
Fond
L'approche "All-pk-must-be-Be-Be-Be-Be-Cherrogats" n'est pas présente dans
Les livres canoniques semblent éluder ces restrictions aussi.
Le schéma de dictionnaire de données d'Oracle utilise des clés naturelles dans certaines tables et clés de substitution dans d'autres tables. Je le mentionne parce que ces personnes doivent connaître une chose ou deux à propos de la conception des RDBMS.
ppdm (association de gestion de données pétrolières professionnelle) Recommander les mêmes livres canoniques:
Utilisez des touches de substitution comme touches primaires lorsque:
- Il n'y a pas de clés naturelles ou commerciales
- Les clés naturelles ou commerciales sont mauvaises (changez souvent)
- La valeur de la clé naturelle ou commerciale n'est pas connue au moment de l'insertion d'enregistrement
- Les touches naturelles multicolonnes (généralement plusieurs FK) dépassent trois colonnes, ce qui rend les jointures trop verbeuses.
Je mentionne PPDM parce que ces personnes doivent connaître une chose ou deux à propos de la conception de RDBMS aussi.
Les origines de l'approche "All-Cherrogats" semble provenir de recommandations de certains cadres ORM.
Il est vrai que l'approche permet de
Autre argument est que les indices basés sur des entiers sont plus rapides, mais qui doivent être pris en charge avec des points de repère. De toute évidence, de longs varcharars variables ne sont pas bons pour la PK. Mais les index basés sur une courte longueur de la longueur de fixation sont presque aussi rapides que les entiers.
Les questions
La solution
"Tous les PKS sont des substituts de substitution" n'est pas une stratégie très solide du tout et
Pensez d'abord à ce que l'on entend par «clé primaire» dans ce contexte. Dans le modèle relationnel, il n'y a pas de clés "primaire" - ce qui signifie aucune clé unique qui est fondamentalement différente de toute autre clé de la même table. En principe, toutes les clés d'une base de données relationnelle peuvent et profiteront du même statut et ont les mêmes fonctionnalités et les mêmes fonctionnalités, sauf dans la mesure où le concepteur de base de données choisit le contraire. La simple clé de n'importe quelle touche d'une table avec plusieurs clés est donc essentiellement arbitraire (c'était le mot utilisé par e.f.codd), subjectif et purement psychologique (la vue de Chris date, collègue de CODD et collaborateur). Sauf si il est expliqué quelle distinction est tirée entre une clé "primaire" et toute autre clé, il est donc assez de sens et sans mérite d'affirmer qu'un tel clé "devrait" ou "doit" être quelque chose.
Deuxièmement, l'argument a très peu à voir avec des index, qui sont une fonctionnalité de stockage physique. Les clés sont une matière logique, pas une question physique et il n'y a pas de raison absolue de supposer que les considérations de stockage d'une clé "primaire" sont ou doivent être différentes d'autres clés (voir le paragraphe précédent). Nous pourrions raisonnablement supposer que toutes les structures de stockage sont utilisées, le stockage de stockage sera dans une certaine mesure être plus grand avec une clé de substitution que sans une telle clé mais aussi la meilleure réponse ici est "Cela dépend". Les décisions de stockage doivent être effectuées sur une base de cas par cas et des règles de couverture sont très petites.
troisièmement, à partir d'un point de vue logique L'exigence absolue d'une clé de substitution a très peu de sens. L'exigence d'une clé naturelle est exactement la même avec ou sans substitution. Le besoin d'informations d'être identifiables dans le domaine du discours (c'est-à-dire avec une clé naturelle AKA "Key Business", "Touche de domaine") est la même. Oui, des clés devront peut-être être mises à jour, mais alors c'est la nature des choses parfois. L'ajout d'un substitut ne fait pas nécessairement que les mises à jour des clés plus faciles à manipuler et parfois, cela peut parfois les rendre plus difficiles.
Autres conseils
Les clés primaires et étrangères ne doivent pas être lisibles. Leur objectif est de maintenir la structure relationnelle interne de la base de données, à ne pas être lu par un humain.
Naturellement, s'il y a une clé naturelle appropriée qui les jamais changer (je prétends que ce sont aussi rares que les dents de la poule ou des trèfles à quatre feuilles, mais ...), vous pouvez utiliser cela, et certains clients feront une de leurs exigences.
Mais pourquoi ajouter la complexité supplémentaire à un système de base de données, pour un bénéfice peu appréciable? Les touches de substitution primaire sont générées par système, garanties à être uniques, garanties de ne jamais changer et sont le même type de données pour toutes les tables. Ils auront le même comportement fiable en toutes circonstances.
Si vous recherchez une ressource canonique qui soutient cette pratique, vous n'en trouverez pas une. Il y a juste autant de concepteurs de l'autre côté de l'alléle qui défendra violemment leur utilisation. des clés composites naturelles et composites avec des indices en cluster comme clés principales et toutes les ressources canoniques disent que c'est le choix du designer.
Voir aussi
http://fr.wikipedia.org/wiki/surrogate_key