Coding Garden
Anmelden

Beziehungen verstehen

Du hast gelernt, wie du Entities erkennst und Attribute definierst. Aber Entities existieren nicht isoliert – sie stehen miteinander in Beziehung. Ein Kunde bestellt Bücher. Ein Autor schreibt Bücher. In diesem Artikel lernst du, wie du Beziehungen zwischen Entities erkennst und modellierst.

Was ist eine Beziehung?

Eine Beziehung (englisch: Relationship) beschreibt, wie zwei Entities miteinander verbunden sind.

Beziehungen beantworten Fragen wie:

  • Welcher Kunde hat welche Bestellung aufgegeben?
  • Welches Buch wurde von welchem Autor geschrieben?
  • Welches Mitglied hat welches Buch ausgeliehen?
Note
In relationalen Datenbanken werden Beziehungen über Primärschlüssel und Fremdschlüssel hergestellt.

Wie erkenne ich Beziehungen?

Beziehungen verstecken sich oft in Verben deiner Problemstellung:

Beispiel: Online-Buchladen

"Ein Kunde bestellt Bücher. Ein Autor schreibt Bücher. Ein Buch gehört zu einem Genre."

Die Verben zeigen die Beziehungen:

  • Kunde bestellt Buch → Beziehung zwischen Kunde und Buch
  • Autor schreibt Buch → Beziehung zwischen Autor und Buch
  • Buch gehört zu Genre → Beziehung zwischen Buch und Genre
Tip
Frage dich: "Wie hängen meine Entities zusammen?" Zeichne gedanklich Pfeile zwischen den Entities.

Die drei Arten von Beziehungen

Es gibt drei grundlegende Beziehungstypen. Sie unterscheiden sich darin, wie viele Datensätze auf beiden Seiten beteiligt sein können.

1:1 Beziehung (Eins-zu-Eins)

Ein Datensatz der Entity A gehört zu genau einem Datensatz der Entity B – und umgekehrt.

Beispiel: Person und Reisepass

  • Eine Person hat genau einen Reisepass
  • Ein Reisepass gehört zu genau einer Person

Das ist eine 1:1 Beziehung.

Weitere Beispiele

  • Land ↔ Hauptstadt
  • Mitarbeiter ↔ Mitarbeiter-Ausweis
  • Benutzer ↔ Profil
Note
1:1 Beziehungen sind relativ selten. Oft könnten die Attribute auch in einer einzigen Tabelle stehen. Man trennt sie meist aus organisatorischen Gründen (z.B. sensible Daten in separater Tabelle).

1:n Beziehung (Eins-zu-Viele)

Ein Datensatz der Entity A kann zu vielen Datensätzen der Entity B gehören. Aber ein Datensatz von B gehört nur zu einem Datensatz von A.

Beispiel: Kunde und Bestellung

  • Ein Kunde kann viele Bestellungen haben
  • Eine Bestellung gehört zu genau einem Kunden

Das ist eine 1:n Beziehung (gelesen: Eins-zu-n, wobei n für "viele" steht).

Visualisierung

Kunde 1 → Bestellung 1, Bestellung 2, Bestellung 3

Kunde 2 → Bestellung 4, Bestellung 5

Ein Kunde hat mehrere Bestellungen, aber jede Bestellung gehört nur zu einem Kunden.

Weitere Beispiele

  • Autor → Bücher (ein Autor schreibt viele Bücher)
  • Kategorie → Produkte (eine Kategorie enthält viele Produkte)
  • Lehrer → Schüler (ein Lehrer unterrichtet viele Schüler)
  • Ordner → Dateien (ein Ordner enthält viele Dateien)
Important
1:n ist die häufigste Beziehungsart in Datenbanken. Die meisten Beziehungen fallen in diese Kategorie.

n:m Beziehung (Viele-zu-Viele)

Ein Datensatz der Entity A kann zu vielen Datensätzen der Entity B gehören – und umgekehrt.

Beispiel: Student und Kurs

  • Ein Student belegt viele Kurse
  • Ein Kurs wird von vielen Studenten belegt

Das ist eine n:m Beziehung (gelesen: n-zu-m oder Viele-zu-Viele).

Visualisierung

Student 1 → Kurs A, Kurs B, Kurs C

Student 2 → Kurs A, Kurs D

Kurs A → Student 1, Student 2, Student 3

Beide Seiten können mehrere Verbindungen haben.

Weitere Beispiele

  • Buch ↔ Autor (ein Buch kann mehrere Autoren haben, ein Autor kann mehrere Bücher schreiben)
  • Produkt ↔ Bestellung (eine Bestellung enthält mehrere Produkte, ein Produkt kann in vielen Bestellungen sein)
  • Schauspieler ↔ Film (ein Schauspieler spielt in vielen Filmen, ein Film hat viele Schauspieler)
  • Hashtag ↔ Beitrag (ein Beitrag hat mehrere Hashtags, ein Hashtag wird in vielen Beiträgen verwendet)

Wie modelliert man n:m Beziehungen?

n:m Beziehungen können nicht direkt in einer relationalen Datenbank abgebildet werden. Du brauchst eine Zwischentabelle (auch Verbindungstabelle oder Junction Table genannt).

Beispiel: Bücher und Autoren

Ohne Zwischentabelle würdest du das Problem haben:

  • Wo speicherst du bei einem Buch mehrere Autoren?
  • In einem Textfeld "Autor1, Autor2, Autor3"? (Schlecht!)

Lösung: Zwischentabelle

Du erstellst drei Tabellen:

Tabelle 1: Bücher

BuchIDTitel
1Design Patterns
2Clean Code

Tabelle 2: Autoren

AutorIDName
1Erich Gamma
2Richard Helm
3Robert C. Martin

Tabelle 3: Buch_Autor (Zwischentabelle)

BuchIDAutorID
11
12
23

Die Zwischentabelle speichert nur IDs. Sie sagt:

  • Buch 1 (Design Patterns) wurde von Autor 1 (Erich Gamma) geschrieben
  • Buch 1 (Design Patterns) wurde von Autor 2 (Richard Helm) geschrieben
  • Buch 2 (Clean Code) wurde von Autor 3 (Robert C. Martin) geschrieben
Important
Die Zwischentabelle verwandelt eine n:m Beziehung in zwei 1:n Beziehungen: Buch → Buch_Autor (1:n) und Autor → Buch_Autor (1:n).

Beziehungen im Bibliotheks-Beispiel

Schauen wir uns unser Bibliotheks-Beispiel an und identifizieren alle Beziehungen:

1. Autor → Buch (1:n)

  • Ein Autor schreibt viele Bücher
  • Ein Buch hat einen Autor (vereinfacht)

Umsetzung: BuchID in der Bücher-Tabelle als Fremdschlüssel zu AutorID

2. Genre → Buch (1:n)

  • Ein Genre umfasst viele Bücher
  • Ein Buch gehört zu einem Genre

Umsetzung: GenreID in der Bücher-Tabelle als Fremdschlüssel

3. Mitglied ↔ Buch über Ausleihe (n:m)

  • Ein Mitglied kann viele Bücher ausleihen (über Zeit)
  • Ein Buch kann von vielen Mitgliedern ausgeliehen werden (über Zeit)

Umsetzung: Die Tabelle Ausleihe ist die Zwischentabelle mit MitgliedsID und BuchID als Fremdschlüssel

Tip
Die Ausleihe-Tabelle ist nicht nur eine Zwischentabelle – sie hat auch eigene Attribute (Ausleihdatum, Rückgabedatum). Solche Zwischentabellen mit zusätzlichen Attributen nennt man assoziative Entities.

Praktisches Beispiel: E-Commerce

Analysieren wir die Beziehungen in einem Online-Shop:

Entities

  • Kunde
  • Bestellung
  • Produkt
  • Kategorie

Beziehung 1: Kunde → Bestellung (1:n)

  • Ein Kunde kann viele Bestellungen aufgeben
  • Eine Bestellung gehört zu genau einem Kunden

Typ: 1:n

Beziehung 2: Kategorie → Produkt (1:n)

  • Eine Kategorie enthält viele Produkte
  • Ein Produkt gehört zu einer Kategorie

Typ: 1:n

Beziehung 3: Bestellung ↔ Produkt (n:m)

  • Eine Bestellung enthält viele Produkte
  • Ein Produkt kann in vielen Bestellungen vorkommen

Typ: n:m

Lösung: Zwischentabelle Bestellpositionen

Diese Tabelle enthält:

  • BestellungID (Fremdschlüssel)
  • ProduktID (Fremdschlüssel)
  • Menge (wie viele Stück?)
  • Einzelpreis (Preis zum Zeitpunkt der Bestellung)

Übung: Schule

Identifiziere die Beziehungen und ihre Typen:

Entities:

  • Schüler
  • Lehrer
  • Kurs
  • Raum

Fragen:

  1. Welche Beziehung besteht zwischen Schüler und Kurs?
  2. Welche Beziehung besteht zwischen Lehrer und Kurs?
  3. Welche Beziehung besteht zwischen Kurs und Raum?

Überlege selbst, bevor du weiterliest.

Lösung

1. Schüler ↔ Kurs: n:m

  • Ein Schüler belegt viele Kurse
  • Ein Kurs wird von vielen Schülern besucht
  • Lösung: Zwischentabelle "Teilnahme" oder "Einschreibung"

2. Lehrer → Kurs: 1:n

  • Ein Lehrer unterrichtet viele Kurse
  • Ein Kurs wird von einem Lehrer unterrichtet (vereinfacht)
  • Lösung: LehrerID als Fremdschlüssel in der Kurs-Tabelle

3. Kurs → Raum: 1:n (oder n:m)

  • Option 1 (vereinfacht): Ein Kurs findet in einem festen Raum statt → 1:n (Raum → Kurs)
  • Option 2 (realistisch): Ein Kurs kann in verschiedenen Räumen stattfinden, ein Raum wird von verschiedenen Kursen genutzt → n:m mit Zwischentabelle "Stundenplan"

Beziehungstypen bestimmen

So entscheidest du, welcher Beziehungstyp vorliegt:

Methode: Frage in beide Richtungen

Stelle dir für beide Entities die Frage: "Wie viele können zugeordnet sein?"

Beispiel: Kunde und Bestellung

  • Frage 1: Wie viele Bestellungen kann ein Kunde haben? → Viele
  • Frage 2: Wie viele Kunden kann eine Bestellung haben? → Einen

Antwort: Viele zu Einen = 1:n

Entscheidungshilfe
Richtung 1Richtung 2Beziehungstyp
EinerEiner1:1
EinerViele1:n
VieleEiner1:n
VieleVielen:m

Zusammenfassung

Beziehungen verbinden Entities miteinander:

  • Beziehungen beschreiben, wie Entities zusammenhängen
  • Erkenne Beziehungen durch Verben in der Problemstellung
  • 1:1 - Einer zu Einer (selten)
  • 1:n - Einer zu Viele (am häufigsten)
  • n:m - Viele zu Viele (benötigt Zwischentabelle)
  • n:m Beziehungen werden mit Zwischentabellen umgesetzt
  • Frage in beide Richtungen: "Wie viele können zugeordnet sein?"

Im nächsten Artikel lernst du, wie du all das visuell darstellst: mit ER-Diagrammen (Entity-Relationship-Diagrammen).