3. Datenmodellierung - Grundlagen
Datenmodellierung
Abschnitt betitelt „Datenmodellierung“Datenmodellierung beschreibt, wie Informationen eines realen Bereichs so strukturiert werden, dass sie in einer Datenbank zuverlässig gespeichert und ausgewertet werden können. Das Ziel ist dabei eine klare, konsistente Struktur, die korrekte Auswertungen ermöglicht und langfristig wartbar bleibt.
Schritte der Datenmodellierung
Abschnitt betitelt „Schritte der Datenmodellierung“Die einzelnen Schritte der Datenmodellierung sind:
-
Problem verstehen: Ziele, Fragen und benötigte Informationen sammeln (z. B. für eine Schulbibliothek: Bücher, Ausleihen, Personen). Dazu gibt es eine Disziplin namens Requirements Engineering (Anforderungsanalyse). Das Ergebnis ist ein Lasten- oder Pflichtenheft.
-
Entitäten bestimmen: Dinge/Objekte mit Bedeutung (Buch, Schüler, Lehrer). Achten Sie dabei auf Homonyme (z. B. “Klasse” als Schulklasse, Programmierklasse oder Klassenraum).
-
Attribute festlegen: Eigenschaften der Entitäten (Titel, ISBN, Name, Klasse).
-
Beziehungen und Kardinalitäten definieren: Wie Entitäten zusammenhängen (ein Buch - viele Ausleihen; eine Ausleihe - genau ein Buch, genau eine Person).
-
Schlüssel wählen: Primärschlüssel eindeutig, Fremdschlüssel verknüpfen Tabellen. Was macht die einzelnen Entitäten eindeutig identifizierbar?
-
ER-Modell zeichnen: Entitäten, Attribute, Beziehungen visualisieren.
-
Normalisieren: Redundanz und Anomalien vermeiden (1NF: atomare Werte; 2NF/3NF: Abhängigkeiten trennen).
-
Datentypen und Constraints festlegen: z. B. NOT NULL, UNIQUE, CHECK.
-
Relationales Schema ableiten: Tabellenstruktur aus dem ER-Modell erstellen.
-
Implementieren und testen: SQL-DDL ausführen, Beispieldaten einfügen, typische Abfragen prüfen.
-
Iterativ verbessern: Feedback nutzen, Modell bei neuen Anforderungen anpassen - und das von vorne.
Abstraktionen
Abschnitt betitelt „Abstraktionen“Beim Erstellen eines Datenmodells wird nicht jedes einzelne Detail der Realität 1:1 übernommen. Stattdessen werden Informationen so geordnet, dass sie für ein System sinnvoll und beherrschbar sind. Dazu werden Objekte der realen Welt betrachtet, ihre Eigenschaften gesammelt und danach strukturiert. Dieser Schritt heißt Abstraktion.
Grundbegriffe: Objekt und Klasse
Abschnitt betitelt „Grundbegriffe: Objekt und Klasse“-
Objekt: ein konkretes, einzelnes Ding aus der realen Welt. Beispiel: Ein bestimmtes Auto mit dem Kennzeichen XYZ-123, ein konkreter Schüler oder Schülerin, etc.
-
Klasse: eine Menge gleichartiger Objekte mit gemeinsamen Merkmalen.
Beispiel: Die Klasse “Auto” umfasst alle zugelassenen Autos, die Klasse “Schüler” umfasst alle einzelnen Schüler und Schülerinnen.
Eine Klasse beschreibt also, welche Eigenschaften ihre Objekte haben (z. B. Hersteller, Modell, Baujahr oder Vorname, Nachname, Geburtsdatum), während ein Objekt konkrete Werte für diese Eigenschaften besitzt (z. B. “VW”, “Golf”, “2019” oder “Kevin”, “Maier”, “2005-05-15”).
Zentrale Abstraktionskonzepte
Abschnitt betitelt „Zentrale Abstraktionskonzepte“1) Klassifikation
Abschnitt betitelt „1) Klassifikation“Gleichartige Objekte mit gemeinsamen Eigenschaften werden zu Klassen zusammengefasst. Welche Dinge Ihrer Analyse sind gleich oder sehr, sehr ähnlich?
Beispiel: Aus einzelnen Tieren wird die Klasse “Säugetier”. Aus einzelnen Büchern entsteht die Klasse “Buch”.
2) Aggregation (Ganzes-Teil-Beziehung)
Abschnitt betitelt „2) Aggregation (Ganzes-Teil-Beziehung)“Eine neue Klasse wird aus anderen Klassen zusammengesetzt. Ein Objekt kann also Teile besitzen, die selbst wieder Objekte anderer Klassen sind. Können Sie “X besteht aus …” definieren?
Beispiel: Die Klasse “Auto” besteht u. a. aus Motor, Karosserie und Rädern. Ein “Computer” aggregiert CPU, Arbeitsspeicher und Festplatte.
3) Generalisierung (Verallgemeinerung) / Spezialisierung
Abschnitt betitelt „3) Generalisierung (Verallgemeinerung) / Spezialisierung“Zwischen Klassen wird eine Ist-ein-Beziehung hergestellt. Eine allgemeinere Klasse fasst Eigenschaften zusammen, die allen zugehörigen spezielleren Klassen gemeinsam sind. Beispiel: “Tier” verallgemeinert “Vogel”, “Reptil” und “Säugetier”. Die gemeinsamen Eigenschaften (z. B. “Lebewesen”, “Atmung”) liegen in “Tier”. “Vogel” ergänzt spezielle Merkmale (z. B. “Flügel”).
Vererbung: Eigenschaften der allgemeinen Klasse werden von den spezialisierten Klassen geerbt, z.B. alles was ein “Säugetier” kann, kann auch ein “Hund” oder “Katze”.
Generalisierung kann auch über viele Stufen gehen: “Tier” zu “Säugetier” zu “Hund” zu “Schäferhund”. Dabei werden die Objekte in den einzelnen Stufen immer “genauer” (spezialisierter). Während “Tier” noch recht allgemein ist und “Säugetier” bereits spezifischer, wird “Hund” noch genauer und “Schäferhund” schließlich sehr spezifisch.
Generalisierung: von einzelnen Klassen auf ein allgemeine übergeordnete Klasse schließen, z.B von “Hund” und “Katze” auf “Säugetier”. Spezialisierung: von einer allgemeinen Klasse auf detailliertere Sub-Klassen schließen, z.B. von “Säugetier” zu “Hund” und “Katze”.
4) Assoziation (Beziehung)
Abschnitt betitelt „4) Assoziation (Beziehung)“Objekte oder Klassen können in Beziehung zueinander stehen. Diese Beziehungen können zwischen zwei oder mehreren Klassen auftreten und zusätzlich Rollen, Richtung und Kardinalitäten besitzen.
Beispiel: “Schüler” —“besucht” — “Schule” (viele Schüler besuchen eine Schule; eine Schule hat viele Schüler). Beispiel: “Kunde bestellt Bestellung”, “Lehrer hält Kurs”.
Assoziation sind meistens Verben: “besucht”, “bestellt”, “spielt”, “kauft”, “bekommt”, “benennt”, “fliegt”, …
Tatsächlich ist die Generalisierung auch eine spezielle Art einer Assoziation: “ist” und die Aggregation ebenfalls: “hat”.
5) Identifikation (Schlüssel)
Abschnitt betitelt „5) Identifikation (Schlüssel)“Damit ein Objekt eindeutig erkannt werden kann, werden bestimmte Eigenschaftswerte als Schlüssel definiert.
Beispiel: ISBN identifiziert ein Buch eindeutig; das Kürzel identifiziert eine Person innerhalb einer Schule; bei Autos kann die Fahrzeug-Identifikationsnummer (FIN) oder auch das Kennzeichen dienen.
Zusammengefasst
Abschnitt betitelt „Zusammengefasst“- Klassifikation ordnet ähnliche Dinge zu Klassen.
- Aggregation beschreibt “besteht aus”-Strukturen.
- Generalisierung/Spezialisierung organisiert Gemeinsamkeiten und Unterschiede über Vererbung.
- Assoziation verbindet Klassen durch Beziehungen.
- Identifikation stellt Eindeutigkeit durch Schlüssel sicher.
Diese Konzepte helfen, komplexe Realitäten klar, wiederverwendbar und fehlerarm in Datenmodellen abzubilden.
Das Entity-Relationship-Modell (ER-Modell)
Abschnitt betitelt „Das Entity-Relationship-Modell (ER-Modell)“Das Entity-Relationship-Modell (ER-Modell, ERM) ist ein weit verbreitetes grafisches Hilfsmittel für den Entwurf von Datenbanken. Es wird auch in anderen Bereichen der Informatik genutzt, um Teile der realen Welt abzubilden. Das ERM ist unabhängig von einem konkreten Datenmodell und nicht an technische Einschränkungen einer bestimmten Implementierung gebunden. Entwickelt wurde es 1976 von Peter Chen. Mit dem ER-Modell lassen sich die konzeptionellen Entwürfe einer Datenbank übersichtlich darstellen; eine häufig verwendete Darstellungsform heißt nach ihrem Urheber “Chen-Notation”. Es gibt aber auch andere Notationen, z.B. die “Krähenfuß-Notation”.
Die Grundbausteine des ER-Modells sind:
- Entities (Entitäten) - die Dinge oder Objekte, über die Informationen gespeichert werden.
- Relationships (Beziehungen) - die Verknüpfungen zwischen diesen Entitäten.
- Attribute - Merkmale, die sowohl Entitäten als auch Beziehungen genauer beschreiben.
Von einer Entitätsmenge oder einer Beziehungsmenge können beliebig viele einzelne Objekte vorkommen.
Für erweiterte Beziehungsarten gibt es das EERM (Extended/Erweitertes ER-Modell). Es ergänzt das klassische ERM unter anderem um:
- Aggregation (Teil-von / Part-of) - bildet zusammengehörige Objekte als Ganzes ab.
- Generalisierung/Spezialisierung (Ist-ein / Is-a) - ordnet gemeinsame Eigenschaften einer Oberklasse zu und führt Unterklassen für Besonderheiten ein.
- Weitere Beziehungsformen, die eine detailliertere, semantisch reichere Modellierung ermöglichen.
So unterstützt das (E)ER-Modell eine klare, verständliche und systematische Planung von Datenstrukturen.
Zwei Notationen: Chen und Krähenfuß
Abschnitt betitelt „Zwei Notationen: Chen und Krähenfuß“Ein ER-Modell wird gezeichnet, und dafür gibt es mehrere Schreibweisen (Notationen). Zwei davon begegnen Ihnen ständig: die Chen-Notation und die Krähenfuß-Notation. Beide beschreiben dasselbe Modell, nur mit anderen Symbolen.
Die Chen-Notation
Abschnitt betitelt „Die Chen-Notation“Die Chen Notation ist die erste grafische Darstellung des ER-Modells. Sie verwendet Rechtecke für Entitäten, Rauten für Beziehungen und Ovale für Attribute. Die Kardinalitäten werden an den Linien notiert.
Peter Chen stellte 1976 in seinem Artikel “The Entity-Relationship Model - Toward a Unified View of Data” das ER-Modell vor. Er beschreibt darin, wie man die realen Welt durch Entitäten und deren Beziehungen zueinander abbilden kann. Dieses Modell bildet die Grundlage für viele moderne Datenbankdesigns und -implementierungen.
Die Krähenfuß-Notation
Abschnitt betitelt „Die Krähenfuß-Notation“Die Information-Engineering-(IE)-Notation, auch Martin-Notation oder Krähenfuß-Notation genannt, ist eine alternative grafische Darstellung des Entity-Relationship-Modells (ERM). Sie wurde von James Martin entwickelt und zeichnet sich durch ihre klare und prägnante Darstellung von Entitäten, Beziehungen und Kardinalitäten aus.
Die Chen-Notation war die erste grafische Darstellung des ER-Modells und war damit sehr einflussreich und erfolgreich. Allerdings wurde sie im Laufe der Zeit als etwas komplex und schwerfällig empfunden, insbesondere bei der Darstellung von Kardinalitäten und optionalen Beziehungen.
Die häufigen Nachteile der Chen-Notation:
- Zu viele Symbole: Entitäten, Beziehungen (Rauten) und Attribute (Ovale) machen große Modelle schnell unübersichtlich. Es gibt viele verschiedene Symbole, welche räumlich viel Platz benötigen.
- Kardinalität nicht sofort am Ende sichtbar: Man muss oft die Beziehung (Raute) lesen, statt die Kardinalität direkt am Linienende zu sehen.
- Schlecht skalierbar: Bei vielen Entitäten/Beziehungen wird das Diagramm sehr “breit” und schwer auf einer Seite darstellbar.
In der Folge entstanden eine Reihe von Alternativ-Notationen, die diese Probleme adressieren wollten. Die Information-Engineering-(IE)-Notation ist eine der bekanntesten davon und hat sich in der Praxis durchgesetzt. Sie ist heute der Standard in vielen Unternehmen und wird häufig in der Datenmodellierung verwendet.
Die beiden Notationen auf einen Blick
Abschnitt betitelt „Die beiden Notationen auf einen Blick“| Element | Krähenfuß | Chen |
|---|---|---|
| Entity-Typ | Rechteck mit Titelzeile | Rechteck |
| Attribut | Zeile im Rechteck | Oval am Entity-Typ |
| Primärschlüssel | unterstrichenes Attribut | unterstrichenes Attribut |
| Beziehung | Linie, Name an der Linie | Raute mit Namen |
| Kardinalität | Symbol am Linienende | 1, N oder M an der Linie |
| Optionalität | Kreis (0) oder Strich (1) am Linienende | nicht vorgesehen |
| Attribut einer Beziehung | eigene (assoziative) Entität | Oval an der Raute |
Entität, Entity-Typ und Entitätsmenge
Abschnitt betitelt „Entität, Entity-Typ und Entitätsmenge“Entität (Entity)
Eine Entität ist ein eindeutig unterscheidbares “Ding” aus der realen Welt. Das kann eine Person, ein Gegenstand, eine Firma, ein Hund, ein Raum oder ein Projekt sein. Entitäten unterscheiden sich durch ihre Eigenschaften (Attribute) und deren Werte.
Objekt und Instanz sind Synonyme für Entität. Eine Entität ist also ein konkretes Objekt mit individuellen Attributwerten.
Beispiel: “Mitarbeiter Schmidt”, “Projekt 1009”, “Abteilung Forschung”, “Mike der Hund”, “Ferdinand der Kater”.
Entity-Typ
Der Entity-Typ beschreibt eine Klasse gleichartiger Entitäten - also Dinge, die durch die gleichen Attribute beschrieben werden. Bei der Modellierung arbeitet man normalerweise mit den Entity-Typen, nicht mit einzelnen Entitäten.
In beiden Notationen wird ein Entity-Typ als Rechteck dargestellt.
Beispiele für Entity-Typen: Mitarbeiter, Abteilung, Projekt, Hund, Kater.
Entitätsmenge (Entity-Set)
Eine Entitätsmenge ist die Sammlung aller Entitäten eines Entity-Typs zu einem bestimmten Zeitpunkt. Alle Elemente darin haben die gleichen Attribute, aber unterschiedliche Attributwerte.
Entitätsmengen können sich über die Zeit ändern (neue Entitäten kommen hinzu, andere fallen weg).
Beispiele: Alle Mitarbeiter, Alle Abteilungen, Alle Projekte, Alle Hunde, Alle Kater.
Attribute
Abschnitt betitelt „Attribute“Attribute (Eigenschaften) beschreiben Merkmale von Entitäten, Entity-Typen, Beziehungen oder Beziehungstypen.
Jedes Attribut hat:
- einen Namen (z. B. Geburtsdatum, Preis, Bezeichnung) und
- einen Wert (z. B. 12.03.2008, 19,99, “Mathematik”, “Mike”).
Die Attribute stehen als Zeilen im Rechteck des Entity-Typs, unter einer Titelzeile mit dem Namen. Das spart Platz und hält große Modelle lesbar.
Der Entity-Typ ist ein Rechteck, jedes Attribut ein Oval, das mit einer Linie am Entity-Typ hängt.
Die Domäne legt fest, welche Werte ein Attribut überhaupt annehmen darf, der Wertebereich. Das kann sein:
- eine feste Liste von erlaubten Werten (z. B. Januar, Februar, …),
- ein Bereich (z. B. Zahlen 0-999 oder Buchstaben A-G, 1.5-2.5),
- eine Mengen- bzw. Datentypangabe (z. B. natürliche Zahl, reelle Zahl, Datum, Boolean).
Damit wird klar, welche Art von Daten für ein Attribut zulässig ist und welche nicht - wichtig für korrekte und konsistente Daten in der Datenbank. Die Domäne beschreibt den Wertebereich eines Attributs.
Schlüsselattribute
Abschnitt betitelt „Schlüsselattribute“- Ein Schlüssel besteht aus einem oder mehreren Attributen.
- Er soll so kurz wie möglich, aber so lang wie nötig sein (Minimalitätsprinzip).
Künstlicher Schlüssel (Surrogate Key)
- Falls kein vorhandenes Attribut (oder keine Attributkombination) eindeutig identifiziert, wird ein künstliches Attribut ergänzt (z. B. eine laufende Nummer/ID).
- Dieses Attribut erhält für jede Entität einen einzigartigen Wert und dient als Schlüssel.
Primärschlüssel (Primary Key)
- Der Primärschlüssel identifiziert jede Entität eindeutig; sein Wert kommt in der Entitätsmenge nur einmal vor.
- Das Attribut, das eine Entität eindeutig macht, heißt identifizierendes Attribut.
- Reicht ein Attribut nicht aus, kann der Primärschlüssel zusammengesetzt sein (mehrere identifizierende Attribute).
- Ein Entity-Typ kann mehrere mögliche Schlüssel (Kandidaten-/Alternativschlüssel) haben, aber es wird genau einer als Primärschlüssel festgelegt.
- In ER-Diagrammen werden die Attribute des Primärschlüssels unterstrichen dargestellt, in beiden Notationen.
Das Schlüsselattribut steht üblicherweise als erste Zeile im Rechteck und ist unterstrichen. In der Abbildung des Hundes im Abschnitt Attribute ist das die ChipID.
Beispiele (zur Einordnung)
- Person: Matrikelnummer (eindeutig) → guter Primärschlüssel.
- Person: Vorname + Nachname (nicht eindeutig) → ungeeignet; ggf. Geburtsdatum hinzufügen, oder besser eine Personen-ID verwenden.
- Produkt: Artikelnummer statt Bezeichnung (weil Bezeichnungen sich ändern oder doppelt vorkommen können).
Beziehungen (Relationships)
Abschnitt betitelt „Beziehungen (Relationships)“- Beziehungen zeigen Wechselwirkungen oder Abhängigkeiten zwischen Entitäten.
- Auch Beziehungen können Attribute besitzen (z. B. Rolle im Projekt, Einstellungsdatum in einer “arbeitet-an”-Beziehung).
Beziehungsmenge (Association)
- Eine Beziehungsmenge ist eine Sammlung gleichartiger Beziehungen, die bestimmte Entitätsmengen miteinander verknüpft (z. B. alle “Mitarbeiter-arbeitet-an-Projekt”-Paare).
Beziehungstyp
- Der Beziehungstyp ist - wie der Entity-Typ - die Abstraktion: Er beschreibt welche Art von Verknüpfung zwischen welchen Entity-Typen besteht.
Eine Beziehung ist eine Linie zwischen zwei Entity-Typen. Der Name der Beziehung kann an die Linie geschrieben werden.
Ein Beziehungstyp wird als Raute dargestellt, die über Linien mit den beteiligten Entity-Typen verbunden ist. Der Name steht in der Raute (z. B. “arbeitet_an”, “besitzt”, “gehört_zu”).
Meistens verbindet eine Beziehung zwei Entity-Typen (binäre Beziehung). Ein Entity-Typ kann aber auch mit sich selbst in Beziehung stehen (rekursiv), oder es sind drei Entity-Typen beteiligt (ternär). Beides behandelt die Vertiefung.
Beziehungen mit Attributen
Abschnitt betitelt „Beziehungen mit Attributen“Manche Eigenschaften gehören weder zur einen noch zur anderen Entität, sondern zur Beziehung selbst. Beispiel: Ein Besitzer hat ein Haustier, und es soll festgehalten werden, wann er es angeschafft hat. Das Anschaffungsdatum beschreibt weder den Besitzer allein noch das Haustier allein.
An dieser Stelle unterscheiden sich die beiden Notationen wirklich:
In der (reinen) Krähenfuß-Notation kann eine Linie keine Attribute tragen. Stattdessen wird die Beziehung selbst zu einer Entität, einer assoziativen Entität. Sie steht zwischen den beiden ursprünglichen Entity-Typen und trägt die Attribute der Beziehung.
Manche Zeichenwerkzeuge hängen stattdessen ein Kästchen mit den Attributen an die Linie. Gemeint ist dasselbe. Die assoziative Entität hat den Vorteil, dass sie später direkt zu einer Tabelle wird.
Das Attribut wird als Oval direkt an die Raute gehängt.
Kardinalitäten
Abschnitt betitelt „Kardinalitäten“Die Kardinalität legt fest, wie viele Entitäten einer Entitätsmenge mit wie vielen Entitäten einer anderen Entitätsmenge verknüpft sein können (z. B. wie viele Mitarbeiter an einem Projekt mitarbeiten - und umgekehrt).
Es gibt drei Grundformen:
-
1:1 - Zu einer Entität gehört höchstens eine Entität der anderen Seite, und umgekehrt.
Beispiel: Jede Klasse hat einen Klassenvorstand, und eine Lehrkraft ist Klassenvorstand von höchstens einer Klasse.
-
1:n - Zu einer Entität der einen Seite gehören mehrere der anderen Seite, umgekehrt aber nur eine.
Beispiel: Eine Abteilung hat mehrere Mitarbeiter, jeder Mitarbeiter gehört zu einer Abteilung.
-
m:n - Auf beiden Seiten können mehrere Entitäten beteiligt sein.
Beispiel: Mitarbeiter arbeiten an mehreren Projekten, und Projekte haben mehrere Mitarbeiter.
Die Kardinalität wird als Symbol am Linienende gezeichnet. Die Form des Symbols für “viele” gibt der Notation ihren Namen.
Jedes Symbol besteht aus zwei Teilen: Der Teil direkt an der Entität sagt, wie viele es höchstens sind (Strich = eins, Krähenfuß = viele). Der Teil dahinter sagt, wie viele es mindestens sind (Kreis = null, Strich = eins).
So werden die drei Beispiele gelesen:
-
Ein Student kann sich für viele Kurse anmelden, auch für gar keinen. Umgekehrt hat jeder Kurs viele Studenten, aber mindestens einen.
-
Ein Kunde kann viele Bestellungen aufgeben, es gibt allerdings auch Kunden ohne Bestellungen. Jede Bestellung gehört aber genau einem Kunden.
-
Ein Mitarbeiter arbeitet in genau einer Abteilung. Eine Abteilung hat viele Mitarbeiter, aber mindestens einen.
Die Kardinalität wird als 1, N oder M an die Linie zwischen Entity-Typ und Raute geschrieben.
Kardinalitäten bestimmen: “Kann …?” und “Muss …?”
Abschnitt betitelt „Kardinalitäten bestimmen: “Kann …?” und “Muss …?”“Kardinalitäten werden nicht geraten, sondern erfragt. Jede Beziehung wird dazu aus beiden Richtungen gelesen, und für jede Richtung stellt man zwei Fragen:
- “Kann …?” klärt das Maximum: eins oder viele.
- “Muss …?” klärt das Minimum: null oder eins.
Am Beispiel von Klasse und Schüler/in:
-
Kann ein/e Schüler/in in mehrere Klassen gehen? Nein. Bei der Klasse steht also höchstens eins.
-
Können in eine Klasse mehrere Schüler/innen gehen? Ja. Bei Schüler/in steht also viele.
-
Muss ein/e Schüler/in in eine Klasse gehen? Ja. Bei der Klasse steht also mindestens eins.
-
Muss in eine Klasse mindestens ein/e Schüler/in gehen? Ja. Bei Schüler/in steht also mindestens eins.
Die Antworten kommen immer aus dem Fachgebiet, nie aus dem Diagramm. Wenn der Text der Anforderung eine Frage nicht beantwortet, müssen Sie nachfragen oder eine Annahme treffen und dazuschreiben.
Optionalität: muss oder kann?
Abschnitt betitelt „Optionalität: muss oder kann?“Die Antwort auf die “Muss”-Frage heißt Optionalität oder Minimalbeteiligung. Ist die Antwort Nein, ist die Beziehung auf dieser Seite optional.
- Ein/e Schüler/in benutzt keinen oder genau einen Spind. Umgekehrt wird ein Spind von keiner oder genau einer Person benutzt; es gibt also auch leere Spinde.
- Ein/e Schüler/in erhält kein, ein oder mehrere Zeugnisse; wer gerade erst angefangen hat, hat noch keines. Umgekehrt gehört jedes Zeugnis zu genau einer Person.
Man spricht auch von einer totalen Beziehung, wenn jede Entität teilnehmen muss, und von einer partiellen Beziehung, wenn sie teilnehmen kann.
Die klassische Chen-Notation kennt nur 1, N und M und zeigt die Optionalität nicht. Wer sie in einem Chen-Diagramm braucht, schreibt statt eines einzelnen Buchstabens ein Wertepaar aus Minimum und Maximum an die Linie (Min-Max-Schreibweise). Wie das gelesen wird, steht in der Vertiefung.
Generalisierung/Spezialisierung
Abschnitt betitelt „Generalisierung/Spezialisierung“Die “Ist-ein”-Beziehung aus dem Abschnitt Abstraktionen lässt sich auch im ER-Diagramm zeichnen: Ein allgemeiner Entity-Typ trägt die gemeinsamen Attribute, die spezielleren Entity-Typen ergänzen ihre eigenen und erben die gemeinsamen.
Die Generalisierung wird mit einem Dreieck oder einem Halbkreis gezeichnet. Die Spitze des Dreiecks (oder die Mitte des Kreisbogens) zeigt auf den allgemeineren Entity-Typ.
In der Chen-Notation wird eine Raute mit dem Namen “ist” verwendet. Als Alternative hat sich ein Dreieck durchgesetzt, dessen Spitze auf den allgemeineren Entity-Typ zeigt.
Ob es neben den gezeichneten Unterklassen noch weitere gibt (total oder partiell) und ob eine Entität zu mehreren Unterklassen gehören darf (disjunkt oder überlappend), behandelt die Vertiefung.
Werkzeug: draw.io
Abschnitt betitelt „Werkzeug: draw.io“ER-Diagramme werden in diesem Unterricht mit draw.io gezeichnet (auch diagrams.net genannt). Es ist kostenlos, braucht kein Konto und läuft auf drei Arten:
- im Browser unter app.diagrams.net,
- als eigenständige App draw.io Desktop für Windows, macOS und Linux, die auch ohne Internet funktioniert,
- in VS Code mit der Erweiterung Draw.io Integration.
Die Bezeichnungen in den folgenden Schritten stammen aus der deutschen Oberfläche, die englischen stehen in Klammern.
-
ER-Formen einschalten: Die Formen für ER-Diagramme sind anfangs nicht sichtbar. Klicken Sie links unten in der Formenleiste auf Mehr Shapes (More Shapes), haken Sie im Bereich Software den Eintrag Entity Relation an und bestätigen Sie mit Anwenden (Apply). Die Formen erscheinen danach links als eigene Gruppe. Wie eine Form heißt, zeigt draw.io an, wenn der Mauszeiger kurz darauf stehen bleibt.
-
Entity-Typen und Attribute zeichnen: Ziehen Sie die Formen aus der Gruppe Entity Relation auf die Zeichenfläche.
Verwenden Sie eine der Listen- oder Tabellenformen (List, Table). Die Titelzeile trägt den Namen des Entity-Typs, jede weitere Zeile ein Attribut. Eine neue Zeile entsteht, indem Sie eine vorhandene markieren und duplizieren (Duplizieren, Duplicate). Das Schlüsselattribut unterstreichen Sie im Bereich “Formatieren” unter Text mit Unterstrichen (Underline).
Abb. 6.24: Die Gruppe 'Entity Relation' in draw.io. In den obersten beiden Reihen stehen die Tabellen- und Listenformen für die Krähenfuß-Notation, ganz unten fertige Linien mit Krähenfuß-Enden.Verwenden Sie Entity für den Entity-Typ, Attribute für ein Attribut, Key Attribute für das Schlüsselattribut (es ist bereits unterstrichen) und Relationship für die Raute. Für die Vertiefung gibt es außerdem Weak Entity, Multivalue Attribute und Derived Attribute.
Abb. 6.25: Die Chen-Seite der Beispieldatei. Bleibt der Mauszeiger auf einer Form der Gruppe 'Entity Relation' stehen, zeigt draw.io eine Vorschau mit dem Namen der Form, hier 'Attribute'. -
Beziehungen ziehen: Bewegen Sie die Maus über eine Form und ziehen Sie von ihrem Rand eine Linie zur anderen Form, bis diese hervorgehoben wird. Nur dann hängt die Linie wirklich an der Form.
Klicken Sie die Linie an und wählen Sie rechts im Bereich “Formatieren” im Reiter Style bei Linienanfang (Line Start) und bei Linienende (Line End) das passende Krähenfuß-Symbol. Stellen Sie immer beide Enden ein. Welches Symbol was bedeutet, zeigt der Abschnitt Kardinalitäten. Die Gruppe Entity Relation enthält auch fertige Linien mit Krähenfuß-Enden.
Abb. 6.26: Linienenden einstellen. Die Linie ist markiert; rechts im Reiter 'Style' stehen im Abschnitt 'Linie' die beiden Auswahlfelder für Linienanfang und Linienende.Den Namen der Beziehung schreiben Sie nach einem Doppelklick auf die Linie.
Verbinden Sie jeden Entity-Typ mit der Raute und jedes Attribut mit seinem Entity-Typ. Die Linien haben keine Pfeilspitzen: Stellen Sie Linienanfang und Linienende auf Ohne (None).
Die Kardinalität (1, N oder M) schreiben Sie nach einem Doppelklick auf die Linie, nahe am Entity-Typ.
-
Speichern und exportieren: Speichern Sie das Diagramm als
.drawio-Datei; nur diese lässt sich später weiterbearbeiten. Für ein Dokument oder eine Präsentation exportieren Sie zusätzlich ein Bild über Datei → Exportieren als (File → Export as), am besten als PNG oder SVG.
Zum Ausprobieren gibt es eine Beispieldatei für draw.io. Sie enthält das Beispiel Klasse und Schüler/in auf zwei Seiten, einmal in Krähenfuß- und einmal in Chen-Notation, und eignet sich als Ausgangspunkt für eigene Diagramme.
Sobald aus dem Modell Tabellen werden (Kapitel 4), lohnt sich zusätzlich ein Blick auf dbdiagram.io. Dort beschreibt man die Tabellen als Text und erhält daraus ein Diagramm in Krähenfuß-Notation und das passende SQL.
Beispiel: Kleintierpraxis
Abschnitt betitelt „Beispiel: Kleintierpraxis“Die Schritte sind in beiden Notationen dieselben. Erst beim Zeichnen im letzten Schritt unterscheiden sie sich.
-
Entitäten bestimmen: Markieren Sie sich mögliche Entitäten im Text. Kandidaten dafür sind meistens Substantive.
In einer Kleintierpraxis werden Haustiere ihrer Besitzer verwaltet. Jeder Halter kann mehrere Tiere besitzen, ein Tier gehört jedoch genau einem Halter. Jedes Tier ist entweder ein Hund oder ein Kater. Jeder Besuch hat ein Datum, einen Behandlungsgrund und eine Rechnungssumme. Für Hunde werden rassespezifische Angaben und eine optionale Chipnummer festgehalten; für Kater werden u. a. Fellfarbe und der Kastrationsstatus dokumentiert.
Wenn Sie unsicher sind, ob etwas eine Entität ist, fragen Sie sich: “Ist das ein Ding, über das ich Informationen speichern möchte?” Wenn ja, ist es wahrscheinlich eine Entität.
Im Text gibt es Pluralformen (z. B. “Tiere”, “Besitzer”). Diese deuten oft auf Entitätsmengen hin. Die Singularform (z. B. “Tier”, “Besitzer”) wird als Entity-Typ verwendet.
Es kann auch Homonyme und Synonyme geben, z.B. “Halter” und “Besitzer” - beides dasselbe. Wählen Sie einen Begriff und bleiben Sie dabei.
Achten Sie auch darauf, ob es einen Begriff gibt, welcher das Gesamtsystem beschreibt (z. B. “Kleintierpraxis”). Dies könnte ebenfalls eine Entität sein, meistens ist das aber der Kontext, der Titel des Modells oder der Datenbank insgesamt.
Zusammengefasst:
- Model: “Tierarztpraxis”
- Entity-Typen: “Halter”, “Tier”, “Hund”, “Kater”, “Besuch”
-
Attribute festlegen: Welche Eigenschaften (Attribute) haben die Entitäten? Welche Informationen wollen Sie über sie speichern?
Aus dem Text ergeben sich folgende Attribute:
- Halter: Name, Adresse - diese Attribute erscheinen nicht in der Faktenbasis, machen aber Sinn, um den Halter zu identifizieren und zu kontaktieren. Seien Sie grundsätzlich vorsichtig mit Attributen, die nicht explizit genannt werden! Für Sie mögen sie sinnvoll erscheinen, aber vielleicht sind sie es im gegebenen Kontext nicht oder bekommen aber auch eine andere Bedeutung.
- Tier: Name - auch dieses Attribut erscheint nicht in der Faktenbasis, macht aber Sinn, um das Tier zu benennen.
- Hund (spezialisiert von Tier): Rasse, Chipnummer
- Kater (spezialisiert von Tier): Fellfarbe, Kastrationsstatus
- Besuch: Datum, Grund, Preis
-
Beziehungen und Kardinalitäten definieren: Wie hängen die Entitäten zusammen? Welche Beziehungen gibt es zwischen ihnen?
Aus dem Text ergeben sich folgende Beziehungen:
- Halter besitzt Tier (1:n): Ein Halter kann mehrere Tiere besitzen, aber jedes Tier gehört genau einem Halter.
- Tier hat Besuch (1:n): Ein Tier kann mehrere Besuche haben, aber jeder Besuch gehört genau einem Tier.
- Tier ist entweder Hund oder Kater: Jedes Tier ist genau ein Hund oder ein Kater. Das ist eine Generalisierung/Spezialisierung.
-
Schlüssel wählen: Welche Attribute machen die Entitäten eindeutig identifizierbar?
Aus dem Text ergeben sich folgende Schlüsselattribute:
- Halter: Eine Id als laufende Nummer. Der Name allein reicht nicht aus, da mehrere Halter denselben Namen haben können.
- Tier: Ebenfalls eine Id als laufende Nummer. Der Name allein reicht nicht aus, da mehrere Tiere denselben Namen haben können.
- Hund: Chipnummer (optional, aber wenn vorhanden, eindeutig). Das ist zusätzlich zur Id des Tiers.
- Kater: Keine eindeutigen Attribute im Text genannt, also nur die Id des Tiers.
- Besuch: Auch hier eine Id als laufende Nummer. Das Datum allein reicht nicht aus, da ein Tier mehrere Besuche am selben Tag haben könnte.
-
ER-Modell zeichnen: Zeichnen Sie das ER-Diagramm mit den oben definierten Entitäten, Attributen, Beziehungen und Kardinalitäten.
Abb. 6.27: ER-Diagramm einer Kleintierpraxis in Krähenfuß-Notation. Im Vergleich zur Chen-Notation ist das Diagramm deutlich kompakter.
Abb. 6.28: ER-Diagramm einer Kleintierpraxis in Chen-Notation.
Wie es weitergeht
Abschnitt betitelt „Wie es weitergeht“Mit diesen Grundlagen können Sie ein Datenmodell entwerfen und in Tabellen überführen; das ist das Thema von Kapitel 4, dem Relationenmodell.
Die Vertiefung greift die Modellierung später wieder auf: Arten von Attributen, schwache Entitäten, rekursive und ternäre Beziehungen, die Varianten der Generalisierung und die Grenzen des ER-Modells.
Lernergebnisse: Was Sie nach diesem Kapitel können sollten
Abschnitt betitelt „Lernergebnisse: Was Sie nach diesem Kapitel können sollten“Nach Abschluss dieses Kapitels sollten Schülerinnen und Schüler in der Lage sein:
- Nennen: die Bestandteile eines ER-Modells (Entitäten, Attribute, Beziehungen, Kardinalitäten) nennen.
- Beschreiben: die Schritte der Datenmodellierung und die Abstraktionsmechanismen (Klassifikation, Aggregation, Generalisierung) beschreiben.
- Lesen: ein ER-Diagramm in Krähenfuß- und in Chen-Notation in Worten wiedergeben.
- Anwenden: Kardinalität und Optionalität einer Beziehung mit den “Kann”- und “Muss”-Fragen bestimmen.
- Vergleichen: die Chen-Notation und die Krähenfuß-Notation gegenüberstellen.
- Entwerfen: ein konzeptuelles Datenmodell für eine einfache Aufgabenstellung selbstständig entwerfen und in einer der beiden Notationen zeichnen.