{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# Erweiterte Entity-Relationship-Modellierung: Eine Einführung\n", "\n", "In diesem Tutorium wiederholen Sie die Prinzipien der erweiterten Entity-Relationship-Modellierung und wenden diese an." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## Einführung\n", "\n", "Im Folgenden wiederholen wir kurz die Prinzipien der Generalisierung / Spezialisierung und der Aggregation, ehe wir zu den Aufgaben des Tutoriums kommen." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Generalisierung / Spezialisierung\n", "\n", "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.\n", "\n", "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`.\n", "\n", "![](../resources/01-02_modellierung/Tut2_Einf1.svg)" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "`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`." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Aggregation\n", "\n", "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.\n", "\n", "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.\n", "\n", "![](../resources/01-02_modellierung/Tut2_Einf2.svg)" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 4 }