Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
modul:m290_guko:learningunits:lu08:theorie:b_fk-grundlagen [2025/10/11 08:46] – gkoch | modul:m290_guko:learningunits:lu08:theorie:b_fk-grundlagen [2025/10/11 09:30] (aktuell) – gkoch | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
**Begriffe: | **Begriffe: | ||
- | * **Parent/ | + | * **Parent** (referenzierte Tabelle): Continent, Country |
- | * **Child/ | + | * **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 | + | * Verhindern |
- | * Definieren | + | * Regeln |
**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></ |
- | **Wichtig:** | + | **Tipps:** |
- | * Datentypen | + | * Datentypen müssen |
- | * FK-Spalten dürfen **NOT NULL** sein – dann sind NULLs nicht erlaubt | + | * **NO ACTION** |
- | * MySQL behandelt | + | * **SET NULL** nur, wenn die FK-Spalte `NULL` zulässt. |