Tengo las siguientes tablas en mi base de datos que tienen una relación muchos-a-muchos relación, que se expresa por una tabla de conexión que tenga las claves externas a las claves primarias de cada uno de los cuadros principales:¿Una o dos claves principales en la tabla de muchos a muchos?
- Widget: moduloid (PK), Título, Precio
- usuario: identificación de usuario (PK), Nombre, Apellido
Suponga que cada combinación del usuario-Widget es único. Veo dos opciones para la forma de estructurar la tabla de conexión que define la relación de datos:
- UserWidgets1: UserWidgetID (PK), moduloid (FK), identificación de usuario (FK)
- UserWidgets2: moduloid (PK, FK), ID de usuario (PK, FK)
La opción 1 tiene una sola columna para la clave principal. Sin embargo, esto parece innecesario ya que la única información que se almacena en la tabla es la relación entre las dos tablas principales, y esta relación en sí misma puede formar una clave única. Por lo tanto, conduce a la opción 2, que tiene una clave principal de dos columnas, pero pierde el identificador único de una columna que tiene la opción 1. También podría agregar opcionalmente un índice exclusivo de dos columnas (WidgetID, UserID) a la primera tabla.
¿Hay alguna diferencia real entre los dos en cuanto a rendimiento, o alguna razón para preferir un enfoque sobre el otro para estructurar la tabla de muchos a muchos de UserWidgets?
Los índices que necesita están dictados por los requisitos de su consulta, no por el diseño del esquema. – dkretz