phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

dilema da mesa de bridge de relacionamento muitos para muitos


A ferramenta está simplesmente informando que pode haver várias entradas para uma combinação uId-groupId. Exemplo:
uId  groupId  performacesScore 
1    1        10
1    2        20
2    1        30
2    1        30
2    1        40
2    2        20

Agora imagine que esses dados são mostrados a você e você transforma o primeiro 01/02/30 em 01/02/50. Qual declaração de atualização a ferramenta poderia enviar para o dbms?
update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1;

Isso atualizaria três registros em vez de um.
update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1 and performacesScore = 30;

Isso ainda atualizaria dois registros em vez de um.

Portanto, para atualizar e excluir corretamente, você deve informar ao dbms o que torna os registros exclusivos. Existem quatro possibilidades:
  • Se você nunca quiser atualizar ou excluir registros únicos, deixe como está.
  • Se você deseja poder atualizar e só pode haver uma entrada para uma combinação uId-groupId, informe os dbms assim e faça uId plus groupId a chave primária de sua tabela.
  • Se você deseja poder atualizar e pode haver duplicatas para uma combinação uId-groupId, mas uma combinação uId-groupId-performacesScore sempre será única, faça dessas três a chave primária da tabela.
  • Se você quiser atualizar e pode haver duplicatas para qualquer combinação, dê à tabela outra coluna para um ID técnico e torne-a a chave primária.