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:theorie:c_fk-create-table [2025/10/19 21:59] gkochmodul: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:
-{{ :modul:m290_guko:learningunits:lu08:theorie:reiseblog_crows-foot.drawio.png?nolink&1100 | ERD: Blog Post – User (1:N) und Blog Post – Category (N:M) }}+ 
 +{{ :modul:m290_guko:learningunits:lu08:theorie:crowsfoot_wordpress_reiseblog.drawio.png?nolink&1100 | ERD: Blog Post – User (1:N) und Blog Post – Category (N:M) }}
  
 <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 ''post_category'' Posts können mehreren Kategorien angehören (N:M). Die saubere Lösung ist eine Zwischentabelle ''post_category''
-Das bauen wir später (s. LU08e: N:M-Beziehungen mit Zwischentabelle abbilden.+Das bauen wir später (s. LU08e: N:M-Beziehungen mit Zwischentabelle abbilden).
 </WRAP> </WRAP>
  
  
 ===== Fremdschlüssel: Grundsyntax ===== ===== Fremdschlüssel: Grundsyntax =====
 +<WRAP center tip round 80%>
 +[[https://www.youtube.com/watch?v=QDmJBSgnUEo|SQL Schlüssel einfach erklärt – SQL 3]]((Informatik – simpleclub / YouTube)) -> (7:49, de) Primär- und Fremdschlüssel anschaulich erklärt.
 +</WRAP>
 +
 <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://www.youtube.com/watch?v=i-W5bos0LlE|SQL Tabellenerzeugung mit DDL – SQL 2]]((Informatik – simpleclub / YouTube)) -> (7:46, de) Kurz und klar: CREATE TABLE, Datentypen, Constraints – ideal als DDL-Auffrischung vor dem Setzen von FKs.
 +</WRAP>
  
 ==== 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) ===
  
-{{ :modul:m290_guko:learningunits:lu08:theorie:reiseblog-connected_users-posts.png?direct&1600 |}}+{{:modul:m290_guko:learningunits:lu08:theorie:reiseblog-connected_users-posts.png?direct&1600|}}
  
 === Tabelle categories (wird später mit 'posts' verknüpft) === === Tabelle categories (wird später mit 'posts' verknüpft) ===
  
-{{ :modul:m290_guko:learningunits:lu08:theorie:categories.png?direct&400 |}}+{{:modul:m290_guko:learningunits:lu08:theorie:categories.png?direct&400|}}
  
 ==== 3. Fremdschlüssel in Aktion (Standard: RESTRICT) ==== ==== 3. Fremdschlüssel in Aktion (Standard: RESTRICT) ====
Zeile 152: Zeile 161:
  
 Probieren Sie folgende Codesnippets in Webstorm/MySQL, damit Sie gleich das entsprechende Gefühl dafür bekommen, was //RESTRICT// passiert. Probieren Sie folgende Codesnippets in Webstorm/MySQL, damit Sie gleich das entsprechende Gefühl dafür bekommen, was //RESTRICT// passiert.
-<WRAP center box 80% round><code sql> 
--- Sicherheit: Welche FKs sind gesetzt? 
-SHOW CREATE TABLE posts; 
-</code></WRAP> 
  
 === Demo 1 – User ohne Posts löschen (erlaubt) === === Demo 1 – User ohne Posts löschen (erlaubt) ===
Zeile 208: Zeile 213:
  
 <WRAP tip round 80% center> <WRAP tip round 80% center>
-Merke: Fremdschlüssel geben dir Daten­sicherheit:+Merke: Fremdschlüssel geben Daten­sicherheit:
   * 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/Ändern (RESTRICT, CASCADE, SET NULL),   * definieren klares Verhalten bei Löschen/Ändern (RESTRICT, CASCADE, SET NULL),
  • modul/m290_guko/learningunits/lu08/theorie/c_fk-create-table.1760903950.txt.gz
  • Zuletzt geändert: 2025/10/19 21:59
  • von gkoch