Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m290_guko:learningunits:lu08:theorie:b_fk-grundlagen [2025/10/11 08:44] – angelegt gkochmodul:m290_guko:learningunits:lu08:theorie:b_fk-grundlagen [2025/10/11 09:30] (aktuell) gkoch
Zeile 1: Zeile 1:
-====== 1) Fremdschlüssel & referentielle Integrität ======+====== LU08b – Fremdschlüssel & referentielle Integrität ======
  
 **Begriffe:** **Begriffe:**
-  * **Parent/Referenzierte Tabelle**: enthält den Primärschlüssel (z. B. person.person_id+  * **Parent** (referenzierte Tabelle): Continent, Country 
-  * **Child/Referenzierende Tabelle**: enthält den Fremdschlüssel (z. B. film.director_id, film_cast.film_id+  * **Child** (referenzierende Tabelle): Country, Trip 
-  * **Referentielle Integrität (RI)**FK-Werte im Child müssen auf existierende PK-Werte im Parent zeigen +  * **Referentielle Integrität (RI):** FK-Werte im Child müssen auf existierende PK-Werte im Parent zeigen 
-    (oder bei erlaubter NULL: NULL sein).+    (oder – wenn erlaubt – NULL sein).
  
 **Warum FKs?** **Warum FKs?**
-  * Schützen vor verwaisten“ Datensätzen (z. B. Cast-Einträge ohne Film). +  * Verhindern verwaiste“ Zeilen (z. B. Trip ohne gültiges Country). 
-  * Definieren Verhalten bei Änderungen/Löschungen (RESTRICT/NO ACTION, CASCADE, SET NULL).+  * Regeln Verhalten bei Änderungen/Löschungen mit **ON DELETE/ON UPDATE**.
  
 **Syntax-Grundform:** **Syntax-Grundform:**
-<code sql> +<WRAP center box 80% round><code sql>
--- in CREATE TABLE oder ALTER TABLE+
 CONSTRAINT fk_name CONSTRAINT fk_name
-  FOREIGN KEY (child_column[, ...]) +  FOREIGN KEY (child_col[, ...]) 
-  REFERENCES parent_table(parent_pk_column[, ...])+  REFERENCES parent_table(parent_pk_col[, ...])
   ON DELETE {RESTRICT|CASCADE|SET NULL}   ON DELETE {RESTRICT|CASCADE|SET NULL}
   ON UPDATE {RESTRICT|CASCADE|SET NULL};   ON UPDATE {RESTRICT|CASCADE|SET NULL};
-</code>+</code></WRAP>
  
-**Wichtig:** +**Tipps:** 
-  * Datentypen & Zeichensatz/Kollation der verknüpften Spalten müssen kompatibel sein. +  * Datentypen müssen zusammenpassen (z. B. beide `INT`). 
-  * FK-Spalten dürfen **NOT NULL** sein – dann sind NULLs nicht erlaubt (SET NULL wäre dann unzulässig). +  * **NO ACTION** verhält sich in MySQL praktisch wie **RESTRICT**
-  * MySQL behandelt **NO ACTION** faktisch wie **RESTRICT**.+  * **SET NULL** nur, wenn die FK-Spalte `NULL` zulässt.
  
  • modul/m290_guko/learningunits/lu08/theorie/b_fk-grundlagen.1760165095.txt.gz
  • Zuletzt geändert: 2025/10/11 08:44
  • von gkoch