Как я могу определить составной первичный ключ, состоящий из двух полей в SQL?
Я использую PHP для создания таблиц и всего остального. Я хочу , чтобы имя таблицы voting
с полями QuestionID
, MemeberID
и vote
. А составной первичный ключ состоит из полей QuestionID
и MemberID
.
Как мне это сделать?
sql
primary-key
composite-primary-key
Зишан Ранг
источник
источник
Ответы:
Просто для пояснения: таблица может иметь не более одного первичного ключа. Первичный ключ состоит из одного или нескольких столбцов (из этой таблицы). Если первичный ключ состоит из двух или более столбцов, он называется составным первичным ключом . Это определяется следующим образом:
Тогда пара (QuestionID, MemberID) должна быть уникальной для таблицы, и ни одно из значений не может быть NULL. Если вы выполните такой запрос:
он будет использовать индекс первичного ключа. Однако если вы сделаете это:
этого не произойдет, потому что для использования составного индекса необходимо использовать все ключи «слева». Если индекс находится в полях (A, B, C), а ваши критерии - в B и C, то этот индекс вам не нужен для этого запроса. Поэтому выберите из (QuestionID, MemberID) и (MemberID, QuestionID) тот, который больше всего подходит для того, как вы будете использовать таблицу.
При необходимости добавьте указатель на другом:
источник
(MemberID, QuestionID)
сравнению с простымMemberID
? Насколько я понял, вы получаете индексированный поиск при выборе с помощьюQuestionId
, а также(QuestionId, MemeberId)
, поэтому единственным отсутствующим будетMemberId
только.источник