Was ist ein Entity-Relationship-Modell?
Inhaltsverzeichnis
Endziel des Datenbankentwurfs ist die Definition von Tabellen. Für eine „gute“ Modellierung ist es jedoch falsch, mit dem Erstellen von Tabellen anzufangen. Man beginnt mit einer informellen Beschreibung der Miniwelt, wie diese von einem Kunden kommt – der Kunde kann dabei auch ein interner Kunde sein, siehe dazu auch die Ausführungen unter 1.2 Datenbankentwurf.
Anhand eines Beispiels nach (Henseler, 2018) soll dies verdeutlicht werden:
Es sei folgende (vereinfachte) Anforderungsdefinition gegeben: es soll eine Datenbank aufgebaut werden, welche die Planung von Veranstaltungen der Hochschule erleichtert. Aus der Datenbank soll hervorgehen, welche Studenten welche Vorlesungen besuchen. Diese Information soll auch zur Raumplanung verwendet werden, damit den Veranstaltungen die Räume passender Größe und vorhandener Unterrichtsmaterialien (Beamer, Projektor) zugewiesen werden können.
Insbesondere sollen Raumänderungen den Dozenten und Studierenden einfach mitgeteilt werden können. Die Datenbank soll auch alle Noten der Studierenden enthalten. Mögliche Operationen auf dieser Datenbank sind unter anderem:
- Daten lesen:
- Wie viele Studierende passen in den Raum „I123“?
- Erzeuge eine Liste aller Räume, welche für die Veranstaltung „DB“ in Frage kommen
- Wie viele Credit points hat die Veranstaltung „DB“?
- Drucke ein Diplom für „Lena Liesel“
- Welche Veranstaltungen sind Pflicht, Wahlpflicht oder Praktikum?
- Ist ein Raum Teil eines anderen Raumes?
- Daten hinzufügen:
- Neue(n) Student(in) eintragen, dabei automatische Vergabe der nächsten freien Matrikelnummer sowie das Datum der Einschreibung.
- Daten ändern:
- Die Studentin „Petra Wiechers“ möchte an der Vorlesung „SE“ teilnehmen.
- Ändere das Geburtsdatum von „Beate Schramm“.
- Daten löschen:
- Die Studentin „Kathrin Eilers“ hat sich exmatrikuliert.
- Der Raum „I100“ wird zu einem Büro umgebaut.
Die Anforderungsdefinition kann auch zusätzlich Skizzen von Bildschirmmasken und Formularen oder Entwürfe von ausdruckbaren Listen enthalten, beispielsweise, wenn Formulare und Berichte anderweitig vorgegeben sind. Hier beschränken wir uns auf das zu erstellende Datenbankschema.
Das Entity-Relationship-Modell ist ein Datenmodell, welches sich gut zur Darstellung des konzeptuellen Datenbankschemas für relationale Datenbanksysteme eignet. Dazu steht eine standardisierte graphische Notation in Form des Entity-Relationship-Diagramms (ER-Diagramm) zur Verfügung. Dieses Modell wurde 1976 von Peter Chen eingeführt.
Sowohl der Vorgang als auch das Resultat der Modellierung wird Entity-Relationship-Entwurf (ER-Entwurf) genannt. Das Resultat der Modellierung wird auch oft – ebenso wie das zugrundeliegende Datenmodell – als Entity-Relationship-Modell (ER-Modell) des Anwendungsbereichs bezeichnet.
Vorteil des ER-Entwurfs ist es, dass er systematisch in eine Menge von Relationenschemata überführt werden kann, welche die Grundlage für die Tabellen einer relationalen Datenbank bilden:
Was beschreibt das ER-Modell
Das ER-Modell geht davon aus, dass sich die betrachtete Miniwelt durch Objekte – sogenannte Entities – und Beziehungen zwischen diesen Objekten – den Relationships – beschreiben lässt. Entities und Relationships können durch Attribute näher charakterisiert werden. Dabei handelt es sich um Eigenschaften, die für jede Entity bzw. jede Relationship durch entsprechende Werte, die Attributwerte, konkretisiert werden.
Das ursprüngliche ER-Modell wurde im Laufe der Zeit um starke/schwache Entitätstypen, um Generalisierung und um Aggregation etc. erweitert, worauf hier nicht eingegangen wird.
Die folgenden Beschreibungen sind zum Teil aus (Henseler, 2018) entnommen.
Was ist eine Entität?
Nach Chen ist eine Entität „a thing, which can be distinctly identified“.
Jedes unterscheidbare Ding (Gegenstand, Objekt, …), welches in der betrachteten Miniwelt mehrere Eigenschaften hat und auf Grund dieser Eigenschaften eindeutig identifiziert werden kann, ist eine Entität (engl.: entity).
Die Eigenschaften von Entitäten nennt man Attribute (Merkmale), die jeweils für verschiedene Entitäten unterschiedliche Attributwerte annehmen können. Zwei „Dinge“, welche in allen Attributen den gleichen Attributwert besitzen, sind ununterscheidbar und somit die gleiche Entität. Andererseits ist eine Entität durch die Angabe der Werte aller seiner Attribute vollständig charakterisiert.
Ein einfaches Hilfsmittel, um die Entitäten und Attribute in einer Anforderungsdefinition zu identifizieren ist, alle Substantive zu betrachten. Allerdings ist nicht jedes Substantiv eine Entität: in obigem Beispiel ist jeder Student eine Entität, da er aufgrund seiner Attributwerte zu einem unterschiedlichen „Ding“ wird. Die Stühle in den Räumen sind jedoch keine eigenständigen Dinge und deshalb keine Entitäten.
Durch Bildung von Entitäten wird die Welt diskretisiert, d.h. auf nicht weiter unterteilbare Werte vereinfacht. Dabei muss im Einzelfall entschieden werden, wie fein diese Diskretisierung erfolgen soll. Beispielsweise kann der Name als einzelner Wert aufgefasst oder in Vor- und Nachname unterteilt werden.
Der nächste Abstraktionsschritt ist die Klassenbildung von Entitäten: Eine Entitätsklasse – auch Entitäts-Typ oder Intension genannt – fasst alle Entitäten mit der gleichen Attributskombination zusammen. Diese Gleichartigkeit setzt zumindest eine identische Attributsstruktur voraus, d.h. Attributnamen und Wertebereiche sind gleich.
Zusätzlich muss für alle Entitätsklassen der modellierten Welt gelten, dass mindestens ein Attributwert für alle Entitäten genau gleich ist. Im Beispiel wäre dieses Attribut die „Zugehörigkeit zur Hochschule“. Das dies jedoch für alle hier betrachteten Entitäten immer den gleichen Wert hat, wird dieses Attribut meist weggelassen.
Jede Entität gehört zu mindestens einem Entity-Typ – dies wird Instanz dieses Typs genannt. Die Menge aller aktuellen Instanzen eines Entity-Typs heißt dessen Population. Ein und dieselbe Entität kann Instanz verschiedener Entity-Typen sein, dabei kann auch die Attributsstruktur unterschiedlich sein. Umgekehrt müssen Entitäten mit gleicher Attributsstruktur keineswegs Instanzen desselben Typs sein.
Als Entitätsmenge (Extension) bezeichnet man die Sammlung aller Entitäten einer Entitätsklasse zu einem bestimmten Zeitpunkt in einer DB.
Als Schlüssel (Schlüsselattribut) einer Entitätsklasse bezeichnet man ein Attribut, dessen Attributwert sich für alle Entitäten unterscheidet. Manchmal bilden mehrere Attribute zusammen einen solchen Schlüssel was bedeutet, dass sich die Kombination der Attributwerte unterscheiden muss.
Ein solcher zusammengesetzter Schlüssel sollte minimal sein (d.h. kein Attribut kann weggelassen werden), da ja im Extremfall die Kombination aller Attribute immer ein Schlüssel sein muss. Ein Attribut ist auch nur dann ein Schlüssel, wenn seine Schlüsseleigenschaft für alle Entitätsmengen gilt.
Im ER-Diagramm werden Entitätsklassen als Rechtecke dargestellt. Die Entitäten selber sind hier nicht (mehr) von Bedeutung, wir erstellen ja ein Schema – also eine Abstraktion der realen Welt.
Was sind Attribute im ER-Diagramm?
Im ER-Diagramm werden Attribute meist als Ovale verbunden mit den Entitätsklassen dargestellt. In jeder Entitätsklasse bilden ein oder mehrere Attribute den Schlüssel, der unterstrichen dargestellt wird. In größeren Diagrammen fällt die Attributsstruktur meist ganz weg oder wird nur abkürzend oder separat notiert.
Normalerweise hat ein Attribut genau einen Wert für eine Entität. Später im Entwurfsprozess wird dem Attribut ein Datentyp (Zeichenkette, Zahl, Boolean, Datum, etc.) zugeordnet.
Was sind einfache Attribute?
Ein Attribut ist einfach (atomar), wenn es sich nicht weiter unterteilen lässt oder man dies nicht möchte. Beispielsweise könnte man die E-Mail-Adresse noch weiter in Domain und Top-Level-Domain unterteilen, doch das würde in unserer Miniwelt keinen Sinn ergeben, da wir nie auf die Teile einer Domain einzeln zugreifen wollen.
Was sind zusammengesetzte Attribute?
Ein Attribut kann erneut aus anderen Attributen bestehen, d.h. zusammengesetzt sein. Diese Eigenschaft ist sogar rekursiv, d.h. es bildet sich eine Attributhierarchie.
Was sind mehrwertige Attribute?
Ein Attribut kann mehr als einen Wert haben – beispielsweise kann ein Produkt in mehreren Farben lieferbar sein und verschiedene Preise haben (z.B. bei Mengenrabatt).
Was sind abgeleitete Attribute?
Wenn zwei Attribute in einer Beziehung zueinander stehen, ist eines vom anderen abgeleitet. Beispielsweise lässt sich aus dem Geburtsdatum unmittelbar das Alter errechnen.
Was sind Beziehungen zwischen Entitätsklassen?
Zwischen den Entitätsklassen können Beziehungen (engl.: relationships) auftreten. Das heißt, dass die Entitäten zwei verschiedener Entitätsklassen grundsätzlich miteinander „etwas zu tun haben“ oder „in Verbindung stehen“ oder „zueinander gehören“. Jede Relationship ist durch die Schlüsselwerte der beteiligten Entities und die Werte aller Relationship-Attribute eindeutig charakterisiert.
Diese Beziehungen haben eine bestimmte Semantik, welches man meist mit einem oder zwei Worten ausdrücken kann, z.B. „kennt“, „besteht aus“, „gehört zu“, „führt zu“, „hat“, etc. Aus der Anforderungsdefinition lassen sich die Beziehungen meist durch betrachten der Verben finden.
Der Assoziationstyp beschreibt die Kardinalitätsverhältnisse dieser Beziehung, das heißt wie viele Entitäten der einen Entitätsklasse haben eine Beziehung zu Entitäten der anderen Klasse. Hierbei ist die genaue Anzahl der zugeordneten Entitäten nicht wichtig, es kommt nur darauf an, ob ein oder mehrere Entitäten zugeordnet sind.
Gegeben seien zwei Entitätsklassen A und B. Der Assoziationstyp wird wie folgt definiert:
Assoziationstyp (A,B) | Anzahl Entitäten aus B, die jeder Entität aus A zugeordnet sind. |
1 oder (1,1) oder (1..1) = einfache Assoziation | Genau eine |
c oder (0,1) oder (0..1) = konditionelle Assoziation | Keine oder eine (c = 0 oder c = 1) |
m oder (1,n) oder (1..*) = multiple Assoziation | Mindestens eine (m ≥ 1) |
mc oder (0,n) oder (0..*) = multipel-konditionelle Assoziation | Keine, eine oder mehrere (mc ≥ 0) |
Kombiniert man eine Assoziation (A, B) mit ihrer Gegen-Assoziation (B, A), so ergibt sich die binäre Beziehung (relationship) zwischen den betrachteten Entitätsklassen. Folgende Tabelle gibt eine Übersicht über alle möglichen Beziehungen:
Entitätsklasse A | Entitätsklasse B | Beziehungstyp | Beziehung |
Rechter Schuh | Linker Schuh | 1:1 | Paar |
Abteilung | Personal | c:1 | Abteilungsleiter |
Mitarbeiter | Abteilung | m:1 | Abteilungszugehörigkeit |
Kind | Eltern | mc:1 | Familienzugehörigkeit |
Frau | Mann | c:c | Ehe |
Person | Partei | m:c | Parteizugehörigkeit |
Projekt | Projekt | mc:c | Unterprojekt |
Standort | Standort | m:m | Distanz |
Vorlesung | Student | mc:m | Teilnahme |
Person | Person | mc:mc | Freundschaft |
Im ER-Schema wird jede Beziehung als Raute gezeichnet, die mit dem Namen der Beziehung versehen wird. Die Linien zwischen den Entitäten werden mit 1, c, m oder mc gekennzeichnet, die den Assoziationstyp darstellen. Aber: Manche ER-Diagramme stellen den Assoziationstyp umgekehrt dar!
- Ein rechter Schuh (1) kann nur zu einem linken Schuh (1) passen.
- Eine Abteilung (1) besteht aus beliebig vielen, jedoch mindestens einem Mitarbeiter (m).
- Frauen und Männer können (c), müssen aber nicht (c) in einer Ehe leben.
Was sind rekursive Beziehungen?
Es gibt auch rekursive Beziehungen zwischen Entitäten der gleichen Entitätsklasse – beispielsweise kann ein Mitarbeiter auch gleichzeitig Vorgesetzter sein. In solchen Fällen wird eine Unterscheidung von unterschiedlichen Rollen des Entitätstyps erforderlich.
Was sind n-stellige Beziehungen?
Manche Beziehungen können auch mehr als zwei Entitäten miteinander in Beziehung setzen, dann entstehen n-stellige Beziehungen:
Das Beispiel ist folgendermaßen zu lesen:
- Ein Student darf bei demselben Dozenten nur ein Abschlussthema ableisten
- Ein Student darf ein Abschlussthema nur einmal bearbeiten
- Dozenten können ein Abschlussthema wiederverwenden (bei mehreren Studenten)
- Ein Abschlussthema kann von mehreren Dozenten vergeben werden (an unterschiedliche Studenten)
Was sind Mehrfachbeziehungen?
Zwischen denselben Entitätsklassen können mehrere Beziehungen gleichzeitig existieren:
Beispiel
Das folgende Diagramm zeigt auszugsweise ein ER-Diagramm für die oben angeführte Anforderungsdefinition.