sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

många till många relation bridge table dilemma

Verktyget säger helt enkelt att det kan finnas flera poster för en uId-groupId-kombination. Exempel:

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

Föreställ dig nu att denna data visas för dig och du gör den första 2/1/30 till 2/1/50. Vilken uppdateringssats kan verktyget skicka till dbms?

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

Detta skulle uppdatera tre poster istället för en.

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

Detta skulle fortfarande uppdatera två poster istället för en.

Så för att kunna uppdatera och radera korrekt måste du berätta för dbms vad som gör posterna unika. Det finns fyra möjligheter:

  • Om du aldrig vill uppdatera eller ta bort enskilda poster, lämna det som det är.
  • Om du vill kunna uppdatera och det bara kan finnas en post för en uId-groupId-kombination, berätta för dbms det och gör uId plus groupId till den primära nyckeln i din tabell.
  • Om du vill kunna uppdatera och det kan finnas dubbletter för en uId-groupId-kombination, men en uId-groupId-performacesScore-kombination alltid kommer att vara unik, gör då dessa tre till tabellens primärnyckel.
  • Om du vill kunna uppdatera och det kan finnas dubbletter för valfri kombination, ge tabellen ytterligare en kolumn för ett tekniskt ID och gör detta till primärnyckeln.



  1. extrahera text från kolumn och kopiera den till en ny kolumn

  2. MySQL-fel:Dubblettpost för primärnyckel

  3. Hur man redigerar data i resultatrutnät i SQL Server Management Studio

  4. Skapa ett databasdiagram i phpMyAdmin