Comment puis-je définir une clé primaire composite composée de deux champs dans SQL?
J'utilise PHP pour créer des tableaux et tout. Je veux faire un nom de table voting
avec des champs QuestionID
, MemeberID
et vote
. Et la clé primaire composite se compose des champs QuestionID
et MemberID
.
Comment dois-je faire cela?
sql
primary-key
composite-primary-key
Zeeshan Rang
la source
la source
Réponses:
Juste pour clarifier: une table peut avoir au plus une clé primaire. Une clé primaire se compose d'une ou plusieurs colonnes (de cette table). Si une clé primaire se compose de deux colonnes ou plus, elle est appelée clé primaire composite . Il est défini comme suit:
La paire (QuestionID, MemberID) doit alors être unique pour la table et aucune des deux valeurs ne peut être NULL. Si vous faites une requête comme celle-ci:
il utilisera l'index de la clé primaire. Si toutefois vous faites ceci:
ce ne sera pas le cas car pour utiliser un index composite, il faut utiliser toutes les clés de la «gauche». Si un index est sur des champs (A, B, C) et que vos critères sont sur B et C, cet index ne vous est d'aucune utilité pour cette requête. Choisissez donc parmi (QuestionID, MemberID) et (MemberID, QuestionID) celui qui convient le mieux à la manière dont vous utiliserez la table.
Si nécessaire, ajoutez un index sur l'autre:
la source
(MemberID, QuestionID)
, plutôt que justeMemberID
? Pour autant que je sache, vous obtenez une recherche indexée lors de la sélection avecQuestionId
, et(QuestionId, MemeberId)
donc le seul manquant serait leMemberId
seul.la source