Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m290_guko:learningunits:lu08:theorie:c_fk-create-table [2025/10/19 21:53] – gkoch | modul:m290_guko:learningunits:lu08:theorie:c_fk-create-table [2025/11/05 11:23] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 5: | Zeile 5: | ||
| ==== ERD (Überblick) ==== | ==== ERD (Überblick) ==== | ||
| Wir gehen vom Schema aus dem Reiseblog-Beispiel aus: | Wir gehen vom Schema aus dem Reiseblog-Beispiel aus: | ||
| - | {{ : | + | |
| + | {{ : | ||
| <WRAP tip round 80% center> | <WRAP tip round 80% center> | ||
| Posts können mehreren Kategorien angehören (N:M). Die saubere Lösung ist eine Zwischentabelle '' | Posts können mehreren Kategorien angehören (N:M). Die saubere Lösung ist eine Zwischentabelle '' | ||
| - | Das bauen wir später (s. LU08e: N: | + | Das bauen wir später (s. LU08e: N: |
| </ | </ | ||
| ===== Fremdschlüssel: | ===== Fremdschlüssel: | ||
| + | <WRAP center tip round 80%> | ||
| + | [[https:// | ||
| + | </ | ||
| + | |||
| <WRAP box round center 80%> | <WRAP box round center 80%> | ||
| <code sql> | <code sql> | ||
| Zeile 26: | Zeile 31: | ||
| ===== Beispiel Reiseblog ===== | ===== Beispiel Reiseblog ===== | ||
| + | |||
| + | <WRAP center tip round 80%> | ||
| + | [[https:// | ||
| + | </ | ||
| ==== 1. Tabellen anlegen ==== | ==== 1. Tabellen anlegen ==== | ||
| Zeile 135: | Zeile 144: | ||
| === Verknüpfung Tabelle users & posts (one-to-many) === | === Verknüpfung Tabelle users & posts (one-to-many) === | ||
| - | {{ : | + | {{: |
| === Tabelle categories (wird später mit ' | === Tabelle categories (wird später mit ' | ||
| - | {{ : | + | {{: |
| ==== 3. Fremdschlüssel in Aktion (Standard: RESTRICT) ==== | ==== 3. Fremdschlüssel in Aktion (Standard: RESTRICT) ==== | ||
| - | Beim setzen | + | Beim Setzen |
| - | Was heisst | + | |
| - | <WRAP center box 80% round>< | + | Bezogen auf unser Reiseblog-Beispiel: '' |
| - | -- Sicherheit: Welche FKs sind gesetzt? | + | Damit ist //users// die Elterntabelle und //posts// die Kindtabelle. Die Folge von '' |
| - | SHOW CREATE TABLE posts; | + | |
| - | </code>< | + | * Löschen eines Users ist blockiert, solange Posts auf diesen User verweisen. |
| + | * Ändern von '' | ||
| + | * Änderungen an nicht referenzierten Spalten (z. B. '' | ||
| + | |||
| + | Probieren Sie folgende Codesnippets in Webstorm/ | ||
| === Demo 1 – User ohne Posts löschen (erlaubt) === | === Demo 1 – User ohne Posts löschen (erlaubt) === | ||
| Zeile 201: | Zeile 213: | ||
| <WRAP tip round 80% center> | <WRAP tip round 80% center> | ||
| - | Merke: Fremdschlüssel geben dir Datensicherheit: | + | Merke: Fremdschlüssel geben Datensicherheit: |
| * Verhindern verwaiste Daten (z. B. Posts ohne gültigen Autor), | * Verhindern verwaiste Daten (z. B. Posts ohne gültigen Autor), | ||
| * definieren klares Verhalten bei Löschen/ | * definieren klares Verhalten bei Löschen/ | ||