Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m290_guko:learningunits:lu08:aufgaben:a_fk_in_lu05 [2025/10/19 23:57] gkochmodul:m290_guko:learningunits:lu08:aufgaben:a_fk_in_lu05 [2025/10/20 00:04] (aktuell) gkoch
Zeile 32: Zeile 32:
  
 **SQL-Muster (anpassen):** **SQL-Muster (anpassen):**
 +<WRAP center box round 80%>
 <code sql> <code sql>
 ALTER TABLE <kind_tabelle> ALTER TABLE <kind_tabelle>
Zeile 40: Zeile 41:
 ON UPDATE RESTRICT; ON UPDATE RESTRICT;
 </code> </code>
 +</WRAP>
  
 <WRAP center box round 80%> <WRAP center box round 80%>
Zeile 51: Zeile 53:
  
 ==== 3) DML testen – RESTRICT erfahrbar machen ==== ==== 3) DML testen – RESTRICT erfahrbar machen ====
 +//DML = Data Manipulation Language -> Daten einfügen, ändern, löschen//
 +
 **So gehen Sie vor (für euren gewählten Case):** **So gehen Sie vor (für euren gewählten Case):**
  
-1. **Daten anlegen** (2 Eltern + 1 Kind, das auf Elterntabelle zeigt).+1. **Daten anlegen**
 2. **Tests A–D** ausführen und das Verhalten beobachten (Kommentar sagt, was passieren soll). 2. **Tests A–D** ausführen und das Verhalten beobachten (Kommentar sagt, was passieren soll).
  
Zeile 117: Zeile 121:
 UPDATE postgebiet SET gebiet_id = 11 WHERE gebiet_id = 20; -- scheitert, solange Kinder auf 20 zeigen </code></WRAP> UPDATE postgebiet SET gebiet_id = 11 WHERE gebiet_id = 20; -- scheitert, solange Kinder auf 20 zeigen </code></WRAP>
  
-=== Case: Online-Kleidershop (//Kategorie// → viele //Kleidungsstück//) ===+=== Case: Online-Kleidershop (Kategorie → viele Kleidungsstücke) ===
  
 **FK:** //kleidungsstueck.kategorie_id// → //kategorie.kategorie_id// **FK:** //kleidungsstueck.kategorie_id// → //kategorie.kategorie_id//
Zeile 146: Zeile 150:
 </WRAP> </WRAP>
  
-=== Case: Eishockeyverein (//Team// → viele //Blöcke//) ===+=== Case: Eishockeyverein (Team → viele Blöcke) ===
  
 **FK:** //block.team_id// → //team.team_id// **FK:** //block.team_id// → //team.team_id//
Zeile 174: Zeile 178:
  
  
-=== Case: Öffentlicher Verkehr (//Linie// → viele //Fahrten//) ===+=== Case: Öffentlicher Verkehr (Linie → viele Fahrten) ===
  
 **FK:** //fahrt.linien_id// → //linie.linien_id// **FK:** //fahrt.linien_id// → //linie.linien_id//
Zeile 207: Zeile 211:
  
  
-=== Case: Schweizer Regionen (//Kanton// → viele //Gemeinden//) ===+=== Case: Schweizer Regionen (Kanton → viele Gemeinden) ===
  
 **FK:** //gemeinde.kanton_id// → //kanton.kanton_id// **FK:** //gemeinde.kanton_id// → //kanton.kanton_id//
Zeile 252: Zeile 256:
 </code> </code>
  
-*Einsatzbeispiel:''team.trainer_id'' darf leer sein → beim Löschen eines Trainers bleibt das Team bestehen, ''trainer_id'' wird **NULL**.+//Einsatzbeispiel:// ''team.trainer_id'' darf leer sein → beim Löschen eines Trainers bleibt das Team bestehen, ''trainer_id'' wird **NULL**.
  
 **CASCADE** verwenden wir bevorzugt bei **Zwischentabellen** (N:M). **CASCADE** verwenden wir bevorzugt bei **Zwischentabellen** (N:M).
-Falls euer Case eine N:M-Erweiterung hat (z. B. im Kleidershop: *Artikel ↔ Grösse*), legt ihr die Zwischen-Tabelle wie in **LU08e** an und setzt dort **CASCADE**.+Falls euer Case eine N:M-Erweiterung hat (z. B. im Kleidershop: //Artikel ↔ Grösse//), legt ihr die Zwischen-Tabelle wie in **LU08e** an und setzt dort **CASCADE**.
 Für reine 1:N-Beziehungen bleibt **RESTRICT** meist die beste Wahl. Für reine 1:N-Beziehungen bleibt **RESTRICT** meist die beste Wahl.
  
  • modul/m290_guko/learningunits/lu08/aufgaben/a_fk_in_lu05.1760911031.txt.gz
  • Zuletzt geändert: 2025/10/19 23:57
  • von gkoch