1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Redundanzen bei meinem Modell vermeiden?

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von amigo89, 9 August 2016.

  1. amigo89

    amigo89 Neuer Benutzer

    Hallo zusammen,


    aktuell steh ich vor dem Problem, dass ich mit der Planung meines Modells Redundanzen bekomme.

    Hier das ERM: [​IMG]

    Ich habe Ereignisse, die an unterschiedlichen Orten / Haltestellen stattfinden können ODER in einem Fahrzeug. Also entweder oder.

    Ich habe mir deshalb gedacht, dass ich in der Tabelle Ereignisse einen FK auf die Tabelle Orte verweise und dann die Tabellen Station & Fahrzeug habe, dessen Primärschlüssel GLEICHZEITIG auch Fremdschlüssel von Orte sind. So kann es nicht zu doppelten Einträgen kommen und ich kann nur Werte speichern, die bei Orte schon existieren.

    Allerdings könnte ich z.B. haben:

    EREIGNISSE:
    (1)

    ORTE:
    (1)

    STATION:
    (1, 'Hauptbahnhof')

    FAHRZEUG:
    (1, 'B-AA-11')

    Ich hätte somit Redudanzen und einen Widerspruch, denn in der Ort an dem das Ereignis passiert ist, ist sowohl ein Fahrzeug als auch eine Haltestelle, was aber nur eins davon sein sollte.

    Welches Modell kann ich benutzen, um das Problem zu lösen??

    Vielen Dank!
     
  2. drdimitri

    drdimitri Datenbank-Guru

    Station_id und fahrzeug_id werden keine FK. Statt dessen kommt die Ort_id in jede der beiden Tabellen. Allerdings kann man sich dann diese Tabelle auch irgendwie sparen. Siehe unten.

    Alternative: Der Ort kommt aus dem Ereignis raus. In den Ort wird ein Ereignis mit einer Station/Fahrzeug verknüpft und über einen Typ festgelegt, um was es sich handelt. Das könnte man auch direkt im Ereignis ablegen, sofern es sich um eine 1:1 Beziehung handelt und ein Ort nicht mehrere Ereignisse besitzen kann.
     
  3. amigo89

    amigo89 Neuer Benutzer

    danke für deine Antwort.

    zum ersten Satz: Speichert man die Ort_id in die station UND fahrzeug, wäre wieder somit nicht klar, ob es sich in um ein Fahrzeug-ereigniss oder haltestellen-ereigniss handelt, weil die ort_id in beiden vorhanden ist (klar will man das sowieso vermeiden, aber könnte passieren), oder?

    Bei deiner Alternative hätte man dann aber Null-Werte so wie ich das verstehe, also wenn station_id = NULL -> dann ist ist eine Haltestelle und umgedreht und mit typ würde man sicherstellen, was angesprochen werden soll, falls beide gefällt wären? Es wurde zu keinen Redudanzen dann führen, aber man hätte Null werte, ist das nicht das, was man eigentlich vermeiden möchte nach Modellierungs-"Regeln" ?
     
  4. drdimitri

    drdimitri Datenbank-Guru

    Hmm ich glaub da haben wir uns noch nicht ganz verstanden.
    Also ich würde das wie folgt machen.
    1) Ort Entität wegwerfen, es sei denn, dort sind weitere allgemeine Informationen wie Adresse etc. drinnen.
    2.1) Falls der Ort als reine Auflösungsentität wegfällt, dann kommt in das Ereignis ein Feld Ereignistyp und in die Station und Fahrzeug eine EreignisID. Je nachdem welcher Typ eingetragen ist, wird entschieden in welcher Detailtabelle nachgelesen werden muss.
    2.2) Falls Ort bleibt, wird das analog in dieser Entität abgebildet. EreignisID, EreignisTyp und in die Detailtabellen wiederum die OrtId.

    Man kann sich jetzt noch überlegen, in welche Entität man die Ids legt, je nachdem wie dann darauf zugegriffen werden soll. Auf jeden Fall brauchst du irgendwo einen Typ der dir sagt, in welcher Entität es weitergeht. Null Werte und Doubletten gibt es aber nicht.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden