Problem: Grundverständnis Fremdschlüssel + m:n - Zwischentabelle

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem: Grundverständnis Fremdschlüssel + m:n - Zwischentabelle

    Hallo liebe Community,

    ich hänge bei folgendem ER-Entwurf bei der praktischen Umsetzung fest.
    (Datenbank: ORacle)



    Zuerst zu den Foreign-Keys. Damit die Beziehung zwischen den Tabellen tatsächlich bestehen, muss bei trailer und bild eine Verbindung in Form von einem Fremdschlüssel zu film angelegt werden? Gibt es da eine Art typische Namensgebung??

    Kommen wir zu der n:m Beziehung (film <--> person). Hier benötigen wir keine Fremdschlüssel, sondern eine Zwischentabelle, um die Verknüpfung zu gewährleisten??

    Ich hab rein vom logischen bisher folgenden SQL-Statement angefertigt (ohne es bisher einzupflegen, will es erstmal rein auf dem Papier haben).
    Würde mich sehr freuen, wenn mir jemand sagen könnte, ob ich auf dem richtigen Weg bin oder gleich entsprechende Tipps geben könnte.

    Code:
    CREATE TABLE film
    (
        fid INTEGER NOT NULL,
        titel VARCHAR(100),
        beschreibung CLOB,
        erscheinungsdatum DATE,
        PRIMARY KEY (fid)
    );
    
    CREATE TABLE trailer
    (
        tid INTEGER NOT NULL,
        datum DATE,
        trailer ORDSYS.OrdVideo,
        PRIMARY KEY (tid),
        f_id integer references film(fid)
    );
    
    CREATE TABLE bild
    (
        bid INTEGER NOT NULL,
        datum DATE,
        bild ORDSYS.OrdImage,
        bildinfo VARCHAR(200),
        PRIMARY KEY (bid)
    );
    
    CREATE TABLE person
    (
        pid INTEGER NOT NULL,
        name VARCHAR(100),
        vorname VARCHAR(100),
        PRIMARY KEY (pid)
    );
    
    CREATE TABLE beteiligung
    (
        fid INTEGER NOT NULL,
        pid INTEGER NOT NULL
        ...??!!
    );
    (Fremdschlüssel fehlt natürlich noch bei der Tabelle bild )

  • #2
    Hallo,

    ob die Statements so richtig sind, kann ich auf Anhieb nicht sagen, da ich mit Oracle lange nicht mehr gearbeitet habe. Die Herangehensweise ist jedoch vorbildlich und die Umsetzung mit der Zwischentabelle absolut korrekt.

    Für die Benennung von Fremdschlüsselspalten gibt es keinen einheitlichen Standard und das kann sich von Entwickler zu Entwickler unterscheiden. Trotzdem halten sich viele an die Konvention, dass die Primärschlüsselspalte immer „id“ heißt und eine Fremdschlüsselspalte auf die Tabelle „foobar“ als „foobar_id“ bezeichnet wird. Bei mir persönlich erhalten Fremdschlüsselspalten statt „_id“ den Suffix „_fkey“, aber das ist halt wieder die persönliche Note.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      danke schonmal für die hilfe

      die zwischentabelle zwischen der m:n beziehung müssen aus den zwei Foreign Keys zu der jeweiligen Tabelle bestehen, oder?

      Kommentar


      • #4
        Zitat von Clara Beitrag anzeigen
        die zwischentabelle zwischen der m:n beziehung müssen aus den zwei Foreign Keys zu der jeweiligen Tabelle bestehen, oder?
        Richtig. Wenn aber deine „beteiligt an“-Relation eigene Attribute hat, kommen die dort noch als zusätzliche Spalten rein. Beispiel:
        Code:
        [Warenkorb]---<enthält>---[Produkt]
        „enthält“ hat hier noch ein weiteres Attribut „Anzahl“, welches angibt, wie oft ein und dasselbe Produkt im Warenkorb enthalten ist. Dadurch ergibt sich folgende Tabelle (MySQL-Syntax):

        Code:
        create table cart_x_product (
            cart_fkey int unsigned not null,
            product_fkey int unsigned not null,
            quantity int unsigned not null default 1,
            index (cart_fkey),
            index (product_fkey),
            foreign key (cart_fkey) references cart (id),
            foreign key (product_fkey) references product (id)
        );
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          danke, das hilft mir super weiter
          weitere attribute bestehen nicht
          die zwischentabelle ist nur die kopplung der beiden anderen

          Kommentar

          Lädt...
          X