phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

Viele-zu-viele-Beziehungsbrückentabellen-Dilemma

Das Tool teilt Ihnen lediglich mit, dass es mehrere Einträge für eine uId-groupId-Kombination geben kann. Beispiel:

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

Stellen Sie sich nun vor, diese Daten werden Ihnen angezeigt und Sie machen aus dem ersten 1.2.30 einen 1.2.50. Welche Update-Anweisung könnte das Tool an das dbms senden?

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

Dies würde drei Datensätze anstelle von einem aktualisieren.

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

Dies würde immer noch zwei Datensätze anstelle von einem aktualisieren.

Um also richtig zu aktualisieren und zu löschen, müssen Sie dem dbms mitteilen, was die Datensätze einzigartig macht. Es gibt vier Möglichkeiten:

  • Wenn Sie nie einzelne Datensätze aktualisieren oder löschen möchten, lassen Sie es so wie es ist.
  • Wenn Sie aktualisieren möchten und es nur einen Eintrag für eine uId-groupId-Kombination geben kann, dann teilen Sie dies dem dbms mit und machen Sie uId plus groupId zum Primärschlüssel Ihrer Tabelle.
  • Wenn Sie aktualisieren möchten und es Duplikate für eine uId-groupId-Kombination geben kann, aber eine uId-groupId-performancesScore-Kombination immer eindeutig ist, dann machen Sie diese drei zum Primärschlüssel der Tabelle.
  • Wenn Sie in der Lage sein möchten, zu aktualisieren, und es kann Duplikate für jede Kombination geben, dann geben Sie der Tabelle eine weitere Spalte für eine technische ID und machen Sie diese zum Primärschlüssel.