mysqlfan: Wie würdet ihr die SQL-Tabelle konstruieren?

Beitrag lesen

Hallo!

Ich bin gerade dabei, eine MySQL-DB aufzubauen, die ähnlich dem Konzept einer International Movie Database (imdb.com) ist.

Zu einem bestimmten DVD-Titel sollen zahlreiche Informationen gefunden werden, unter anderem die mitwirkenden Schauspieler und welche Charaktere sie in dem Film darstellen.

Meine Überlegung:

Tabelle 1 dvd:
------------------------------
DVD_ID | Titel
100001 | Jurassic Park
------------------------------

Tabelle 2 actor:

------------------------------
Actor_ID | DVD_ID | Name
200001 | 100001 | Wayne Knight
------------------------------

Tabelle 3 character:

------------------------------
Character_ID | Actor_ID | Name
300001 | 200001 | Dennis Nedry
------------------------------

Probleme:
1. Jeder Character wird meist nur 1x gespielt und braucht dafür nicht unbedingt eine einzelne ID. Sprich: Es wird keine Suchabfragen geben, wie: Finde alle Filme, in denen Dennis Nedry vorkommt (gibt nur einen).

2. Ein Schauspieler spielt logischerweise in sehr vielen Filmen mit. D.h., die Verknüpfung Actor_ID | DVD_ID | Name muss mehrere DVD_IDs beinhalten.

Ich dachte mir vielleicht, das könnte so gehen:

Tabelle 1 dvd:
------------------------------
DVD_ID | Titel
100001 | Jurassic Park
100002 | Kung Fu Panda
------------------------------

Tabelle 2 actor:

------------------------------
Actor_ID | DVD_ID | Name
200001 | 100001, 100002 | Wayne Knight
------------------------------

Tabelle 3 character:

------------------------------
DVD_ID | Actor_ID | Character
100001 | 200001  | Dennis Nedry
100002 | 200001  | Gang Boss

-----------------------------

Damit könnte man zwar die Informationen verknüpfen und ausgeben, aber ich finde die Lösung irgendwie unpraktikabel bzw. unelegant.
Das Ding rechnet sich doch bei 50 Schauspielern zu Tode, oder?

Meine Frage: Wie würdet ihr diese Tabellen aufbauen?

IMDB hat es ja so gemacht, dass man jedem Character eine ID zuordnet, aber vermutlich nur deshalb, weil User dann dazu eine Rezension/Personenbeschreibung schreiben und die Figur bewerten können.

Generell:

Da ich noch nicht so viele DBs abgelegt habe und die meisten von denen auch nur aus einer oder zwei Tabellen bestanden, wie wäre es am geeignetsten: Ab wieviel Spalten sollte man eine eigene Tabelle aufbauen?

Zu der DVD sollen ja auch z.B. Director (Regisseur) und Writer (Drehbuchautor) gespeichert werden.

Ich persönlich hätte kein Problem damit, es in Tabelle 1 dazuzupacken.

Tabelle 1 dvd:
------------------------------
DVD_ID | Titel | director
100001 | Jurassic Park | Steven Spielberg
------------------------------

Die wichtigste Information: Finde alle Titel, die Steven Spielberg produziert hat, findet man ja damit auch.

Eigentlich sind eigenständige Tabellen ja nur dann wichtig, wenn man Zusatzinformationen wie director_birthdate oder sonstige persönlichen Daten verwalten will, oder?

Wäre super, wenn mir da ein paar gute Tipps gegeben werden. Schon mal allerbesten Dank im voraus.