Relationenmodelle

Hallo ihr Lieben,

ich bereite mich gerade auf eine Klausur vor und ich verstehe den Vorteil von zwei Arten des Relationenmodells nicht.

Wir haben in der Vorlesung folgende Arten besprochen:
Volle Redundanz, Hausklassenmodell, vertikale Partitionierung und Hierarchierelation.

Das für mich Sinnvollste ist mit Abstand die vertikale Partitionierung, dadurch dass man die einzelnen Relationen durch einen Fremdschlüssel Joinen kann, kann man je nach Bedarf einzelne Tabellen verwenden oder eben den Join nutzen.

Danach käme für mich die Hierarchierelation, man speichert alle Daten die man hat in einer Relation und zusätzlich ein Type Tag um die einzelnen Werte als Klasse gruppieren zu können.

Die volle Redundanz finde ich, wie der Name schon sagt, ziemlich überflüssig :smile: viele Werte werden doppelt gespeichert.

Genauso unnötigfinde ich das Hausklassenmodell. Für jede Klasse eine einzelne Relation und keine Fremdschlüssel die einen Sinnvollen Join zulassen.

Gibt es für die letzten Beiden überhaupt Vorteile? :smile:

Liebe Grüße Matthias

Hallo Matthias,

ich bereite mich gerade auf eine Klausur vor und ich verstehe
den Vorteil von zwei Arten des Relationenmodells nicht.

Wir haben in der Vorlesung folgende Arten besprochen:
Volle Redundanz, Hausklassenmodell, vertikale Partitionierung
und Hierarchierelation.

Die Begriffe sind keine „Arten des Relationenmodells“ sondern bezeichnen verschiedene Möglichkeiten, die Generalisierung/Spezialisierung (als Konzept aus der Objektorientierung) aus dem (E)ER-Modell in das Relationenmodell zu überführen.

Ich verwendet im Folgenden den Begriff „Supertyp“ für den generalisierten Entitätstyp und „Subtyp“ für den/die spezialisierten Entitätstyp/en.

Das für mich Sinnvollste ist mit Abstand die vertikale
Partitionierung, dadurch dass man die einzelnen Relationen
durch einen Fremdschlüssel Joinen kann, kann man je nach
Bedarf einzelne Tabellen verwenden oder eben den Join nutzen.

Jeder Entitätstyp wird zur Relation. Das Schlüsselattribut des Supertypen wird Fremd- und Primärschlüssel in der Relation, die aus dem Subtypen hervorgeht.
Diese Auflösung ist sinnvoll, wenn die Subtypen weitere, vom Supertypen verschiedene Attribute haben. Sie ist auch sinnvoll und notwendig, wenn nicht alle Entitäten durch die Subtypen beschrieben werden. Beispiel: Supertyp = Medien, Subtypen = Buch, Zeitschrift, DVD. Eine Entität kann Buch oder Zeitschrift oder DVD oder ein anderes Medium sein. Es gibt also Medien, die nicht durch Subtypen abgebildet sind. In dem Fall muss auch der Supertyp als Relation abgebildet werden.

Danach käme für mich die Hierarchierelation, man speichert
alle Daten die man hat in einer Relation und zusätzlich ein
Type Tag um die einzelnen Werte als Klasse gruppieren zu
können.

Nur der Supertyp wird zur Relation.
Diese Auflösung ist sinnvoll, wenn die Subtypen keine weiteren/eigenständigen Attribute besitzen. Dies kann der Fall sein, wenn die Generalisierung/Spezialisierung zur Veranschaulichung der Hierarchiezusammenhänge modelliert wurde, ohne dass die Subtypen sich bzgl. ihrer Attribute vom Supertypen unterscheiden.

Eine Zusammenfassung von Subtypen, die eigene Attribute besitzen, wäre nicht sinnvoll. Das würde später auf Datenbankebene zu Tabellenspalten führen, die ggf. viele NULL-Werte enthalten. Dies erfordert zusätzliche Constraints, um die Daten semantisch korrekt bearbeiten zu können.

Die volle Redundanz finde ich, wie der Name schon sagt,
ziemlich überflüssig :smile: viele Werte werden doppelt
gespeichert.

Auf Relationenebene ist dies sicher unnötig, zumal es dem Orthogonalitätsprinzip widerspricht: Ein und dieselbe Information sollte nicht durch mehrere Relationen abgebildet werden. Die Redundanz müsste durch Anwendung der Normalformen wieder beseitigt werden.
Auf Datenbankebene mag der Ansatz zumindest aus Performanzgründen relevant sein. Allerdings sollte man dies dann eher mittels materialisierter Views lösen.

Genauso unnötigfinde ich das Hausklassenmodell. Für jede
Klasse eine einzelne Relation und keine Fremdschlüssel die
einen Sinnvollen Join zulassen.

Nur die Subtypen werden zur Relation. Sie „erben“ alle Attribute des Supertypen.
Diese Auflösung ist sinnvoll, wenn alle Entitäten durch die Subtypen beschrieben werden. Man spricht in dem Fall auch von einer totalen Beteiligungsbeschränkung. Beispiel: Supertyp = Medien, Subtypen = Buch, Zeitschrift, DVD. Jede Entität ist entweder Buch oder Zeitschrift oder DVD. Es gibt keine anderen Medien. Welchen Zweck hätte dann eine Relation Medien, wenn alle Entitäten schon durch die Subtypen erfasst werden?

Alles klar?

Peter

Hallo Peter,

danke für deine schnelle und tolle Erlärung du hast mir sehr geholfen. Doch eine Frage habe ich noch dazu:

Nur die Subtypen werden zur Relation. Sie „erben“ alle Attribute des Supertypen.Diese Auflösung ist sinnvoll, wenn alle Entitäten durch die Subtypen beschrieben werden. Man spricht in dem Fall auch von einer totalen Beteiligungsbeschränkung. Beispiel: Supertyp = Medien, Subtypen = Buch, Zeitschrift, DVD. Jede Entität ist entweder Buch oder Zeitschrift oder DVD. Es gibt keine anderen Medien. Welchen Zweck hätte dann eine Relation Medien, wenn alle Entitäten schon durch die Subtypen erfasst werden?

Da die Zeitschrift ja unabhängig also ganz andere Attribute hat wie DVD, kann man Relationen auch nicht sinnvoll joinen, außer man würde einen zusätzllichen Primärschlüssel hinzufügen, doch dass wiederspricht ja der „Definition“ des Hausklassenmodells, oder irre ich mich da?

Liebe Grüße Matthias

Da die Zeitschrift ja unabhängig also ganz andere Attribute
hat wie DVD, kann man Relationen auch nicht sinnvoll joinen,
außer man würde einen zusätzllichen Primärschlüssel
hinzufügen, doch dass wiederspricht ja der „Definition“ des
Hausklassenmodells, oder irre ich mich da?

Die Zeitschrift mag andere Attribute als die DVD haben, beide haben aber auch gemeinsame Attribute, sonst wären sie nicht Subtypen des gleichen Supertyps.
Ein Join ist nicht sinnvoll, da Zeitschrift und DVD (üblicherweise) disjunkte Teilmengen sind. Der Join würde eine Relation ohne Tupel liefern. Das Hinzufügen eines weiteren Schlüssels bzw. Erweiterung des bestehenden Schlüssels würde daran nichts ändern.

Will man die Relationen Zeitschrift und DVD wieder zusammenführen, z.B. um eine Relation Medien, also den Supertyp, zu bilden, muss man die Vereinigungsmenge (UNION) bilden. In SQL wäre auch ein Full-Outer-Join möglich, wenn auch nur bedingt sinnvoll.

Peter

1 Like

Hallo Peter,

nochmal danke schön für deine schnelle und hilfreiche Antwort. Du hast mir sehr geholfen.

Liebe Grüße Matthias