Kinodatenbank-Design

Nemaides

Neuer Benutzer
Beiträge
4
Hallo,

ich muss an der Uni eine Datenbank modellieren und habe ein kleines Problem.
Es handelt sich um eine Kinofilm Datenbank.
Ein Film hat genau einen Regisseur und 0-4 Schauspieler (1 Haupt und bis zu 3 Nebendarsteller).
Für die 0-4 Beziehung muss ich wohl 4 Spalten in die Filmtabelle einfügen oder?

In der Beschreibung wird von Schauspielername, Regisseurname gesprochen. Wegen 1. Normalform möchte ich dies aber in Vor- und Nachname trennen.

Wie sollte ich das alles am besten Anlegen:

1. In der Filmtabelle Spalten: Regisseurvorname, Regisseurnachname, Hauptdarstellervor., Hauptdarstellernach., Neben1Vor., Neben1Nach... etc.

2. Tabelle Person mit ID, Vorname und Nachname und Foreignkeys von Regisseur und den Schauspielern.

3. Tabelle Regisseur und Schauspieler und auch Foreignkeys.

Danke und viele Grüße
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.582
Die Namen der Schauspieler in die Filme-Tabelle zu schreiben wiederspricht dem Grundsatz einer relationalen Datenbank, das ist nichts weiter als eine Liste. Du brauchst für eine Sinnvolle Datenbank mit diesen Fähigkeiten mindestens 3 Tabellen. Auch wenn ein Film maximal 4 Schauspieler hat macht es keinen Sinn, diese Grenze in einem relationalen Modell bei zu behalten, das macht nur Sinn, wenn man wie von dir vorgeschlagen alles in eine Tabelle klatscht.

Als Tabelle empfehle ich dir:
Filme (ID, Titel, [...])
Personen (ID, Vorname, Nachname, [...])
Beziehungen (ID_Film, ID_Person, Funktion)

Für jede Rolle in einem Film bekommt eine Person dann einen Eintrag in der Hilfstabelle Beziehungen, die eine klassische n:m Beziehung abbildet. So kann eine Person in beliebig vielen Filmen in beliebiger Form mitwirken und ein Film beliebig viele Personen "beschäftigen". Kann dann auch mal 2 Regisseure geben...

Falls per Datenbank-Design erzwungen werden soll, das maximal ein Regisseur beteiligt ist, könnte man auch zusätzlich einen Fremdschlüssel ID_Regisseur in die Filmtabelle setzen, Sinn macht das aber keinen.
 

Nemaides

Neuer Benutzer
Beiträge
4
Es muss leider 0-4 Schauspieler und ein Regisseur sein, also kein n:m. Also ich finde das auch grausam, aber ist so gefordert.
Also die Frage ist eher Person oder Regisseur/Schauspieler oder alles in Film.
Das ganze ist auch nur der erste Part. Es geht um objektrelationale Datenbanken und diese Relationale soll nur zum Vergleich dienen (vll. auch deswegen etwas Problematisch damit die Vorteile von objektrelationalen hervorstechen).
 

ukulele

Datenbank-Guru
Beiträge
4.582
Und das soll wie erstellt werden? In UML könnte man diese Einschränkung auch für mein 3 Tabellen Modell darstellen wenn ihr keinen SQL Code dazu schreiben müsst. Ansonsten bleibt dir nur a) alles in eine Tabelle oder b) für jede Person einen Fremdschlüssel in die Haupttabelle der auf die Person in einer Nebentabelle verweisst.
 

Nemaides

Neuer Benutzer
Beiträge
4
Ein ERM und ein relationales Modell. Du meinst einfach deine 3 Tabellen und dann die Kardinalitäten dran schreiben? Das wäre natürlich eine Idee.

Noch eine ergänzende Frage: Ich habe den objektrelationalen Part soweit programmiert und einen Type "Person". Ist es sinnvoll diesen an Typen Regisseur und Schauspieler zu vererben (ohne zus. Attribute) damit man diese besser unterscheiden kann? Oder eher sinnlos wegen gleicher Attribute?
 
Werbung:
Oben