sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

dilema de la tabla de puente de relaciones de muchos a muchos

La herramienta simplemente le dice que puede haber varias entradas para una combinación uId-groupId. Ejemplo:

uId  groupId  performacesScore 
1    1        10
1    2        20
2    1        30
2    1        30
2    1        40
2    2        20

Ahora imagine que se le muestran estos datos y usted convierte el primer 1/2/30 en 1/2/50. ¿Qué declaración de actualización podría enviar la herramienta al dbms?

update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1;

Esto actualizaría tres registros en lugar de uno.

update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1 and performacesScore = 30;

Esto aún actualizaría dos registros en lugar de uno.

Entonces, para actualizar y eliminar correctamente, debe decirle al dbms qué hace que los registros sean únicos. Hay cuatro posibilidades:

  • Si nunca desea actualizar o eliminar registros individuales, déjelo como está.
  • Si desea poder actualizar y solo puede haber una entrada para una combinación uId-groupId, indíqueselo al dbms y haga que uId más groupId sean la clave principal de su tabla.
  • Si desea poder actualizar y puede haber duplicados para una combinación uId-groupId, pero una combinación uId-groupId-performacesScore siempre será única, haga que estos tres sean la clave principal de la tabla.
  • Si desea poder actualizar y puede haber duplicados para cualquier combinación, asigne a la tabla otra columna para una identificación técnica y conviértala en la clave principal.