Erweiterte Entity-Relationship-Modellierung: Eine Einführung#
In diesem Tutorium wiederholen Sie die Prinzipien der erweiterten Entity-Relationship-Modellierung und wenden diese an.
Einführung#
Im Folgenden wiederholen wir kurz die Prinzipien der Generalisierung / Spezialisierung und der Aggregation, ehe wir zu den Aufgaben des Tutoriums kommen.
Generalisierung / Spezialisierung#
Oftmals wollen wir die Zugehörigkeit eines Entity-Typen bzw. einer Klasse zu einem anderen Entity-Typen darstellen, z.B. dass ein Vogel ein Tier ist oder dass eine VIP-Kundin eine Art „normale“ Kundin ist. Wir versuchen hier also, bestimmte Eigenschaften einer Beziehung durch Abstraktion kompakter und eindeutiger darzustellen. Diese Art der Darstellung kennst du vielleicht auch schon unter dem Begriff der Vererbung bei objektorientierten Programmiersprachen.
Im untenstehenden Diagramm sehen wir unter anderem eine Unterscheidung von vielen Tieren, die in einer Datenbank erfasst werden sollen. Dabei gibt es den generellen Entity-Typen Tier
. Als Spezialisierung des generellen Tier
Entity-Typen haben wir Säugetiere
, Vögel
, Reptilien
, Amphibien
und Fische
. Dabei müssen wir angeben, ob es auch Mischformen (overlapping) geben kann oder ob diese Klassen disjunkt sind. Des Weiteren muss angegeben werden, ob alle Spezialisierungen (und ggf. deren Mischformen) alle möglichen Tiere abbilden (total
) oder ob es auch Tiere gibt, die durch keine der Spezialisierungen repräsentiert werden (partiell
). Da wir alle Subklassen an Tieren als Spezialisierung haben, sind wir hier total
und disjunkt
.
Zebras
und Pferde
sind als Spezialisierungen von Säugetieren aufgeführt. Diese Spezialisierungen sind partiell
, denn wir möchten in unserer Datenbank auch Säugetiere
abbilden können, die weder Pferd noch Zebra sind. Des Weiteren sind diese Spezialisierungen überlappend (overlapping
), da es auch Kreuzungen aus Zebras
und Pferden
gibt, sogenannte Zebroids
. Die gleiche Argumentation gilt auch bei den Spezialisierungen der Fische
.
Aggregation#
Während wir zuvor über Klassen bzw. Entity-Typen gesprochen haben, die alle aus der gleichen Domäne stammen und wir mittels Spezialisierungen zwischen diesen unterschieden haben, so geht es bei der Aggregation darum, dass unterschiedliche Komponenten genommen werden, um ein komplexes Konstrukt zu bauen. Es werden also mehrere Entity-Typen verwendet, um aus diesen ein Aggregat zu konstruieren, welches aus diesen konkreten Bestandteilen besteht bzw. bestehen kann. Wir können also per Aggregation einen 1:n-Relationshiptypen mit name hat
oder ist Teil von
kompakter darstellen.
Im untenstehenden Diagramm sehen wir die Aggregation eines Laptops
dargestellt. Dieser muss durch die Totalitäten genau ein Keyboard
haben und mindestens ein Display
. Ein Laptop in dieser Darstellung kann darüber hinaus maximal einen Fingerabdrucksensor
haben und kann potenziell mehrere HDMI-Anschlüsse
haben.