ERM

Ein Entity-Relationship-Modell (ERM) ist ein konzeptionelles Datenbankmodell, das die Struktur und Beziehungen zwischen Daten visualisiert.

Es zeigt, welche Entitäten (Objekte/Dinge) existieren, welche Attribute (Eigenschaften) sie haben und wie sie miteinander in Beziehung stehen.

Wichtig für die Prüfung

ERM ist fundamental für:

  • Datenbankdesign und -planung
  • Visualisierung von Datenstrukturen
  • Kommunikation mit Stakeholdern
  • Grundlage für relationale Datenbanken

Wofür wird ERM verwendet?

Das ERM dient zur konzeptionellen Modellierung von Datenbanken vor der technischen Implementierung.

Anwendungsfälle:

Prozess:

1. Anforderungsanalyse
   ↓
2. ERM erstellen (konzeptionell)
   ↓
3. In relationales Modell überführen
   ↓
4. SQL-Datenbank implementieren

Die 3 Grundelemente des ERM

1. Entität (Entity)

Eine Entität ist ein Objekt der realen Welt, über das Informationen gespeichert werden sollen.

Symbol: Rechteck

┌─────────────┐
│   KUNDE     │
└─────────────┘

Beispiele für Entitäten:

Entitätstyp vs. Entität

  • Entitätstyp: Kategorie (z.B. "Kunde")
  • Entität: Konkrete Instanz (z.B. "Max Mustermann")

2. Attribut (Attribute)

Ein Attribut ist eine Eigenschaft oder ein Merkmal einer Entität.

Symbol: Oval, verbunden mit der Entität

     ┌────────┐
     │  Name  │
     └────┬───┘
          │
┌─────────┴────────┐
│     KUNDE        │
└─────────┬────────┘
          │
     ┌────┴────┐
     │  Alter  │
     └─────────┘

Beispiele:

Arten von Attributen

Art Beschreibung Beispiel
Einfach Kann nicht weiter zerlegt werden Alter, Preis
Zusammengesetzt Besteht aus mehreren Teilen Adresse = Straße + PLZ + Stadt
Einwertig Ein Wert pro Entität Geburtsdatum
Mehrwertig Mehrere Werte möglich Telefonnummern (privat, geschäftlich)
Abgeleitet Wird berechnet Alter (aus Geburtsdatum)

Primärschlüssel (Primary Key)

Ein Primärschlüssel ist ein Attribut, das eine Entität eindeutig identifiziert.

Symbol: Unterstrichener Name

     ┌──────────┐
     │KundenNr  │ ← Primärschlüssel (unterstrichen)
     └────┬─────┘
          │
┌─────────┴────────┐
│     KUNDE        │
└──────────────────┘
Eigenschaften eines Primärschlüssels

  • Eindeutig: Jeder Wert kommt nur einmal vor
  • Nicht NULL: Muss immer einen Wert haben
  • Unveränderlich: Sollte sich nicht ändern

3. Beziehung (Relationship)

Eine Beziehung beschreibt, wie Entitäten miteinander in Verbindung stehen.

Symbol: Raute (Rhombus)

┌─────────┐       ┌─────────┐       ┌─────────┐
│ KUNDE   │───────│ bestellt│───────│ PRODUKT │
└─────────┘       └─────────┘       └─────────┘

Beispiele:


Kardinalitäten (Beziehungstypen)

Die Kardinalität gibt an, wie viele Entitäten an einer Beziehung beteiligt sein können.

1:1 (Eins-zu-Eins)

Jede Entität A ist mit genau einer Entität B verbunden.

┌─────────┐  1    ┌─────────┐  1   ┌─────────┐
│ PERSON  │───────│  hat    │──────│ AUSWEIS │
└─────────┘       └─────────┘      └─────────┘

Beispiel: Eine Person hat genau einen Personalausweis, ein Ausweis gehört zu genau einer Person.

1:N (Eins-zu-Viele)

Eine Entität A ist mit mehreren Entitäten B verbunden, aber B nur mit einer A.

┌─────────┐  1    ┌─────────┐  N   ┌─────────┐
│ABTEILUNG│───────│arbeitet │──────│MITARBEIT│
└─────────┘       │   in    │      └─────────┘
                  └─────────┘

Beispiel: Eine Abteilung hat viele Mitarbeiter, aber ein Mitarbeiter gehört zu genau einer Abteilung.

Häufigste Beziehung!

N:M (Viele-zu-Viele)

Mehrere Entitäten A sind mit mehreren Entitäten B verbunden.

┌─────────┐  N    ┌─────────┐  M   ┌─────────┐
│ STUDENT │───────│ belegt  │──────│  KURS   │
└─────────┘       └─────────┘      └─────────┘

Beispiel: Ein Student belegt mehrere Kurse, ein Kurs wird von mehreren Studenten besucht.

Wichtig

N:M-Beziehungen müssen in relationalen Datenbanken durch eine Zwischentabelle aufgelöst werden!


Visuelles Beispiel: Online-Shop

     ┌────────┐
     │KundenNr│
     └───┬────┘
         │
┌────────┴─────────┐
│     KUNDE        │
├──────────────────┤
│ Name             │
│ Email            │
│ Adresse          │
└────────┬─────────┘
         │
         │ 1
         │
    ┌────┴───────┐
    │  bestellt  │
    └────┬───────┘
         │ N
         │
┌────────┴─────────┐
│   BESTELLUNG     │
├──────────────────┤
│ BestellNr        │
│ Datum            │
│ Gesamtbetrag     │
└────────┬─────────┘
         │
         │ N
         │
    ┌────┴───────┐
    │  enthält   │
    └────┬───────┘
         │ M
         │
┌────────┴─────────┐
│    PRODUKT       │
├──────────────────┤
│ ProduktNr        │
│ Bezeichnung      │
│ Preis            │
│ Lagerbestand     │
└──────────────────┘

Beschreibung:


Erweiterte Konzepte

Schwache Entität

Eine schwache Entität kann nicht ohne eine andere Entität existieren.

Symbol: Doppelter Rahmen

┌─────────┐      ┌─────────┐      ╔═════════╗
│  BUCH   │──────│  hat    │──────║ KAPITEL ║
└─────────┘      └─────────┘      ╚═════════╝

Beispiel: Ein Kapitel kann nicht ohne ein Buch existieren.

Beziehungsattribute

Attribute, die zur Beziehung gehören, nicht zu den Entitäten.

┌─────────┐                        ┌─────────┐
│MITARBEIT│────────┐     ┌─────────│ PROJEKT │
└─────────┘        │     │         └─────────┘
                   │     │
              ┌────┴─────┴────┐
              │  arbeitet_an   │
              ├────────────────┤
              │ Stunden        │ ← Beziehungsattribut
              │ Rolle          │
              └────────────────┘

Beispiel: Ein Mitarbeiter arbeitet an einem Projekt mit einer bestimmten Stundenanzahl und Rolle.

Generalisierung / Spezialisierung (Vererbung)

Supertyp und Subtypen (wie in OOP).

        ┌─────────────┐
        │   FAHRZEUG  │ ← Supertyp
        └──────┬──────┘
               │
       ┌───────┴───────┐
       │               │
┌──────┴──────┐ ┌─────┴──────┐
│     PKW     │ │     LKW    │ ← Subtypen
└─────────────┘ └────────────┘

Beispiel: PKW und LKW erben gemeinsame Attribute von Fahrzeug (z.B. Kennzeichen, Farbe).


Überführung in relationale Datenbank

1:N Beziehung

Fremdschlüssel in der N-Seite.

ERM:

ABTEILUNG (1) ──arbeitet_in──► (N) MITARBEITER

SQL:

CREATE TABLE Abteilung (
    AbteilungsNr INT PRIMARY KEY,
    Name VARCHAR(100)
);

CREATE TABLE Mitarbeiter (
    MitarbeiterNr INT PRIMARY KEY,
    Name VARCHAR(100),
    AbteilungsNr INT,
    FOREIGN KEY (AbteilungsNr) REFERENCES Abteilung(AbteilungsNr)
);

N:M Beziehung

Zwischentabelle (Assoziationstabelle) erstellen.

ERM:

STUDENT (N) ──belegt──► (M) KURS

SQL:

CREATE TABLE Student (
    StudentNr INT PRIMARY KEY,
    Name VARCHAR(100)
);

CREATE TABLE Kurs (
    KursNr INT PRIMARY KEY,
    Bezeichnung VARCHAR(100)
);

-- Zwischentabelle
CREATE TABLE Belegung (
    StudentNr INT,
    KursNr INT,
    Semester VARCHAR(10),
    Note DECIMAL(2,1),
    PRIMARY KEY (StudentNr, KursNr),
    FOREIGN KEY (StudentNr) REFERENCES Student(StudentNr),
    FOREIGN KEY (KursNr) REFERENCES Kurs(KursNr)
);

Praktisches Beispiel: Bibliothekssystem

ERM

     ┌───────────┐
     │ BenutzerNr│
     └─────┬─────┘
           │
    ┌──────┴──────┐
    │   BENUTZER  │
    ├─────────────┤
    │ Name        │
    │ Adresse     │
    │ Email       │
    └──────┬──────┘
           │ 1
           │
      ┌────┴────┐
      │  leiht  │
      └────┬────┘
           │ N
           │
    ┌──────┴──────┐
    │   AUSLEIHE  │ ← Zwischenentität
    ├─────────────┤
    │ AusleiheNr  │
    │ AusleihDatum│
    │ RückgabeDatum│
    └──────┬──────┘
           │ N
           │
      ┌────┴────┐
      │ betrifft│
      └────┬────┘
           │ 1
           │
    ┌──────┴──────┐
    │    BUCH     │
    ├─────────────┤
    │ ISBN        │
    │ Titel       │
    │ Autor       │
    │ Verlag      │
    └─────────────┘

SQL-Implementierung

CREATE TABLE Benutzer (
    BenutzerNr INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    Adresse VARCHAR(200),
    Email VARCHAR(100)
);

CREATE TABLE Buch (
    ISBN VARCHAR(13) PRIMARY KEY,
    Titel VARCHAR(200) NOT NULL,
    Autor VARCHAR(100),
    Verlag VARCHAR(100)
);

CREATE TABLE Ausleihe (
    AusleiheNr INT PRIMARY KEY,
    BenutzerNr INT NOT NULL,
    ISBN VARCHAR(13) NOT NULL,
    AusleihDatum DATE NOT NULL,
    RueckgabeDatum DATE,
    FOREIGN KEY (BenutzerNr) REFERENCES Benutzer(BenutzerNr),
    FOREIGN KEY (ISBN) REFERENCES Buch(ISBN)
);

Chen-Notation vs. Crow's Foot Notation

Chen-Notation (klassisch)

┌─────────┐  1    ┌─────────┐  N   ┌─────────┐
│ KUNDE   │───────│bestellt │──────│BESTELLUNG│
└─────────┘       └─────────┘      └─────────┘

Crow's Foot Notation (modern)

┌─────────┐       ┌─────────────┐
│ KUNDE   │──<───│  BESTELLUNG │
└─────────┘       └─────────────┘
     │                  │
     └──────────────────┘
     Ein Kunde kann viele Bestellungen haben

Symbole:


Best Practices

Gute Praktiken

  • Klare Benennung: Verständliche Entitäts- und Attributnamen
  • Normalisierung: Redundanz vermeiden
  • Primärschlüssel: Immer eindeutig definieren
  • Dokumentation: ERM immer dokumentieren
  • Iterativ arbeiten: ERM schrittweise verfeinern

Häufige Fehler

  • ❌ Zu viele N:M-Beziehungen ohne Auflösung
  • ❌ Fehlende Primärschlüssel
  • ❌ Attribute in Beziehungen statt in Entitäten
  • ❌ Zu komplexe Diagramme (Überladen)


Zusammenfassung

Kernpunkte

  • ERM = Konzeptionelles Modell für Datenbanken
  • 3 Grundelemente: Entitäten (Rechteck), Attribute (Oval), Beziehungen (Raute)
  • Kardinalitäten: 1:1, 1:N, N:M
  • Primärschlüssel: Eindeutige Identifikation
  • N:M-Beziehungen werden durch Zwischentabellen aufgelöst
  • Grundlage für relationale Datenbanken (SQL)


Verwandte Konzepte


Weiterführende Ressourcen

📚 Dokumentation:

🔧 Tools: