# Seite 3. ERM – Entity-Relationship-Modell

**ERM – Entity-Relationship-Modell**

Diese Seite erklärt das **ERM** so, dass du es schnell für IHK-Aufgaben anwenden kannst.

ERM bedeutet:

**Entity-Relationship-Modell**

Auf Deutsch:

**Entitäten-Beziehungs-Modell**

Ein ERM wird benutzt, um **Daten und deren Beziehungen** zu planen, bevor daraus später Tabellen in einer Datenbank entstehen.

---

**Grafik 1: ERM-Grundlagen im Überblick**

![ERM – Grundlagen](https://trainer.ulrich-wiki.com/assets/erm-grundlagen.svg)

Diese Grafik zeigt dir die wichtigsten Bausteine des ERM auf einen Blick:

- **Entität**
- **Attribut**
- **Beziehung**
- **Kardinalität**
- die wichtigsten **Kardinalitäten 1:1, 1:n und n:m**
- typische **Signalwörter**, an denen du in einer IHK-Aufgabe erkennst, dass ein ERM gemeint ist

---

**Wofür braucht man ein ERM?**

Ein ERM hilft dir, aus einer fachlichen Beschreibung ein Datenmodell zu bauen.

Beispiel:

```text
Ein Kunde kann mehrere Bestellungen aufgeben.
Eine Bestellung gehört immer zu genau einem Kunden.
Eine Bestellung enthält mehrere Produkte.
Ein Produkt kann in mehreren Bestellungen enthalten sein.
```

Daraus erkennt man:

- Es gibt Datenobjekte.
- Diese Datenobjekte haben Eigenschaften.
- Diese Datenobjekte stehen miteinander in Beziehung.
- Manche Beziehungen haben bestimmte Anzahlen, zum Beispiel **1:n** oder **n:m**.

Genau dafür ist ein ERM da.

---

**Woran erkenne ich in einer Aufgabe, dass ein ERM gemeint ist?**

Typische Signalwörter:

| Signalwort / Formulierung | Hinweis |
|---|---|
| Entität | Es geht um ein Datenobjekt |
| Attribut | Es geht um Eigenschaften |
| Beziehung | Es geht um Verknüpfungen zwischen Datenobjekten |
| Kardinalität | Es geht um 1:1, 1:n oder n:m |
| Kunde, Bestellung, Produkt | Typische Entitäten |
| „kann mehrere haben“ | Hinweis auf 1:n oder n:m |
| „gehört zu genau einem“ | Hinweis auf 1:n |
| „Datenmodell erstellen“ | ERM oder relationales Modell |
| „fachlich modellieren“ | Meist zuerst ERM |

---

**Grundbausteine eines ERM**

| Baustein | Bedeutung | Beispiel |
|---|---|---|
| **Entität** | Wichtiges Datenobjekt | Kunde, Produkt, Bestellung |
| **Attribut** | Eigenschaft einer Entität | Name, Preis, Datum |
| **Beziehung** | Verbindung zwischen Entitäten | Kunde gibt Bestellung auf |
| **Kardinalität** | Anzahl-Beziehung | 1:1, 1:n, n:m |
| **Primärschlüssel** | Eindeutige ID | kunden_id |
| **Zwischentabelle** | Auflösung einer n:m-Beziehung | Bestellposition |

---

**Entität**

Eine **Entität** ist ein wichtiges Datenobjekt, über das Informationen gespeichert werden sollen.

Beispiele:

- Kunde
- Bestellung
- Produkt
- Rechnung
- Mitarbeiter
- Kurs
- Raum
- Gerät

Merksatz:

**Entitäten sind meistens Hauptwörter.**

Beispiel:

```text
Ein Kunde bestellt ein Produkt.
```

Mögliche Entitäten:

```text
Kunde
Produkt
Bestellung
```

---

**Attribut**

Ein **Attribut** ist eine Eigenschaft einer Entität.

Beispiel Entität **Kunde**:

| Attribut | Bedeutung |
|---|---|
| kunden_id | eindeutige Kundennummer |
| vorname | Vorname |
| nachname | Nachname |
| email | E-Mail-Adresse |
| telefon | Telefonnummer |

Beispiel Entität **Produkt**:

| Attribut | Bedeutung |
|---|---|
| produkt_id | eindeutige Produktnummer |
| bezeichnung | Name des Produkts |
| preis | Preis |
| lagerbestand | Anzahl im Lager |

Merksatz:

**Attribute beschreiben eine Entität genauer.**

---

**Primärschlüssel**

Ein **Primärschlüssel** identifiziert jeden Datensatz eindeutig.

Beispiele:

```text
kunden_id
produkt_id
bestellung_id
```

Warum braucht man Primärschlüssel?

Weil Namen nicht eindeutig sein müssen.

Beispiel:

```text
Es kann mehrere Kunden mit dem Namen Müller geben.
```

Aber:

```text
kunden_id = 1001
```

ist eindeutig.

Merksatz:

**Jede Entität braucht einen eindeutigen Primärschlüssel.**

---

**Beziehung**

Eine Beziehung beschreibt, wie zwei Entitäten zusammenhängen.

Beispiel:

```text
Kunde gibt Bestellung auf
```

Entitäten:

```text
Kunde
Bestellung
```

Beziehung:

```text
gibt auf
```

Darstellung als einfache Textform:

```text
Kunde -- gibt auf -- Bestellung
```

Weitere Beispiele:

| Beziehung | Bedeutung |
|---|---|
| Kunde gibt Bestellung auf | Kunde und Bestellung hängen zusammen |
| Bestellung enthält Produkt | Eine Bestellung besteht aus Produkten |
| Mitarbeiter arbeitet in Abteilung | Mitarbeiter ist einer Abteilung zugeordnet |
| Schüler belegt Kurs | Schüler nimmt an einem Kurs teil |

---

**Kardinalität**

Die **Kardinalität** beschreibt, wie viele Datensätze miteinander verbunden sein können.

Die wichtigsten Kardinalitäten:

| Kardinalität | Bedeutung | Beispiel |
|---|---|---|
| **1:1** | Genau ein Datensatz gehört zu genau einem anderen | Person hat Personalausweis |
| **1:n** | Ein Datensatz kann mehrere andere Datensätze haben | Kunde hat mehrere Bestellungen |
| **n:m** | Viele Datensätze können mit vielen anderen verbunden sein | Schüler belegen Kurse |

---

**Grafik 2: ERM-Beispiel mit Kunde, Bestellung, Produkt und Bestellposition**

![ERM – Kunde Bestellung Produkt](https://trainer.ulrich-wiki.com/assets/erm-beispiel-bestellung.svg)

Diese Grafik zeigt ein typisches vollständiges ERM-Beispiel:

- **Kunde** gibt **Bestellung** auf → **1:n**
- **Bestellung** enthält **Produkt** → fachlich **n:m**
- Die n:m-Beziehung wird durch **Bestellposition** aufgelöst
- Dadurch entstehen später sauberere Tabellen für die Datenbank

---

**1:1-Beziehung**

Beispiel:

```text
Eine Person hat genau einen Personalausweis.
Ein Personalausweis gehört genau zu einer Person.
```

Darstellung:

```text
Person 1 --- 1 Personalausweis
```

Das ist eine **1:1-Beziehung**.

---

**1:n-Beziehung**

Beispiel:

```text
Ein Kunde kann mehrere Bestellungen haben.
Eine Bestellung gehört genau zu einem Kunden.
```

Darstellung:

```text
Kunde 1 --- n Bestellung
```

Das ist eine **1:n-Beziehung**.

Merksatz:

**Wenn ein Objekt mehrere andere haben kann, ist es meistens 1:n.**

---

**n:m-Beziehung**

Beispiel:

```text
Eine Bestellung kann mehrere Produkte enthalten.
Ein Produkt kann in mehreren Bestellungen vorkommen.
```

Darstellung:

```text
Bestellung n --- m Produkt
```

Das ist eine **n:m-Beziehung**.

Wichtig:

Eine n:m-Beziehung kann man in einer relationalen Datenbank nicht direkt einfach speichern.

Deshalb wird daraus später eine **Zwischentabelle**.

Beispiel:

```text
Bestellung
Produkt
Bestellposition
```

Die Zwischentabelle könnte heißen:

```text
Bestellposition
```

Typische Attribute der Zwischentabelle:

| Attribut | Bedeutung |
|---|---|
| bestellung_id | Verweis auf Bestellung |
| produkt_id | Verweis auf Produkt |
| menge | Wie oft wurde das Produkt bestellt? |
| einzelpreis | Preis zum Zeitpunkt der Bestellung |

---

**ERM-Beispiel: Kunde, Bestellung, Produkt**

Fachliche Beschreibung:

```text
Ein Kunde kann mehrere Bestellungen aufgeben.
Eine Bestellung gehört immer zu genau einem Kunden.
Eine Bestellung kann mehrere Produkte enthalten.
Ein Produkt kann in mehreren Bestellungen enthalten sein.
```

Entitäten:

| Entität | Mögliche Attribute |
|---|---|
| Kunde | kunden_id, name, email |
| Bestellung | bestellung_id, bestelldatum |
| Produkt | produkt_id, bezeichnung, preis |
| Bestellposition | bestellung_id, produkt_id, menge |

Beziehungen:

| Beziehung | Kardinalität |
|---|---|
| Kunde zu Bestellung | 1:n |
| Bestellung zu Produkt | n:m |
| Bestellung zu Bestellposition | 1:n |
| Produkt zu Bestellposition | 1:n |

Das n:m zwischen Bestellung und Produkt wird durch **Bestellposition** aufgelöst.

---

**ERM vs. relationales Datenbankmodell**

| ERM | Relationales Datenbankmodell |
|---|---|
| Fachliches Modell | Technischeres Tabellenmodell |
| Zeigt Entitäten | Zeigt Tabellen |
| Zeigt Beziehungen | Zeigt Primär- und Fremdschlüssel |
| Nutzt Kardinalitäten | Nutzt Schlüsselbeziehungen |
| Vorstufe zur Datenbank | Grundlage für echte Tabellenstruktur |

Merksatz:

**ERM plant die Daten fachlich. Das relationale Modell macht daraus Tabellen.**

---

**Vorgehensweise in der Prüfung**

Wenn du eine ERM-Aufgabe bekommst, gehe so vor:

| Schritt | Frage |
|---|---|
| 1 | Welche Hauptwörter sind wichtig? |
| 2 | Welche davon sind Entitäten? |
| 3 | Welche Eigenschaften haben diese Entitäten? |
| 4 | Welche Entität braucht welchen Primärschlüssel? |
| 5 | Welche Entitäten stehen in Beziehung? |
| 6 | Welche Kardinalität hat die Beziehung? |
| 7 | Gibt es eine n:m-Beziehung? |
| 8 | Muss eine Zwischentabelle entstehen? |

---

**Typische IHK-Fehler beim ERM**

| Fehler | Warum falsch? |
|---|---|
| Attribute als Entität darstellen | Nicht jede Eigenschaft ist eine eigene Entität |
| n:m nicht auflösen | In Tabellen braucht man später eine Zwischentabelle |
| Primärschlüssel vergessen | Jeder Datensatz muss eindeutig identifizierbar sein |
| Kardinalitäten vertauschen | Die Beziehung wird fachlich falsch |
| Beziehung zu technisch denken | ERM ist zuerst fachlich, nicht direkt SQL |
| Fremdschlüssel schon zu früh überbewerten | Im ERM geht es zuerst um Entitäten und Beziehungen |

---

**Prüfungs-Merksätze**

```text
Entität = wichtiges Datenobjekt
Attribut = Eigenschaft einer Entität
Beziehung = Verbindung zwischen Entitäten
Kardinalität = Wie viele gehören zusammen?
1:n = einer zu vielen
n:m = viele zu vielen
n:m braucht später eine Zwischentabelle
Primärschlüssel = eindeutig
ERM = fachliches Datenmodell
Relationales Modell = Tabellenmodell
```

---

**Mini-Testfragen**

<details>
<summary><strong>1. Was bedeutet ERM?</strong></summary>

**Entity-Relationship-Modell**

Auf Deutsch: Entitäten-Beziehungs-Modell.

</details>

<details>
<summary><strong>2. Wofür wird ein ERM verwendet?</strong></summary>

Ein ERM wird verwendet, um Datenobjekte, deren Eigenschaften und deren Beziehungen fachlich zu modellieren.

</details>

<details>
<summary><strong>3. Was ist eine Entität?</strong></summary>

Eine Entität ist ein wichtiges Datenobjekt, über das Informationen gespeichert werden sollen.

Beispiele:

- Kunde
- Bestellung
- Produkt
- Mitarbeiter

</details>

<details>
<summary><strong>4. Was ist ein Attribut?</strong></summary>

Ein Attribut ist eine Eigenschaft einer Entität.

Beispiel:

```text
Kunde
- kunden_id
- name
- email
```

</details>

<details>
<summary><strong>5. Was ist eine n:m-Beziehung?</strong></summary>

Viele Datensätze der einen Entität können mit vielen Datensätzen der anderen Entität verbunden sein.

Beispiel:

```text
Eine Bestellung kann mehrere Produkte enthalten.
Ein Produkt kann in mehreren Bestellungen vorkommen.
```

</details>

<details>
<summary><strong>6. Was muss man bei einer n:m-Beziehung später machen?</strong></summary>

Man löst sie meistens über eine Zwischentabelle auf.

Beispiel:

```text
Bestellung n:m Produkt
```

wird zu:

```text
Bestellung 1:n Bestellposition n:1 Produkt
```

</details>

---

**Nächste Seite**

Danach kommt die eigene Trainer-Seite:

```text
ERM-Trainer
```

Dort bauen wir den interaktiven ERM-Trainer mit Aufgaben zu:

```text
Entität erkennen
Attribute zuordnen
Beziehung bestimmen
Kardinalität wählen
n:m-Zwischentabelle erkennen
```