🎄 Weihnachtsübung: North Pole Logistics (MySQL)

Kontext

Der Weihnachtsmann möchte seine Logistik modernisieren und benötigt dafür eine Datenbank.
In dieser Übung arbeitet ihr in Gruppen an unterschiedlichen Modulen, die gemeinsam ein großes System ergeben.

⚠️ Wichtig

  • Achtet auf saubere Namen, Constraints, Fremdschlüssel und sinnvolle Datentypen.
  • Die Datenbank ist MySQL.

👥 Gruppenarbeit

Teilt euch in 4 Gruppen auf. Jede Gruppe bearbeitet nur ihr Modul.
Am Ende existieren alle Tabellen in einer gemeinsamen Datenbank.


Gruppe A – Wunschzettelverwaltung 🎁 (DDL & Constraints)

Der Weihnachtsmann sammelt digital alle Wunschzettel der Kinder.

Anforderungen

  1. Erstelle eine Tabelle für Kinder mit folgenden Eigenschaften:

    • eindeutige ID
    • Name (Pflichtfeld)
    • Wohnort
    • Bewertungswert für das Benehmen („brav-sein-Wert“, 0–100)
  2. Erstelle eine Tabelle für Wünsche:

    • eindeutige ID
    • Zuordnung zu genau einem Kind
    • Name des gewünschten Gegenstands
    • Priorität (z. B. 1–5)
    • Erstellungsdatum des Wunsches
  3. Regeln:

    • Ein Kind darf denselben Gegenstand nur einmal wünschen.
    • Jeder Wunsch muss einem existierenden Kind zugeordnet sein.
    • Unsinnige Werte (z. B. negative Prioritäten) sollen verhindert werden.
  4. Füge Testdaten ein:

    • mindestens 5 Kinder
    • jedes Kind hat mehrere Wünsche

Gruppe B – Geschenkewerkstatt 🧸 (Berechtigungen & Rollen)

In der Werkstatt arbeiten verschiedene Wesen mit unterschiedlichen Rechten.

Anforderungen

  1. Erstelle Tabellen für:

    • Geschenke
      • eindeutige ID
      • eindeutiger Name
      • Mindestalter
      • Gewicht
    • Lagerbestand
      • genau ein Eintrag pro Geschenk
      • aktueller Lagerstand
  2. Benutzer & Rollen (🎅):

    • Rolle: santa
    • Benutzer: santa_user
    • Rolle: elf
    • Benutzer: elf_user
  3. Berechtigungen:

    • santa darf Geschenke und Lagerbestand lesen und verändern
    • elf darf diese Daten nur lesen
    • Die Benutzer sollen den passenden Rollen zugeordnet werden
  4. Achtet darauf:

    • Keine globalen Rechte
    • Nur objektbezogene Berechtigungen

Gruppe C – Verpackungsstation 🎀 (Indizes)

Geschenke müssen effizient verpackt werden.

Anforderungen

  1. Erstelle Tabellen für:

    • Verpackungsarten
      • Name
      • maximales Gewicht
      • Umweltfreundlichkeitswert
    • Pakete
      • Zuordnung zu einem Wunsch
      • verwendete Verpackungsart
      • Verpackungsdatum
      • verpackt von (Name eines Elfs)
  2. Überlege:

    • Welche Spalten werden häufig gesucht oder gefiltert?
    • Wo könnte ein Index sinnvoll sein?
  3. Erstelle mindestens einen Index und dokumentiere:

    • Was wird dadurch schneller?
    • Was wird dadurch langsamer?

Gruppe D – Routenplanung 🦌 (Mengenoperationen)

Der Weihnachtsmann plant mehrere Lieferrouten.

Anforderungen

  1. Lege zwei Tabellen an:

    • Route Nord
    • Route Süd

    Beide enthalten:

    • eine Referenz auf Kinder
  2. Füge Testdaten ein:

    • einige Kinder kommen auf beiden Routen vor
    • einige nur auf einer Route
  3. Formuliere Abfragen und speichere diese als Views für:

    • alle Kinder, die heute besucht werden
    • Kinder, die auf beiden Routen stehen (Planungsfehler)
    • Kinder, die nur auf einer Route stehen

(Hinweis: Verwende Mengenoperationen, die in MySQL möglich sind.)


🎄 Individueller Abschlussteil (alle Schüler)

Jede Schülerin / jeder Schüler bearbeitet alle folgenden Abfragen selbstständig, nachdem alle Gruppentabellen existieren.

Aufgaben

  1. Liste alle Wünsche auf, die noch nicht verpackt wurden.
  2. Ermittle alle Kinder, die besucht werden, aber keinen Wunsch abgegeben haben.
  3. Finde Geschenke, die nicht mehr auf Lager sind.
  4. Ermittle Kinder, die auf mehreren Routen eingeplant sind.
  5. Welche Verpackungsart wird am häufigsten verwendet?

✅ Abgabe

  • SQL-Dateien je Gruppe
  • Kurze Textdatei mit:
    • besonderen Entscheidungen
    • Problemen oder offenen Fragen

🎅 Viel Erfolg und frohes SQL-Weihnachten!