Modellierung meiner Datenbank

Werbung:
Hallo, ich glaube mir ist mein eigener Denkfehler aufgefallen. Aber ich hätte dazu eure Meinung.Xaphus-Film-Serie-Modeler #2 (Vorschlag 1).jpg
Schauen wir uns zunächst einmal die Tabelle FilmDetail an. Ich frage mich gerade, ob diese Tabelle total überflüssig sei. Denn die Informationen die dort abgespeichert werden, gehören doch in die Tabelle FilmFassung oder? Unter FilmFassung verstehe ich sowas wie Fernseh-Version, Uncut, Kino-Version, Red Edition, Blood Edition und so weiter. Und je nach Fassung variiert doch die Laufzeit oder? Und dazu auch die EAN, das Datum wann die Fassung veröffentlicht wurde, und auch die FSK. Ein Horrorfilm in TV-Version kann ab 16 Jahren freigegeben worden sein, und der gleiche Horrorfilm in Red Edition kann erst ab 18 Jahren freigegeben worden sein. Der Horrorfilm in TV-Version läuft ein paar Minuten verkürzter als der gleiche Horrorfilm in FSK 18. Und wenn es von diesem Horrorfilm gleich zwei Editionen gibt, einmal die Red Edition und einmal die Blood Edition, so haben diese beiden unterschiedliche EAN-Nummer. Und es kann ja auch sein, dass die Red Edition früher veröffentlicht wurde als die Blood Edition. Also frage ich mich, ob all die Informationen nicht eher in die Tabelle FilmFassung müssen?
 
Hallo Distrilec,

eure Meinung brauche ich immer. Kann ja sein, dass ich etwas falsch betrachte. Es gibt bekanntlich mehrere Perspektiven. :)

Zu meinem Denkfehler habe ich dann folgendes erarbeitet.
Hier eine Tabelle mit meinem Denkfehler:
Xaphus-Film-Serie-Modeler #2 (Vorschlag 1).jpg

Und hier die neue Modellierung nach dem Denkfehler:
Xaphus-Film-Serie-Modeler #2 (Vorschlag 3).jpeg
Mein Fehler lag darin begründet, weil ich einige Tabellen vergessen und sie auch falsch benannt habe.

Was ist neu?
Ich habe zwischen den Tabellen FilmAllgemein und FilmFassung und eine Zwischentabelle FilmAllgemein_FilmFassung platziert. Denn ein Film kann mehrere Fassungen haben, und ein Fassung kann mehrere Filme beinhalten. In die Tabelle FilmFassungstyp werden sämtliche Fassungstypen vom Anwender verwaltet. Diese Tabelle fungiert wieder als eine Art »Stammdaten-Halter«.

Da die Tabelle FilmDetail von den Fassungstypen, die es auf dem Markt gibt, abhängig ist, wurde eine Beziehung zwischen der Tabelle FilmDetail und FilmFassung hergestellt, indem der Schlüssel (FilmDetail_ID) als FK in die Tabelle FilmFassung hinterlegt wurde. So richtet sich die detaillierten Informationen eines Filmes nach den Fassungsyten.

Was auch die Zitate anbelangt, habe ich eine Beziehung zwischen FilmDetail und FilmZitat über eine Zwischentabelle FilmDetail_FilmZitat hergestellt. Da jetzt die FilmFassung quasi vor FilmDetail platziert wurde, und die Details sich nach den Fassungstypen richten, dachte ich mir, können die Zitate nun nach den Details der Filme richten.

Um weitere detaillierte Informationen in die Tabelle FilmDetail hinzuzufügen, habe ich die Tabelle RegionalCode eingerichtet. Und damit wir nicht nur die Regional-Codes abspeichern, sondern auch dazu die entsprechenden Länder, wurde eine Beziehung zu der Tabelle Länder hergestellt. Problem: Wir wissen ja, dass sich hinter einem bestimmten Regional-Code gleich mehrere Länder verbergen können, frage ich mich, ob ich zwischen RegionalCode und Länder nochmal eine Zwischentabelle einrichten soll? (Hier ein Beispiel zum Thema Regional-Code). Die beiden Tabellen sollen hierbei auch als »Stammdaten-Halter« fungieren.

Die Tabelle FSK ist so ziemlich selbsterklärend. In dieser »Stammdaten-Halter«-Tabelle soll der Anwender sämtliche FSK-Bezeichnungen selbst verwalten.

Die Tabellen BildFormat (auch bekannt als Videoformat) und TonFormat (auch bekannt als Audioformat) sollen entsprechende Formate eingetragen werden. Da ein bestimmter Film nur ein bestimmtes Bild- und Tonformat haben kann, dachte ich mir, reicht eine ganz normale 1:n-Beziehung aus. Ich überlege gerade, ob ein Film mehrere Bild- und Tonformate beinhalten kann? Eher nicht oder? Auch hierbei soll diese beiden Tabellen als »Stammdaten-Halter« fungieren.

Und zu guter letzt ist die Tabelle Genre und die dazugehörige Zwischentabelle Genre_FilmAllgemein hinzugekommen. Denn es ist unerheblich um welche Fassung zu diesem Film geht. Genre gilt als allgemeine Information, und daher die Beziehung mit der Tabelle FilmAllgemein. Und da ein Film mehrere Genre beinhalten kann, und ein Genre mehrere Filme, so habe ich mich für eine n:m-Beziehung entschieden.
 
Also das Thema wird mir langsam auch zu komplex... Vorallem da ich so viel Ahnung von Filmen habe :D
Die ganzen Abhängikeiten zwischen FilmAllgemein, FilmFassung und FilmDetail, etc. will ich aber eig. auch nicht verstehen... ^^
Ein paar Kleinigkeiten:
- Die Tabelle Genre_FilmAllgemein umbenennen in FilmAllgemein_Genre
- FilmDetail_FilmZitat braucht die "Filmfassungstyp_Id" nicht wirklich, oder?
- Deine bunten Striche zeigen zwischendurch auf falsche Ids (Bsp.: Der rote Strich bei Genre_FilmAllgemin sollte auf "FilmAllgemein_Id" verweisen nicht auf die "Genre_Id")

Ein paar "Großigkeiten" (gibts das Wort ? ):
- Die Tabelle FilmDetail ist mMn vollkommen unnötig. Alle Daten können in die Tabelle FilmFassung. (Vorallem so sachen wie Veröffentlichungsdatum machen da sogar mehr Sinn mMn)
- Die Spalten "GesamtBewertung" und "TrailerURL" (von der Tabelle FilmAllgemin) sollten auch in die Tabelle FilmFassung (wenn nicht sogar eigene Tabellen für die Trailer anlegen und dann nurnoch FKs nutzen)

Edit:
- Was soll "Kommentar" in der Tabelle "FilmAllgemein" beinhalten?
 
Hey Distrilec,

du hast ja doch noch den Überblick. Den Großteil deiner Anmerkungen habe berücksichtigt. Zum Thema FilmFassung vs. FilmDetail dachte ich ja auch das gleiche. Das habe ich auch nun geändert. Was mich interessiert, ist, wieso würdest du für TrailerURL eine eigene Tabelle anfügen und diese dann mit der Tabelle FilmFassung in Beziehung setzen? Gibt es denn für bestimmte Fassungen auch bestimmte Trailer? Wenn wir von einem Horrorfilm gleich mehrere Fassungen. Gib es zu jeder Fassung einen Trailer? Ich dachte immer die offiziellen Trailer sind gleich? Und zum Kommentar: hier soll der Anwender eine beliebige Information zu dem Film schreiben können - unabhängig von den Fassungen.

Frage: Würdest du zwischen der Tabelle RegionalCode und Länder eine Zwischentabelle platzieren? Ich grübel nur deshalb, weil unterschiedliche Länder gleichen RegionalCode haben können. Hier kannst du es mal ansehen.

(Hier die überarbeitete Version)
Xaphus-Film-Serie-Modeler #2 (Vorschlag 3).jpeg
 
- Ich glaube zu wissen zwei verschiedene Trailer für den gleichen Film gesehen zu haben... Einmal die "normale" Fassung und einmal den Directors Cut... Ich komm aber irgendwie nicht auf den Namen... ^^
- Um das mit dem Regionalcode zu vereinfachen würde ich einfach bei der Tabelle FilmFassung den Ländercode hinzufügen. Das würde zumindest mir ausreichen, auch wenn eine Zwischentabelle der korrekte Weg wäre. Wenn du alles perfekt Normalisierst explodiert dir die Anzahl der Tabelle und es wird dann auch wieder unperformant...
Allein schon eine Aufgabe wie: (Gib mir alle Ländercodes für die Filme aller Schauspieler die einer bestimmten Nationalität x angehören) wird hier zu einem Join Chaos ^^
 
Hallo Distrilec,

das mit dem Trailer muss ich noch überprüfen. Wobei ich dir Recht gebe, ist, dass es mehrere Trailer zu einem Film gibt. Allein in Youtube fand ich unzählige Trailer-Versionen. Aber hinsichtlich der Fassungen habe ich noch nie darauf geachtet. Denn wenn ich es mir recht überlege, dient ein Trailer als allgemeine Werbung für einen Film - ganz gleich welche Fassungen es von diesem Film geben wird. Und damit die Werbung nachmöglichst weit verbreitet werden kann, muss der Trailer so ziemlich neutral sein. Das heißt, schon bei der FSK angefangen sollte der Trailer sehr niedrig ansetzen und der Trailer muss sich von der Fassung loslösen oder? Ich muss mich da ein wenig schlau machen.

Und zu dem Thema RegionalCode/LänderCode: Nun, an die JOINS denke ich momentan noch nicht. Die Tabelle RegionalCode soll hierbei als »Stammdaten-Halter«-Tabelle funktionieren. Es gibt auf DVDs - glaube ich - 6-8 Codes und bei Blu-Rays nur 2-3 Codes. Und das soll der Anwender bitteschön selbst in die Datenbank pflegen. Würde ich den RegionalCode nur als Feld in die Tabelle FilmFassung platzieren so haben wir ein kleines Problem, und zwar, wenn man was ändern will, weil man sich verschrieben hat, so nimmt man sowohl im realen Leben als auch in der Datenbank mehr als nur eine Änderung vor. Und das will ich vermeiden. Daher diesen Weg. Also, wenn ich dich richtig verstanden habe, würdest du zwischen den Tabellen RegionalCode und Länder eine Zwischentabelle setzen?
 
Ich war mal ganz schön mutig, und könnte einen Rat gebrauchen. Ich habe mal der Übersicht halber alles ausgeblendet.

Demo1.jpg
Grundlegend hat eine jede Fassung nur einen Regionalcode. Das heißt, die entsprechende Fassung ist nur für eine bestimmte Zone freigegeben. Aber es soll ja auch vorkommen, dass eine Fassung nicht nur für eine Zone freigegeben wird, sondern gleich für mehrere Zonen. Deswegen habe ich eine Zwischentabelle FilmFassung_RegionalCode zwischen FilmFassung und RegionalCode platziert. Und da zu einem RegionalCode gleich mehrere Länder zusammengefasst werden kann, dachte ich mir, platziere auch hier eine Zwischentabelle (RegionalCode_Länder) zwischen RegionalCode und Länder. Was meint ihr? Was mich nur etwas verunsichert, ist die Tatsache, dass in dieser Konstellation gleich mehrere Zwischentabellen auftauchen. Bisher hatte ich immer nur mit einer Zwischentabelle zutun.
 
So wie du es beschreibst ist es aber durchaus richtig.

Ich habe leider den Faden in deinem Projekt verloren, ist etwas viel um es nebenbei zu lesen. Aber in diesem gesonderten Fall spricht nichts dagegen.
 
Damit keiner so schnell den Faden verliert, werde ich jetzt nur noch gesonderte Fälle thematisieren, Schritt für Schritt. Aber so groß ist das Projekt eigentlich noch nicht, denn ich gehe davon aus, dass ihr wesentlich größere und umfangreichere Datenbanken modelliert habt bzw. daran mitgewirkt habt? Deswegen verstehe ich nicht, wie ihr in diesem kleinen Ansatz schon "überfordert" seid?
 
Ich verstehe :) Wie ich schon sagte, werde ich diesmal mit kleineren Schritten vorgehen. Jede Tabelle einzeln. Das sollte ja klappen :)
 
Hier der nächste Schritt.Demo2.jpg
Zunächst das Thema »Trailer«. Ich habe zwischen den Relationen FilmAllgemein und FilmTrailer (Verzeih für meinen Schreibfehler in der Abbildung - es soll nicht Frailer, sondern Trailer heißen :) ) eine 1:n-Beziehung hergestellt. Meine Überlegung war, dass ein Film n Trailer haben kann, aber n Trailer nur einem Film zugeordnet werden kann. Jedoch muss ich noch überlegen bzw. mich darüber erkundigen, ob es wirklich »fassungsspezifische« Trailer gibt. Das heißt, dass es zu jeder bestimmten Fassung einen eigenen Trailer gibt? Denn nach meiner derzeitigen Schlussfolgerung verhalten sich die Trailer genauso wie offizielle Webseiten eines Filmes. Zu allererst wird ein Film für die Kinos produziert. Und deswegen gibt es auch nur diese eine offizielle Webseite zu diesem Film. Hinterher wird es keine weitere offizielle Webseiten zu den jeweiligen Fassungen geben. So nach dem Motto, eine offizielle Webseite für Kinofassung, eine offizielle Webseite für TV-Fassung, eine offizielle Fassung für Red Edition etc. Und so denke ich auch mit den Trailern. Denn ein Trailer soll ja den Inhalt nicht verraten. Wieso also soll zu jeder Fassung einen Trailer geben? Daher habe ich die Relation FilmTrailer mit der Relation FilmAllgemein verbunden.

Zu den Relationen Filmstudio und Filmproduktion möchte ich erst einmal nichts sagen. In diesem Fall könnt ihr die Relationen erst einmal ignorieren. Nach dem das mit dem Trailer besprochen wurde, werden wir uns den Relationen widmen :)
 
Werbung:
Das mit den Trailern ist so mMn. richtig gelöst... Zwei verschiedene Trailer mit gleicher "FilmAllgemein_ID" sind damit auch möglich :) (Jenachdem was deine Recherche ergibt dann auf "FilmFassung_ID" umstellen)
 
Zurück
Oben