# Seite 6 Relationales-Datenbankmodell-Trainer

Dieser interaktive Trainer gehört zur Theorie-Seite:

```text
Relationales Datenbankmodell
```

Hier übst du, aus kurzen Aufgabenstellungen ein relationales Datenbankmodell abzuleiten.

Im Fokus stehen:

```text
Tabellen
Primärschlüssel
Fremdschlüssel
1:n-Beziehungen
n:m-Beziehungen
Zwischentabellen
```

---

**Was wird trainiert?**

| Bereich | Bedeutung |
|---|---|
| **Tabellen ableiten** | Entitäten aus dem ERM werden Tabellen |
| **Primärschlüssel bestimmen** | Jede Tabelle braucht eine eindeutige ID |
| **Fremdschlüssel platzieren** | Bei 1:n steht der Fremdschlüssel auf der n-Seite |
| **Beziehungen erkennen** | 1:1, 1:n, n:1 oder n:m |
| **Zwischentabelle erkennen** | n:m-Beziehungen werden über eine Zwischentabelle gelöst |
| **IHK-typische Aufgaben lösen** | Fachliche Beschreibung in Tabellenstruktur umwandeln |

---

**Interaktiver Relationales-Datenbankmodell-Trainer**

<iframe
  src="https://trainer.ulrich-wiki.com/relationales-datenbankmodell-trainer.html?v=1"
  width="100%"
  height="1500"
  style="border:1px solid #444; border-radius:12px;">
</iframe>

<div style="margin:16px 0;">
  <a
    href="https://trainer.ulrich-wiki.com/relationales-datenbankmodell-trainer.html?v=1"
    target="_blank"
    rel="noopener"
    style="
      display:inline-block;
      padding:12px 18px;
      background:#2563eb;
      color:white;
      font-weight:bold;
      text-decoration:none;
      border-radius:10px;
      border:1px solid #1d4ed8;
    ">
    Relationales-Datenbankmodell-Trainer im Vollbild öffnen
  </a>
</div>

---

**Merksatz für den Trainer**

```text
Entität im ERM      → Tabelle im relationalen Modell
Attribut im ERM     → Spalte in der Tabelle
Primärschlüssel     → eindeutige ID einer Tabelle
Fremdschlüssel      → Verweis auf eine andere Tabelle
1:n-Beziehung       → Fremdschlüssel auf der n-Seite
n:m-Beziehung       → Zwischentabelle mit Fremdschlüsseln
```

---

**Beispiel 1: 1:n-Beziehung**

Aufgabenstellung:

```text
Ein Kunde kann mehrere Bestellungen aufgeben.
Eine Bestellung gehört genau zu einem Kunden.
```

Relationales Modell:

```text
Kunde(kunden_id PK, name, email)

Bestellung(bestellung_id PK, bestelldatum, kunden_id FK)
```

Warum?

```text
Kunde 1:n Bestellung
```

Der Fremdschlüssel steht auf der n-Seite.

Also steht:

```text
kunden_id
```

in der Tabelle:

```text
Bestellung
```

---

**Beispiel 2: n:m-Beziehung**

Aufgabenstellung:

```text
Ein Schüler kann mehrere Kurse belegen.
Ein Kurs kann von mehreren Schülern belegt werden.
```

Relationales Modell:

```text
Schüler(schueler_id PK, vorname, nachname)

Kurs(kurs_id PK, kursname)

Belegung(schueler_id FK, kurs_id FK, anmeldedatum)
```

Warum?

```text
Schüler n:m Kurs
```

Eine n:m-Beziehung braucht eine Zwischentabelle.

Hier heißt sie:

```text
Belegung
```

---

**Beispiel 3: Bestellung und Produkt**

Aufgabenstellung:

```text
Eine Bestellung kann mehrere Produkte enthalten.
Ein Produkt kann in mehreren Bestellungen vorkommen.
```

Relationales Modell:

```text
Bestellung(bestellung_id PK, bestelldatum)

Produkt(produkt_id PK, bezeichnung, preis)

Bestellposition(bestellung_id FK, produkt_id FK, menge)
```

Warum?

```text
Bestellung n:m Produkt
```

Die Zwischentabelle **Bestellposition** löst die n:m-Beziehung auf.

Zusätzlich kann dort gespeichert werden:

```text
menge
einzelpreis
rabatt
```

---

**Typische Fehler im Trainer**

| Fehler | Warum falsch? |
|---|---|
| Fremdschlüssel auf der falschen Seite | Bei 1:n muss der FK auf die n-Seite |
| n:m ohne Zwischentabelle | n:m braucht im relationalen Modell eine eigene Tabelle |
| Primärschlüssel vergessen | Datensätze sind nicht eindeutig |
| Zwischentabelle ohne beide Fremdschlüssel | Verbindung ist nicht vollständig |
| Attribute doppelt speichern | führt zu Redundanz |
| Tabelle und Entität verwechseln | ERM ist fachlich, relationales Modell ist tabellarisch |

---

**Mini-Testfragen**

<details>
<summary><strong>1. Was wird aus einer Entität im relationalen Modell?</strong></summary>

Aus einer Entität wird meistens eine **Tabelle**.

Beispiel:

```text
Entität Kunde
```

wird zu:

```text
Tabelle Kunde
```

</details>

<details>
<summary><strong>2. Was wird aus einem Attribut im relationalen Modell?</strong></summary>

Aus einem Attribut wird meistens eine **Spalte**.

Beispiel:

```text
Attribut name
```

wird zu:

```text
Spalte name
```

</details>

<details>
<summary><strong>3. Was ist ein Primärschlüssel?</strong></summary>

Ein Primärschlüssel identifiziert jeden Datensatz eindeutig.

Beispiel:

```text
kunden_id
produkt_id
bestellung_id
```

</details>

<details>
<summary><strong>4. Was ist ein Fremdschlüssel?</strong></summary>

Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle.

Beispiel:

```text
Bestellung.kunden_id verweist auf Kunde.kunden_id
```

</details>

<details>
<summary><strong>5. Wo steht der Fremdschlüssel bei einer 1:n-Beziehung?</strong></summary>

Der Fremdschlüssel steht auf der **n-Seite**.

Beispiel:

```text
Kunde 1:n Bestellung
```

Dann steht:

```text
kunden_id
```

in der Tabelle:

```text
Bestellung
```

</details>

<details>
<summary><strong>6. Was braucht man bei einer n:m-Beziehung?</strong></summary>

Eine n:m-Beziehung braucht eine **Zwischentabelle**.

Beispiel:

```text
Schüler n:m Kurs
```

wird zu:

```text
Schüler 1:n Belegung n:1 Kurs
```

</details>

<details>
<summary><strong>7. Welche Fremdschlüssel enthält die Zwischentabelle bei Schüler und Kurs?</strong></summary>

Die Zwischentabelle enthält mindestens:

```text
schueler_id FK
kurs_id FK
```

Beispiel:

```text
Belegung(schueler_id FK, kurs_id FK, anmeldedatum)
```

</details>

<details>
<summary><strong>8. Warum ist Bestellposition eine sinnvolle Zwischentabelle?</strong></summary>

Weil eine Bestellung mehrere Produkte enthalten kann und ein Produkt in mehreren Bestellungen vorkommen kann.

Außerdem kann die Tabelle **Bestellposition** Zusatzinformationen speichern:

```text
menge
einzelpreis
rabatt
```

</details>

<details>
<summary><strong>9. Was ist ein zusammengesetzter Primärschlüssel?</strong></summary>

Ein zusammengesetzter Primärschlüssel besteht aus mehreren Spalten.

Beispiel:

```text
Belegung(schueler_id, kurs_id)
```

Zusammen können beide Werte einen Datensatz eindeutig machen.

</details>

<details>
<summary><strong>10. Was ist der häufigste Fehler bei n:m-Beziehungen?</strong></summary>

Der häufigste Fehler ist, keine Zwischentabelle zu erstellen.

Falsch:

```text
Schüler n:m Kurs direkt speichern
```

Besser:

```text
Schüler 1:n Belegung n:1 Kurs
```

</details>

---

**Nächste Seite**

Danach geht es weiter mit:

```text
UML-Klassendiagramm
```