Ich hätte mal eine Frage zur Datenbankmodellierung, speziell zur Vererbung bei Entitätstypen. Die Frage ist etwas weiter unten, will zuerst beschreiben was ich meine.
Mal angenommen der folgende Fall liegt vor:
WATER(name,qual) - Supertyp
RIVER(length) - Subtyp
LAKE(depth,area) - Subtyp
Also, RIVER und LAKE werden von WATER abgeleitet. Wird das später in Tabellen umgesetzt, gibt es ja drei Möglichkeiten:
-
Je eine Tabelle pro Entitätstyp. Die Subtypen erben nur den Primärschlüssel name von WATER:
WATER(name,qual)
RIVER(name,length)
LAKE(name,depth,area) -
Je eine Tabelle pro Subtyp, keine für den Supertyp. Die Subtypen erben alle Attribute vom Supertyp:
RIVER(name,qual,length)
LAKE(name,qual,depth,area) -
Ledeglich eine Tabelle für den Supertyp, keine für die Subtypen. Supertyp nimmt alle Attribute der Subtypen auf. Je nachdem welcher Typ später gespeichert wird, bleiben die Zellen für die anderen Attribute leer:
WATER(name,qual,length,depth,area)
Desweiteren gibt es ja im ER-Modell die Möglichkeit eine Vererbung inklusiv und exklusiv zu kennzeichnen:
WATER WATER
| |
/\_\ /<u>X</u>\
/ \ / \
RIVER LAKE RIVER LAKE
_(inklusiv)__(exklusiv)_
Bei exklusiven Vererbungen wird das oft durch ein X gekennzeichnet. Das bedeutet, dass ein WATER entweder ein RIVER oder ein LAKE ist.
Eine inklusive Vererbung bedeutet, dass ein WATER sowohl ein RIVER alsauch ein LAKE ist.
Jetzt die eigentliche Frage/Unverständnis:
Wenn ich eine Vererbung inklusiv bzw. exklusiv modelliere, kann ich diese dann in alle drei Tabellenformen umwandeln, oder hängt es davon ab, ob das inklusiv oder exklusiv modelliert wurde?
Und wann ist ein Supertyp sowohl vom Subtyp1 als auch vom Subtyp2?