ich von einem nicht normalisierten Tabelle normalisiert bewege, aber ich habe in der folgenden Situation verwirrt:MySQL Normalisierung Dilemma Herausforderung
MovieID(pk) | MovieTitle
---------------------
1 | Imagination
2 | Creativity
3 | Bodyguard
ActorID(pk) | Name
---------------------
25 | John
26 | Charlie
27 | George
28 | Lincoln
MovieID(ck) | ActorID(ck) <---- Indexed Table
---------------------
1 | 25
1 | 26
2 | 25
2 | 28
3 | 26
3 | 27
3 | 28
Bis hier sollte alles in Ordnung sein, aber dann hat jeder Akteur eine Rolle (oder mehr) im Film.
Meine Lösung ist:
Hinzufügen der folgenden Tabelle:
RoleID(pk) | RoleTitle
---------------------
84 | Doctor
85 | Lawyer
86 | Farmer
87 | Judge
88 | Farmer John
89 | The Police
90 | Policeman
91 | Mother of Johny
92 | Prisoner
93 | Doctor
Und die indizierte Tabelle zu dieser Modifikation:
MovieID(ck) | ActorID(ck) | RoleID(ck) <---- Indexed Table
------------------------------------------
1 | 25 | 84
1 | 25 | 85
1 | 26 | 86
2 | 25 | 87
2 | 28 | 88
3 | 26 | 89
3 | 27 | 90
3 | 28 | 91
3 | 28 | 92
3 | 28 | 93
Aber dann, was ist der Punkt, um eine neue Tabelle zu erstellen , mit Werten, die sich wiederholen, wie in unserem Fall: RolleID: 84 und 93, und wissend, dass jede Zeile nur einmal von einem Akteur benutzt wird?
Kann mir jemand mit dieser Sorge helfen?
Ich kann mehr Details geben, wenn es nicht klar ist.
Es gibt nicht viel Sinn! – Strawberry
Warum du Tite der Rolle duplizierst? – Sparky
Ich würde nicht weiter normalisieren und nur bei indizierten Tabellen aber mit zusätzlichen Spalten "Rolle" bleiben. Mein Grund: Rollen in Filmen sollten deskriptiv sein ... was bedeutet, dass ein "Doktor" (generisch, der von dem, was du getan hast, implementiert werden kann) Rolle ist anders als "verrückter Doktor" oder "Doktor mit schöner Frau" ... – barudo