ER-Modelle: Entity Relationship, Beziehungen & Kardinalität
Dieser Beitrag ist eine Begriffserklärung zu Entity-Relationship-Modellen – inklusive Beziehungen, Kardinalitäten und praktischer Beispiele.
In a Nutshell
ER-Modelle sind grafische Darstellungen zur Visualisierung von Datenbankstrukturen, die Entities (Entitäten), Relationships (Beziehungen) und deren Kardinalitäten beschreiben.
Kompakte Fachbeschreibung
Entity-Relationship-Modellierung ist eine Methode zur konzeptionellen Gestaltung von Datenbanken. Sie visualisiert die Datenstruktur bevor die technische Implementierung erfolgt.
Hauptkomponenten:
- Entities: Objekte der realen Welt (Kunde, Produkt, Bestellung)
- Relationships: Beziehungen zwischen Entities (kunden → bestellen → produkte)
- Attributes: Eigenschaften von Entities (Name, Preis, Datum)
- Kardinalitäten: Anzahl der Beziehungen (1:1, 1:n, n:m)
Notationen:
- Chen-Notation: Rechtecke für Entities, Rauten für Relationships
- Crow’s Foot: Moderne Notation mit Krähenfüßen für Kardinalitäten
- UML-Klassendiagramme: Erweiterte Darstellung mit Methoden
ER-Modelle dienen als Kommunikationsmittel zwischen Entwicklern, Datenbankadministratoren und Fachexperten. Sie bilden die Grundlage für die logische Datenmodellierung und anschließende Normalisierung.
Prüfungsrelevante Stichpunkte
- Entities: Reale Objekte mit eindeutiger Identifikation
- Relationships: Beziehungen zwischen Entities mit Kardinalitäten
- Kardinalitäten: 1:1, 1:n, n:m Beziehungen definieren Anzahl der Verbindungen
- Attribute: Eigenschaften von Entities (einfach, zusammengesetzt, abgeleitet)
- Chen-Notation: Klassische ER-Notation mit Rechtecken und Rauten
- Crow’s Foot: Moderne Notation mit直观er Kardinalitätsdarstellung
- IHK-relevant: Wichtig für Datenbankdesign und -modellierung
- Normalisierung: ER-Modelle bilden Grundlage für Normalisierungsprozess
Kernkomponenten
- Entity Type: Menge ähnlicher Entitäten mit gleichen Attributen
- Weak Entity: Entität ohne eindeutige Identifikation, abhängig von anderer Entität
- Relationship Type: Assoziation zwischen zwei oder mehr Entity Types
- Attribute: Eigenschaft einer Entität oder Beziehung
- Primary Key: Eindeutiger Identifikator einer Entität
- Foreign Key: Referenz auf Primary Key einer anderen Entität
- Cardinality: Maximale und minimale Anzahl von Beziehungsinstanzen
- Participation: Ob eine Entität an einer Beziehung teilnehmen muss (total/partial)
Praxisbeispiele
1:1 Beziehung
-- Jeder Mitarbeiter hat genau einen Arbeitsplatz
CREATE TABLE Mitarbeiter (
mitarbeiter_id INT PRIMARY KEY,
name VARCHAR(100),
geburtsdatum DATE
);
CREATE TABLE Arbeitsplatz (
arbeitsplatz_id INT PRIMARY KEY,
gebaeude VARCHAR(50),
etage INT,
raum INT,
mitarbeiter_id INT UNIQUE, -- 1:1 Beziehung
FOREIGN KEY (mitarbeiter_id) REFERENCES Mitarbeiter(mitarbeiter_id)
);
1:n Beziehung
-- Ein Kunde kann viele Bestellungen haben
CREATE TABLE Kunden (
kunden_id INT PRIMARY KEY,
name VARCHAR(100),
adresse VARCHAR(200)
);
CREATE TABLE Bestellungen (
bestell_id INT PRIMARY KEY,
bestelldatum DATE,
gesamtbetrag DECIMAL(10,2),
kunden_id INT, -- 1:n Beziehung
FOREIGN KEY (kunden_id) REFERENCES Kunden(kunden_id)
);
n:m Beziehung (mit Junction Table)
-- Studenten können viele Kurse belegen, Kurse viele Studenten haben
CREATE TABLE Studenten (
student_id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE Kurse (
kurs_id INT PRIMARY KEY,
kursname VARCHAR(100),
credits INT
);
-- Junction Table für n:m Beziehung
CREATE TABLE StudentenKurse (
student_id INT,
kurs_id INT,
belegdatum DATE,
note DECIMAL(3,1),
PRIMARY KEY (student_id, kurs_id),
FOREIGN KEY (student_id) REFERENCES Studenten(student_id),
FOREIGN KEY (kurs_id) REFERENCES Kurse(kurs_id)
);
Komplexes ER-Modell (Beispiel Bibliothek)
-- Entities mit verschiedenen Beziehungen
CREATE TABLE Autoren (
autor_id INT PRIMARY KEY,
name VARCHAR(100),
geburtsjahr INT
);
CREATE TABLE Buecher (
buch_id INT PRIMARY KEY,
titel VARCHAR(200),
isbn VARCHAR(20) UNIQUE,
erschienenjahr INT
);
CREATE TABLE Verlage (
verlag_id INT PRIMARY KEY,
name VARCHAR(100),
sitz VARCHAR(100)
);
CREATE TABLE Kunden (
kunden_id INT PRIMARY KEY,
name VARCHAR(100),
mitgliedsdatum DATE
);
-- Beziehungen
-- n:m: Autoren schreiben Bücher
CREATE TABLE BuchAutoren (
buch_id INT,
autor_id INT,
PRIMARY KEY (buch_id, autor_id),
FOREIGN KEY (buch_id) REFERENCES Buecher(buch_id),
FOREIGN KEY (autor_id) REFERENCES Autoren(autor_id)
);
-- n:1: Bücher werden von Verlagen veröffentlicht
ALTER TABLE Buecher ADD verlag_id INT;
ALTER TABLE Buecher ADD FOREIGN KEY (verlag_id) REFERENCES Verlage(verlag_id);
-- 1:n: Kunden leihen Bücher
CREATE TABLE Ausleihen (
ausleih_id INT PRIMARY KEY,
kunden_id INT,
buch_id INT,
ausleihdatum DATE,
rueckgabedatum DATE,
FOREIGN KEY (kunden_id) REFERENCES Kunden(kunden_id),
FOREIGN KEY (buch_id) REFERENCES Buecher(buch_id)
);
ER-Notationen im Vergleich
Chen-Notation
[ KUNDE ] ---< bestellt >--- [ PRODUKT ]
| |
|1 |n
| |
[ADRESSE] [KATEGORIE]
Crow’s Foot Notation
KUNDE ||--o{ BESTELLPOSITION } ||--| PRODUKT
| |
| |
ADRESSE KATEGORIE
Kardinalitäts-Symbole
|: Genau einsO: Null oder eins}: Null oder mehr|{: Genau eins oder mehr
Attribute-Typen
Einfache Attribute
name VARCHAR(100) -- Einfach
preis DECIMAL(10,2) -- Einfach
datum DATE -- Einfach
Zusammengesetzte Attribute
-- Adresse als zusammengesetztes Attribut
strasse VARCHAR(100),
hausnummer VARCHAR(10),
plz VARCHAR(5),
ort VARCHAR(100)
Abgeleitete Attribute
-- Berechnete Werte
alter INT AS (YEAR(CURRENT_DATE) - YEAR(geburtsdatum)),
gesamtpreis DECIMAL(10,2) AS (menge * einzelpreis)
Multivalued Attributes
-- Mehrere Werte pro Entität
CREATE TABLE Telefonnummern (
kunden_id INT,
telefonnummer VARCHAR(20),
PRIMARY KEY (kunden_id, telefonnummer),
FOREIGN KEY (kunden_id) REFERENCES Kunden(kunden_id)
);
Vorteile und Nachteile
Vorteile von ER-Modellen
- Visualisierung: Intuitive Darstellung komplexer Datenstrukturen
- Kommunikation: Gemeinsame Sprache für Fachexperten und Entwickler
- Dokumentation: Gute Dokumentation der Datenbankstruktur
- Planung: Grundlage für Datenbankimplementierung
- Qualität: Frühzeitige Erkennung von Designfehlern
Nachteile
- Komplexität: Bei sehr großen Systemen unübersichtlich
- Abstraktion: Details der Implementierung nicht sichtbar
- Wartung: Änderungen erfordern Anpassung des Modells
- Lernkurve: Erfordert Verständnis der Notationen
Häufige Prüfungsfragen
-
Was ist der Unterschied zwischen 1:n und n:m Beziehungen? 1:n: Ein Datensatz links kann viele Datensätze rechts haben. n:m: Viele Datensätze links können viele Datensätze rechts haben (erfordert Junction Table).
-
Wann benötigt man eine Junction Table? Für n:m Beziehungen, da Datenbanken keine direkten n:m Beziehungen unterstützen.
-
Was sind schwache Entitäten? Entitäten ohne eigenen Primärschlüssel, die von anderen Entitäten abhängig sind.
-
Erklären Sie die Chen-Notation! Rechtecke für Entities, Rauten für Relationships, Ovale für Attribute.
Wichtigste Quellen
- https://de.wikipedia.org/wiki/Entity-Relationship-Modell
- https://www.gatech.edu/coe/cse/er-diagrams
- https://www.lucidchart.com/pages/er-diagrams