DB Kurs Naechste Lektion

Lektion 02 - Relationen

Tabellen verbinden und Datenmodelle planen

In relationalen Datenbanken liegen Daten nicht in einer riesigen Tabelle, sondern in mehreren passenden Tabellen. Beziehungen verbinden diese Tabellen miteinander.

1. Warum mehrere Tabellen?

Wenn du alles in eine Tabelle schreibst, entstehen Wiederholungen, Fehler und schwere Pflege. Mehrere Tabellen sorgen fuer Ordnung: User liegen in users, Kurse in courses, Lektionen in lessons.

users
  id
  name
  email

courses
  id
  title

lessons
  id
  course_id
  title

2. Beziehung: 1:n

Eine 1:n-Beziehung bedeutet: Ein Datensatz auf der einen Seite kann zu vielen Datensaetzen auf der anderen Seite gehoeren. Beispiel: Ein Kurs hat viele Lektionen. Eine Lektion gehoert aber zu genau einem Kurs.

courses.id      ----< lessons.course_id
Dart Kurs              Variablen
Dart Kurs              Null Safety
Dart Kurs              Klassen

3. Beziehung: n:m

Eine n:m-Beziehung bedeutet: Viele Datensaetze koennen mit vielen anderen Datensaetzen verbunden sein. Beispiel: User koennen viele Kurse belegen, und ein Kurs kann viele User haben. Dafuer braucht man eine Zwischentabelle.

users
  id
  name

courses
  id
  title

course_enrollments
  user_id
  course_id

course_enrollments ist die Verbindungstabelle. Sie speichert, welcher User in welchem Kurs ist.

4. Kardinalitaeten lesen

KardinalitaetBedeutung
1:1Ein Datensatz gehoert genau zu einem anderen.
1:nEin Datensatz gehoert zu vielen anderen.
n:mViele gehoeren zu vielen, Zwischentabelle noetig.

5. Beispielmodell fuer ein Lernsystem

users
  id
  name
  email

courses
  id
  title
  topic

lessons
  id
  course_id
  title
  sort_order

tasks
  id
  lesson_id
  title
  points

task_results
  id
  user_id
  task_id
  is_done
  completed_at

Das Modell zeigt: Ein Kurs hat Lektionen, eine Lektion hat Aufgaben, User erledigen Aufgaben ueber task_results.

6. Modellierungs-Uebungen

  1. Plane Tabellen fuer eine Notizen-App mit Kategorien.
  2. Plane Tabellen fuer einen Shop mit Kunden, Produkten und Bestellungen.
  3. Erklaere, warum Bestellungen und Produkte eine n:m-Beziehung haben koennen.
  4. Erstelle eine Zwischentabelle fuer User und Kurse.
  5. Markiere in deinem Modell alle Primaer- und Fremdschluessel.
  6. Schreibe zu jeder Beziehung, ob sie 1:1, 1:n oder n:m ist.
Weiter zur Normalisierung