¿Cómo puedo definir una clave primaria compuesta que consta de dos campos en SQL?
Estoy usando PHP para crear tablas y todo. Quiero hacer un nombre de tabla voting
con los campos QuestionID
, MemeberID
y vote
. Y la clave principal compuesta consta de los campos QuestionID
y MemberID
.
¿Cómo debería hacer esto?
sql
primary-key
composite-primary-key
Zeeshan Rang
fuente
fuente
Respuestas:
Solo para aclarar: una tabla puede tener como máximo una clave primaria. Una clave principal consta de una o más columnas (de esa tabla). Si una clave primaria consta de dos o más columnas, se denomina clave primaria compuesta . Se define de la siguiente manera:
El par (QuestionID, MemberID) debe ser único para la tabla y ninguno de los valores puede ser NULL. Si realiza una consulta como esta:
utilizará el índice de la clave principal. Sin embargo, si haces esto:
no lo hará porque para usar un índice compuesto es necesario usar todas las claves de la "izquierda". Si un índice está en los campos (A, B, C) y sus criterios están en B y C, entonces ese índice no le sirve para esa consulta. Por lo tanto, elija entre (QuestionID, MemberID) y (MemberID, QuestionID) lo que sea más apropiado para cómo usará la tabla.
Si es necesario, agregue un índice en el otro:
fuente
(MemberID, QuestionID)
, en lugar de soloMemberID
? Por lo que tengo entendido, obtienes una búsqueda indexada al seleccionar conQuestionId
, y también(QuestionId, MemeberId)
, por lo que el único que falta seríaMemberId
only.fuente