phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

dilemme de la table de pont de relation plusieurs à plusieurs

L'outil vous indique simplement qu'il peut y avoir plusieurs entrées pour une combinaison uId-groupId. Exemple :

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

Imaginez maintenant que ces données vous sont présentées et que vous faites du premier 2/1/30 un 2/1/50. Quelle déclaration de mise à jour l'outil pourrait-il envoyer au dbms ?

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

Cela mettrait à jour trois enregistrements au lieu d'un.

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

Cela mettrait toujours à jour deux enregistrements au lieu d'un.

Ainsi, pour mettre à jour et supprimer correctement, vous devez indiquer au dbms ce qui rend les enregistrements uniques. Il y a quatre possibilités :

  • Si vous ne souhaitez jamais mettre à jour ou supprimer des enregistrements individuels, laissez-le tel quel.
  • Si vous voulez pouvoir mettre à jour et qu'il ne peut y avoir qu'une seule entrée pour une combinaison uId-groupId, dites-le au dbms et faites de uId plus groupId la clé primaire de votre table.
  • Si vous voulez pouvoir mettre à jour et qu'il peut y avoir des doublons pour une combinaison uId-groupId, mais qu'une combinaison uId-groupId-performacesScore sera toujours unique, alors faites de ces trois la clé primaire de la table.
  • Si vous voulez pouvoir mettre à jour et qu'il peut y avoir des doublons pour n'importe quelle combinaison, donnez au tableau une autre colonne pour un identifiant technique et faites-en la clé primaire.