Question

Fond

L'approche "All-pk-must-be-Be-Be-Be-Be-Cherrogats" n'est pas présente dans Modèle relationnel de CODD ou tout SQL Standard (ANSI , Iso ou autre).

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:

  1. Il n'y a pas de clés naturelles ou commerciales
  2. Les clés naturelles ou commerciales sont mauvaises (changez souvent)
  3. La valeur de la clé naturelle ou commerciale n'est pas connue au moment de l'insertion d'enregistrement
  4. Les touches naturelles multicolonnes (généralement plusieurs FK) dépassent trois colonnes, ce qui rend les jointures trop verbeuses.
  5. aussi je n'ai pas trouvé de source canonique qui dit que les clés naturelles doivent être immuables. Tout ce que je trouve, c'est qu'ils doivent être très estables, c'est-à-dire ne doivent pas être changés que dans de très rares casions, si jamais.

    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 modélisation de base de données rapide en ne faisant pas avoir à faire beaucoup d'analyse commerciale, mais au détriment de la maintenabilité et lisibilité du code SQL. Une grande prévision est faite pour quelque chose qui peut se produire ou non à l'avenir (la PK naturelle a changé, nous devrons donc utiliser la funtion de la mise à jour de la Cascade RDBMS) au détriment de la tâche quotidienne, comme si vous devez rejoindre plus de tables dans chaque Requête et devoir écrire du code pour importer des données entre des bases de données, une procédure autrement très strightfoward (en raison de la nécessité d'éviter les colis de pk et de créer des tables de scène / d'équivalence auparavant).

    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

    - y a-t-il une source canonique qui prend en charge l'approche "All-PK-Be-Be-Cherrogats"?

    - Le modèle relationnel de Codd a-t-il été remplacé par un nouveau modèle relationnel?

Était-ce utile?

La solution

"Tous les PKS sont des substituts de substitution" n'est pas une stratégie très solide du tout et certainement pas une seule que vous n'êtes pas susceptible de trouver une source "autoritaire" pour .

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

Licencié sous: CC-BY-SA avec attribution
scroll top