1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Kinodatenbank-Design

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von Nemaides, 27 September 2011.

  1. Nemaides

    Nemaides Neuer Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
    Walter gefällt das.
  3. Nemaides

    Nemaides Neuer Benutzer

    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).
     
  4. ukulele

    ukulele Datenbank-Guru

    Wenn es nur eine Tabelle sein darf kommst du nicht drum rum für alles eine Spalte zu machen.
     
  5. Nemaides

    Nemaides Neuer Benutzer

    Es können auch mehrere Tabellen sein. Nur halt 0-4 Schauspieler und 1 Regisseur. Das sind de Regeln.
     
  6. ukulele

    ukulele Datenbank-Guru

    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.
     
  7. Nemaides

    Nemaides Neuer Benutzer

    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?
     
  8. ukulele

    ukulele Datenbank-Guru

    Sry kenn ich mich mit Vererbung nicht aus, ich würde die selbe Tabelle nehmen und die Personen dort markieren.
     

Diese Seite empfehlen