Jak zdefiniować złożony klucz podstawowy składający się z dwóch pól w języku SQL?
Używam PHP do tworzenia tabel i wszystkiego. Chcę, aby nazwę tabeli voting
z polami QuestionID
, MemeberID
oraz vote
. A złożony klucz podstawowy składa się z pól QuestionID
i MemberID
.
Jak mam to zrobić?
sql
primary-key
composite-primary-key
Zeeshan Rang
źródło
źródło
Odpowiedzi:
Dla wyjaśnienia: tabela może mieć co najwyżej jeden klucz podstawowy. Klucz podstawowy składa się z co najmniej jednej kolumny (z tej tabeli). Jeśli klucz podstawowy składa się z dwóch lub więcej kolumn, nazywany jest złożonym kluczem podstawowym . Jest zdefiniowany w następujący sposób:
Para (QuestionID, MemberID) musi wtedy być unikalna dla tabeli i żadna z wartości nie może mieć wartości NULL. Jeśli wykonasz takie zapytanie:
użyje indeksu klucza podstawowego. Jeśli jednak to zrobisz:
tak się nie stanie, ponieważ użycie indeksu złożonego wymaga użycia wszystkich klawiszy od „lewej”. Jeśli indeks znajduje się na polach (A, B, C), a twoje kryteria znajdują się na B i C, to ten indeks nie jest dla ciebie przydatny dla tego zapytania. Więc wybierz spośród (QuestionID, MemberID) i (MemberID, QuestionID) w zależności od tego, co jest najbardziej odpowiednie do tego, jak będziesz korzystać z tabeli.
W razie potrzeby dodaj indeks na drugim:
źródło
(MemberID, QuestionID)
, a nie tylkoMemberID
? O ile zrozumiałem, po wybraniu za pomocąQuestionId
, a także otrzymasz indeksowane wyszukiwanie(QuestionId, MemeberId)
, więc jedynym brakującym będzieMemberId
tylko.źródło