1. #1
    Avatar von John Gotti
    Registriert seit
    16.07.2014
    Beiträge
    114
    Thanked 84 Times in 46 Posts

    Standard Bedeutung einer identifizierenden Beziehung in SQL Datenbank-Relationen

    Ich beschäftige mich mit der Modellierung von SQL-Datenbanken und bin dabei auf ein für mich neues Thema gestoßen: Identifizierende und nicht identifizierende Beziehungen, teils auch englisch als "identifying" bzw. "non-identifying" bezeichnet. Es gibt verschiedene Erklärungen zu dem Thema, die sich teils widersprechen. Die Mehrheit spricht von der Abhängigkeit der Beziehung. Eine identifizierende Beziehung gibt an, dass das Kind-Objekt nicht ohne das Eltern-Objekt existieren kann. Ein Beispiel wäre eine Chatnachricht, die immer einem Nutzer zugeordnet sein muss. Die Nachricht kann ohne den Nutzer nicht existieren, sodass es sich dabei um eine identifizierende Beziehung handelt. Anders sieht es dagegen mit Büchern und Eigentümern aus, beide können unabhängig voneinander existieren, sodass hier eine nicht identifizierende Beziehung vorliegt.

    Noch nicht ganz klar ist mir die Absicht dahinter. Über die Kardinalitäten lege ich ja bereits fest, ob ich z.B. eine 1:1 oder m:n Beziehung habe. Dies sagt aber noch nichts über die Abhängigkeit aus, oder? Sondern lediglich, dass zwei Datensätze miteinander verknüpft werden können, und nicht 2 auf der einen Seite mit einem auf der anderen. Im Beispiel einer 1:1 Beziehung könnte man somit über eine identifizierende Beziehung festlegen, dass diese Verknüpfung zwingend ist. Andernfalls wäre sie optional.

    Für die folgenden Überlegungen nehmen wir als Beispiel zwei Tabellen: user und message, eine 1:n Beziehung. Ein user kann mehrere messages haben, jede message muss dagegen einem user zugeordnet werden.



    Dann stellt sich mir noch die Frage, wie sich diese Abhängigkeit beim Einfügen und Löschen von Daten verhält. Sagen wir ich habe eine Tabelle für Nutzer und eine für Chatnachrichten. Setze ich eine identifizierende Beziehung ein, muss also zunächst ein Nutzer in die Tabelle eingefügt werden, bevor er eine Chatnachricht schreiben kann. Aber wie teile ich der Datenbank mit, welche Entität von welcher abhängt? In ERM-Software kann ich eine identifizierende Beziehung nur über einen Haken markieren. Die Datenbank könnte demnach also genau so gut davon ausgehen, dass die Chatnachricht zuerst eingefügt werden muss, also vor dem Nutzer. Natürlich wäre dies unsinnig, aber das weiß die Datenbank ja eben nicht. Daher wundere ich mich, wie dies funktionieren kann, wenn die Datenbank nicht weiß welche Tabelle an erster Stelle steht. Oder anders gesagt welche Eltern/Kind ist.

    Und was passiert beim Löschen eines Datensatzes? Habe ich die oben genannte Beziehung zwischen User und Message als identifizierende Beziehung, müsste die Datenbank ja jeweils die anderen Einträge auch löschen. Sprich ich lösche z.B. einen Nutzer, dann löscht die Datenbank seine Nachrichten. Wenn das in beide Richtungen geht, gibts aber ein Problem. Man stelle sich das ganze umgekehrt vor, ich lösche eine Nachricht und der dazugehörige Nutzer wird gelöscht. Auch hier müsste man ja irgendwie festlegen können, dass er nur in eine Richtung löscht, wenn überhaupt.

    Update: Sollte natürlich theoretisch nur der Fall sein, wenn man damit keine anderen Relationen verletzt. Also in diesem Beispiel, wenn 1 User 1 Nachricht geschrieben hat, und man diese Nachricht löscht. Hätte der Nutzer 2 geschriebene Nachrichten, würde die Fremdschlüsselverknüpfung der anderen Nachricht (und natürlich auch die identifizierende Beziehung => Nachricht darf nicht ohne Nutzer existieren!) zerstört. Ich gehe davon aus, die Datenbank erkennt das und macht es in diesem Falle nicht. Fraglich bleibt aber der Fall, wenn ich eine Nachricht und einen Nutzer habe. Da wäre dieses Szenario in diesem Beispiel doch denkbar, die Datenbank würde gegen keine Relationsregeln (nennt man das so?) verstoßen.
    Geändert von John Gotti (03.10.2016 um 22:13 Uhr)

Ähnliche Themen

  1. Maximaler Altersunterschied in einer Beziehung
    Von TomatenKetchup im Forum Zwischenmenschliches
    Antworten: 8
    Letzter Beitrag: 03.01.2016, 14:16
  2. Sportwette Bedeutung von 2/1 & 1/2 & 1/X & 2/X
    Von Jura im Forum Finanzen & Zahlungsmittel
    Antworten: 4
    Letzter Beitrag: 12.07.2014, 21:56
  3. Was der Freundin zur 2 Jährlichen Beziehung schenken?
    Von Bazs im Forum Zwischenmenschliches
    Antworten: 10
    Letzter Beitrag: 10.07.2013, 22:22
  4. Duplikate in einer Datenbank
    Von DANP im Forum Webmaster
    Antworten: 6
    Letzter Beitrag: 12.03.2012, 16:04
  5. Antworten: 0
    Letzter Beitrag: 28.02.2012, 22:49
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.