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.