Wie kann ich in SQL einen zusammengesetzten Primärschlüssel definieren, der aus zwei Feldern besteht?
Ich benutze PHP, um Tabellen und alles zu erstellen. Ich möchte einen Tabellennamen machen , voting
mit Feldern QuestionID
, MemeberID
und vote
. Der zusammengesetzte Primärschlüssel besteht aus den Feldern QuestionID
und MemberID
.
Wie soll ich das machen?
sql
primary-key
composite-primary-key
Zeeshan Rang
quelle
quelle
Antworten:
Nur zur Verdeutlichung: Eine Tabelle kann höchstens einen Primärschlüssel haben. Ein Primärschlüssel besteht aus einer oder mehreren Spalten (aus dieser Tabelle). Wenn ein Primärschlüssel aus zwei oder mehr Spalten besteht, wird er als zusammengesetzter Primärschlüssel bezeichnet . Es ist wie folgt definiert:
Das Paar (QuestionID, MemberID) muss dann für die Tabelle eindeutig sein und keiner der Werte darf NULL sein. Wenn Sie eine Abfrage wie folgt durchführen:
Es wird der Index des Primärschlüssels verwendet. Wenn Sie dies jedoch tun:
Dies ist nicht der Fall, da für die Verwendung eines zusammengesetzten Index alle Schlüssel von "links" verwendet werden müssen. Wenn sich ein Index auf Feldern (A, B, C) befindet und Ihre Kriterien auf B und C liegen, ist dieser Index für diese Abfrage für Sie nicht von Nutzen. Wählen Sie also zwischen (QuestionID, MemberID) und (MemberID, QuestionID), je nachdem, was für die Verwendung der Tabelle am besten geeignet ist.
Fügen Sie bei Bedarf einen Index hinzu:
quelle
(MemberID, QuestionID)
Gegensatz zu nurMemberID
? Soweit ich verstanden habe, erhalten Sie bei der Auswahl mitQuestionId
und auch eine indizierte Suche(QuestionId, MemeberId)
, sodass nur die einzige fehltMemberId
.quelle