Tag 2 · Block 1 · BK1 · Datenmodell ableiten (20–30 % der LBV)

Datenmodell Kursverwaltung

Das Wichtigste

📖 Lies zuerst im Handout: Handout Tag 2 · Block 1 · Inhalt und Abb. 1.1. Die Aufgaben prüfen, ob du es verstanden hast – nicht, ob du es findest.

Teil 1 · Verstehen

1

Beziehungen erkennen

Bestimme für jeden Satz die Beziehung und wo der Fremdschlüssel steht.

📖 Nachlesen: Handout Tag 2 · Block 1 · Inhalt (1:n und n:m), Abb. 1.1

BeziehungFremdschlüssel
Ein Dozent unterrichtet mehrere Kurse, jeder Kurs hat genau einen Dozenten.
Ein Lehrbetrieb liegt in einem Land, in einem Land gibt es viele Lehrbetriebe.
Lernende besuchen mehrere Kurse, ein Kurs hat mehrere Lernende.
Ein Lehrbetrieb hat mehrere Lernende, Lernende können den Lehrbetrieb wechseln.
2

Spalten den Tabellen zuordnen

In welche Tabelle gehört die Spalte? Überlege zuerst, dann vergleiche mit db/schema.sql.

📖 Nachlesen: Handout Tag 2 · Block 1 · Inhalt; `db/schema.sql` (Download Tag 2)

  • land_id
  • geburtsdatum
  • eintrittsjahr
  • max_teilnehmer
  • fachgebiet
  • plz und ort
  • eingeschrieben_am
  • code (z. B. CH, DE)
  • dozent_id
3

Primärschlüssel einer Verknüpfungstabelle

Welchen Primärschlüssel hat kurse_lernende?

📖 Nachlesen: Handout Tag 2 · Block 1 · Abb. 1.1

4

Reihenfolge beim Einfügen

Bring die Tabellen in eine Reihenfolge, in der die Seed-Daten ohne FK-Fehler eingefügt werden können.

📖 Nachlesen: Handout Tag 2 · Block 1 · Inhalt («Eltern-Tabellen vor Kind-Tabellen»)

  1. 1.lehrbetriebe
  2. 2.kurse
  3. 3.lehrbetrieb_lernende
  4. 4.benutzer
  5. 5.lernende
  6. 6.dozenten
  7. 7.kurse_lernende
  8. 8.laender
5

Referenzielle Integrität

Es gibt nur Dozenten mit den IDs 1–4. Was passiert bei diesem INSERT?

INSERT INTO kurse (titel, startdatum, enddatum, dozent_id)
VALUES ('Test', '2026-11-02', '2026-11-06', 99);

📖 Nachlesen: Handout Tag 2 · Block 1 · Inhalt (Fremdschlüssel)

6

Prüfabfrage ergänzen

Diese Abfrage aus Lab 2.1 zeigt alle Kurstitel mit dem Vornamen des Dozenten. Ergänze die JOIN-Bedingung.

SELECT k.titel, d.vorname
FROM kurse k
JOIN dozenten d ON k.______ = d.______;

📖 Nachlesen: Handout Tag 2 · Block 1 · Akzeptanzkriterien

7

Umlaute

Die API zeigt «M??ller» statt «Müller». Was ist die wahrscheinlichste Ursache?

📖 Nachlesen: Handout Tag 2 · Block 1 · Inhalt (Zeichenkodierung)

Teil 2 · In deinem Projekt

Lab 2.1 – Datenbank aufsetzen

Erst wenn Teil 1 erledigt ist. Dann hast du alles, was du dafür brauchst.

Arbeite allein in deinem eigenen Projekt. Der Walkthrough im Handout ist deine Notfall-Hilfe – versuch es zuerst ohne.

Die Dateien schema.sql und seed.sql bekommst du als Download (tag2-sql.zip). Kopiere sie nach db/ in deinem Projekt.

  1. Öffne phpMyAdmin (Starter-Projekt: http://localhost:8081).
  2. Erstelle die Datenbank kursverwaltung mit utf8mb4_unicode_ci.
  3. Importiere db/schema.sql über den Tab «Importieren».
  4. Importiere db/seed.sql – achte auf die INSERT-Reihenfolge.
  5. Führe drei Prüfabfragen aus und notiere die Ergebnisse.

Akzeptanzkriterien – hake ab, was bei dir läuft

Zum Schluss: committen und pushen

git add .
git commit -m "feat: Datenbankschema und Seed-Daten (Lab 2.1)"
git push