413 votes

Chaque table ait une clé primaire ?

Je crée une table de base de données et je n’ai pas une clé primaire logique qui lui sont confiée. Donc, je pense à la laisser sans une clé primaire, mais je suis un peu guiltly à ce sujet l’abattage. Que je devrais ?

Chaque table ait une clé primaire ?


EDIT : OK, OK... J’ai créé la clé primaire ! Es-tu heureux maintenant ? :)

364voto

Quassnoi Points 191041

Réponse courte: oui.

Réponse longue:

  • Vous avez besoin de votre table pour être joignable sur quelque chose
  • Si vous voulez que votre table pour être mis en cluster, vous avez besoin d'une sorte de clé primaire.
  • Si votre conception de table n'a pas besoin d'une clé primaire, de repenser votre design: très probablement, il vous manque quelque chose. Pourquoi garder des enregistrements identiques?

En MySQL, InnoDB moteur de stockage crée toujours un PRIMARY KEY si vous ne spécifiez pas explicitement, rendant ainsi une colonne supplémentaire, vous n'avez pas accès.

Notez qu'un PRIMARY KEY peut être composite.

Si vous avez un plusieurs-à-plusieurs table de lien, vous créez de l' PRIMARY KEY sur tous les domaines impliqués dans le lien. Ainsi, vous vous assurez que vous n'avez pas de deux ou de plusieurs documents décrivant un lien.

En plus de la cohérence logique des questions, la plupart des RDBMS moteurs bénéficient, notamment ces champs dans un UNIQUE de l'indice.

Et depuis tout PRIMARY KEY implique la création d'un UNIQUE index, vous devez déclarer et obtenir à la fois la cohérence logique et de la performance.

Voir cet article dans mon blog pour expliquer pourquoi vous devez toujours créer un UNIQUE de l'indice sur les données uniques:

P. S. Il y a quelques très, très spécial cas où vous n'avez pas besoin d'une clé primaire.

La plupart du temps ils comprennent des tableaux de bord qui n'ont pas d' ANY index pour des raisons de performances.

38voto

Michael Wheeler Points 670

Toujours mieux d’avoir une clé primaire. De cette façon, il réunit le premier format de normalisation et permet de poursuivre dans la voie de la normalisation de la base de données .

Comme précisé par d’autres, il y a quelques raisons de ne pas avoir une clé primaire, mais la plupart n’est pas endommagée s’il y a une clé primaire

18voto

marc_s Points 321990

À l’exception de quelques cas très rares (éventuellement une table de relation plusieurs-à-plusieurs ou une table que vous utilisez temporairement pour le chargement en masse des quantités énormes de données), j’irais avec le dicton :

Si elle n’est pas une clé primaire, il n’est pas un tableau !

Marc

15voto

tvanfosson Points 268301

Peu près n’importe quel moment, que j’ai créé un tableau sans une clé primaire, pensant que je n’aurais pas besoin d’un, j’ai fini remontant et en ajoutant un. Je crée maintenant même mes tables de jointure avec un champ identité généré automatiquement que j’utilise comme clé primaire.

9voto

rparree Points 1170

Il suffit d’ajouter, vous serez Désolé plus tard quand vous n’avez pas (sélection, suppression. liaison, etc.)

Prograide.com

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.

Powered by:

X