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:59] gkochmodul:m290_guko:learningunits:lu08:aufgaben:a_fk_in_lu05 [2025/10/27 11:02] (aktuell) gkoch
Zeile 17: Zeile 17:
   * Prüft, dass **Primärschlüssel vorhanden** sind (wie in LU05), aber **keine** Fremdschlüssel.   * Prüft, dass **Primärschlüssel vorhanden** sind (wie in LU05), aber **keine** Fremdschlüssel.
   * Falls ihr neu starten wollt: erstellt die Tabellen nochmals wie in LU05 (PK ja, FK noch nicht) und füllt ein paar **Beispieldaten** ein (mind. 3 Zeilen pro Tabelle).   * Falls ihr neu starten wollt: erstellt die Tabellen nochmals wie in LU05 (PK ja, FK noch nicht) und füllt ein paar **Beispieldaten** ein (mind. 3 Zeilen pro Tabelle).
 +  * PDF mit Schema zu den einzelnen Cases: {{ :modul:m290_guko:learningunits:lu08:aufgaben:aufgaben_crowsfoot_sql-ddl.pdf |}}
  
  
Zeile 33: Zeile 34:
 **SQL-Muster (anpassen):** **SQL-Muster (anpassen):**
 <WRAP center box round 80%> <WRAP center box round 80%>
 +1. Erstellen Sie eine neue Spalte für den Fremdschlüssel:
 <code sql> <code sql>
-ALTER TABLE <kind_tabelle> +ALTER TABLE TABLE_NAME 
-ADD CONSTRAINT fk_<kind>_<eltern+ADD COLUMN neue_spalte DATENTYP [AFTER bestehende_spalte]; 
-FOREIGN KEY (<fk_spalte>+</code> 
-REFERENCES <eltern_tabelle>(<pk_spalte>)+2. Setzen Sie die soeben erstellte Spalte als Fremdschlüssel (Foreign Key): 
 +<code sql
 +ALTER TABLE kind_tabelle 
 +ADD FOREIGN KEY (neue_spalte
 +REFERENCES eltern_tabelle(primaerschluessel_spalte)
 ON DELETE RESTRICT ON DELETE RESTRICT
 ON UPDATE RESTRICT; ON UPDATE RESTRICT;
Zeile 53: Zeile 59:
  
 ==== 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 254: Zeile 262:
 </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.1760911157.txt.gz
  • Zuletzt geändert: 2025/10/19 23:59
  • von gkoch