Unterschied zwischen Identify-Relationship und Non-Identify

Hi,

mir ist der Unterschied noch nicht so ganz klar (die Defintionen dazu kenne ich). Damit das mal endlich sitzt, eine Frage als Beispiel, passend zum Forum:

Ich habe eine user-Tabelle und der User erstellt einen Artikel, wenn sich nun der User löscht, soll der Artikel dazu ja erhalten bleiben, also Non-Identify, oder?

Ich habe eine Oberklasse Person und eine Unterklasse User, lösche ich die Person, darf auch dar User nicht mehr existieren, also Identify?

Wie sähe es aber aus bei Maschine zu Fabrikat-Beziehung?

Vielleicht hat ja jemand 2 Beispiele (ähnlich den meinen), die simple und logisch mir die Augen öffnen (bzw. vertiefen).

Gruß XXD

Eine Identify Beziehung sagt aus, dass die Child Tabelle ohne die Parent Tabelle nicht existieren kann.

Beispiel: Eine Person hat eine oder mehrere Telefonnummern. Hätte diese Person nur eine Telefonnummer, so könnte diese in der selben Tabelle gespeichert werden. Sind jedoch mehrere Telefonnummern vorhanden, macht es Sinn, diese in einer Child Tabelle zu speichern um nicht unnötig leere Datensätze zu verwalten. 
Diese Telefon-Tabelle enthält nun als primärer Schlussel die Id der Person, welche die Personentabelle referenziert.
Dies wird dann als Identify Beziehung definiert, wenn die Telefonnummer eindeutig nur zu einer Person gehören soll.

EIne non-identifying Beziehung wäre demnach, wenn eine Child Tabelle nicht den Primärschlüssel der im obigen Beispiel erwähnten Person erhält. Dies ist dann anwendbar, wenn man z.B. das  Land einer Person in einer Tabelle referenzieren will. 

Hallo Rene,

Danke für die Antwort, war einleuchtend.

Was mich verwirrt hatte, war das mysql-workbench in beiden Fällen den PK in die jeweilige Tabelle mit aufnimmt.

Ich fasse mal zusammen, bei Identify wird der PK der Tabelle1 als zusätzlicher PK in Tabelle2 mitaufgenommen.
Bei Non-Identify wird zwar auch der PK der Tabelle1 in Tabelle2 mitaufgenommen, aber nicht als zusätzlicher PK, sondern als normale Spalte, welche eine Referenz darstellt.
Weswegen es auch bei N:M kein Non-Identify geben kann.

Gruß XXD

Moin dambeldier,

Moin, XXD,

klitzekleine Berichtigung:

bei Identify wird der PK der Tabelle1
als zusätzlicher PK in Tabelle2 mitaufgenommen.

der Parent-Key ist Teil des Schlüssel kandidaten , nicht
zwingend Teil des Schlüssels. Hintergrund: Wenn die Kette
länger wird, lassen sich die vererbten Keys für den
Programmierer kaum noch handhaben, deshalb wird er gleich
einen Autowert benutzen.

Hätte ich in Datenbanken mal besser aufgepasst :smile:.

Danke für die Anwort und den Hinweis!

Gruß XXD