clé primaire est un concept de domaine unique (nécessairement et suffisamment) identifie votre entité parmi des entités similaires. Une clé primaire composite (plusieurs colonnes) n'a de sens que lorsqu'une partie de la clé fait référence à une instance particulière d'une autre entité de domaine. Disons que vous avez une collection personnelle de livres.
Tant que vous êtes seul, vous pouvez les compter et leur attribuer un numéro. Le numéro est la clé primaire du domaine de votre bibliothèque.
Maintenant vous voulez fusionner votre bibliothèque avec celle de votre voisin tout en étant capable de distinguer à qui appartient un livre. Le domaine est maintenant plus large et la clé primaire est maintenant (owner, book_id). Ainsi, faire de chaque composite clé primaire ne devrait pas être votre stratégie, mais plutôt vous devriez l'utiliser lorsque cela est nécessaire.
Maintenant quelques faits sur MySQL. Si vous définissez une clé primaire composite et souhaitez que le RDBSM auto-incrémente les ID pour vous, vous devez connaître la différence entre le comportement MyISAM et InnoDB. Supposons que nous voulions une table avec deux champs: parent_id, child_id. Et nous voulons que le child_id soit auto-incrémenté. MyISAM s'autoincrémente automatiquement dans les enregistrements avec le même parent_id et InnoDB s'autoincrémente de manière unique dans la table entière. Dans MyISAM, vous devez définir la clé primaire comme (parent_id, child_id) et dans InnoDB comme (child_id, parent_id), car le champ auto-incrémenté doit être le constituant le plus à gauche de la clé primaire dans InnoDB.
Copie possible de [Comment créer correctement les clés primaires composites - MYSQL] (http://stackoverflow.com/questions/5835978/how-to-properly-create-composite-primary-keys-mysql) –
Impossible de être un duplicata de quelque chose posté 3 ans plus tard. – Kaji
http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its-much-newer-and-ha ;-) –