LU08A1: Fremdschlüssel per ALTER TABLE

Ziel der Übung: Sie greifen Ihren Case aus LU05 wieder auf (Tierheim, Postzustellung, Online-Kleidershop, Eishockeyverein, ÖV oder Schweizer Regionen). Damals haben Sie die Tabellen ohne Fremdschlüssel erstellt. Jetzt verbinden Sie zwei Tabellen mit einem Fremdschlüssel und testen, was MySQL danach erlaubt und was nicht.

  • Arbeitsform: 2er-Gruppen
  • Zeit: 25 Minuten
  • Hilfsmittel: Kursunterlagen LU08
  • Ergebnis: Ihre Beobachtungen auf dem ausgedruckten Arbeitsblatt
  • Öffnen Sie Ihre LU05-Datenbank in WebStorm.
  • Prüfen Sie, ob die Primärschlüssel vorhanden sind (wie in LU05, Lösungen in LU06).
  • Falls Sie neu starten wollen: Erstellen Sie die Tabellen nochmals wie in LU05 (Lösungen in LU06) und füllen Sie ein paar Beispieldaten ein (siehe LU07).
  • Die Chen-Diagramme der einzelnen Cases finden Sie hier: Übersicht aller Cases mit Chen-Diagramm (PDF)

Laden Sie das Arbeitsblatt zu Ihrem Case herunter und gehen Sie Schritt für Schritt vor. Pro Case setzen Sie einen Fremdschlüssel:

Case Fremdschlüssel (Kindtabelle.Spalte → Elterntabelle) Arbeitsblatt
Eishockeyverein spieler_in.block_id → block Arbeitsblatt Eishockeyverein (PDF)
Postzustellung briefkasten.gebiet_id → postgebiet Arbeitsblatt Postzustellung (PDF)
Öffentlicher Verkehr fahrt.linien_id → linie Arbeitsblatt Öffentlicher Verkehr (PDF)
Online-Kleidershop kleidungsstueck.kategorie_id → kategorie Arbeitsblatt Online-Kleidershop (PDF)
Schweizer Regionen gemeinde.anlage_id → kva Arbeitsblatt Schweizer Regionen (PDF)
Tierheim tier.art_id → tierart Arbeitsblatt Tierheim (PDF)

Auf dem Arbeitsblatt testen Sie danach:

  • Werte in die Fremdschlüssel-Spalte eintragen: einen gültigen und einen, den es in der Elterntabelle nicht gibt
  • Einträge aus der Elterntabelle löschen: einen, auf den verwiesen wird
  • Primärschlüssel in der Elterntabelle ändern: ebenfalls mit und ohne Verweis

Daten einfügen, ändern und löschen können Sie mit SQL oder über die WebStorm-Oberfläche.

Die Spalte für den Fremdschlüssel gibt es in Ihrer Kindtabelle schon seit LU05. Sie müssen sie nicht neu anlegen, sondern nur zum Fremdschlüssel machen:

ALTER TABLE kind_tabelle
ADD FOREIGN KEY (fremdschluessel_spalte) REFERENCES eltern_tabelle(primaerschluessel_spalte);

Hinweise:

  • Die Elterntabelle (die Tabelle, auf die verwiesen wird) muss schon existieren.
  • Der Datentyp der Fremdschlüssel-Spalte muss zum Primärschlüssel der Elterntabelle passen (z.B. beide INT).
  • Ohne weitere Angabe gilt RESTRICT: Eine Elternzeile lässt sich nicht löschen oder ändern, solange Kindzeilen auf sie zeigen.
  • Meldet MySQL beim Setzen den Fehler 1452, steht in der Kindtabelle ein Wert, den es in der Elterntabelle nicht gibt. Das Arbeitsblatt zeigt, wie Sie ihn finden.

Guido Koch

  • de/modul/m290_guko/learningunits/lu08/aufgaben/a_fk_in_lu05.txt
  • Zuletzt geändert: 2026/10/25 20:15
  • von gkoch