Como posso definir uma chave primária composta que consiste em dois campos no SQL?
Estou usando o PHP para criar tabelas e tudo mais. Eu quero fazer um nome de tabela voting
com campos QuestionID
, MemeberID
e vote
. E a chave primária composta consiste nos campos QuestionID
e MemberID
.
Como devo fazer isso?
sql
primary-key
composite-primary-key
Zeeshan Rang
fonte
fonte
Respostas:
Apenas para esclarecimento: uma tabela pode ter no máximo uma chave primária. Uma chave primária consiste em uma ou mais colunas (dessa tabela). Se uma chave primária consistir em duas ou mais colunas, é chamada de chave primária composta . É definido da seguinte forma:
O par (QuestionID, MemberID) deve ser exclusivo para a tabela e nenhum dos valores pode ser NULL. Se você fizer uma consulta como esta:
ele usará o índice da chave primária. Porém, se você fizer isso:
não vai porque usar um índice composto requer o uso de todas as chaves da "esquerda". Se um índice está nos campos (A, B, C) e seus critérios estão em B e C, então esse índice não tem utilidade para você para essa consulta. Portanto, escolha entre (QuestionID, MemberID) e (MemberID, QuestionID) o que for mais apropriado para como você usará a tabela.
Se necessário, adicione um índice no outro:
fonte
(MemberID, QuestionID)
, em vez de apenasMemberID
? Pelo que eu entendi, você obtém pesquisa indexada ao selecionar comQuestionId
, e também(QuestionId, MemeberId)
, de modo que a única que falta seriaMemberId
apenas.fonte