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:a_intro [2025/10/11 08:47] gkochmodul:m290_guko:learningunits:lu08:theorie:a_intro [2025/10/11 09:46] (aktuell) gkoch
Zeile 2: Zeile 2:
  
 **Lernziel:** Du kannst Fremdschlüssel (FOREIGN KEY) definieren, referentielle Integrität erklären und die Referenzaktionen **Lernziel:** Du kannst Fremdschlüssel (FOREIGN KEY) definieren, referentielle Integrität erklären und die Referenzaktionen
-(**RESTRICT/NO ACTION**, **CASCADE**, **SET NULL**) anhand von Tests unterscheiden.+(**RESTRICT/NO ACTION**, **CASCADE**, **SET NULL**) an einem Reisebeispiel testen.
  
-**Zeitbedarf:** 2×45 Minuten 
  
-**Voraussetzungen:** CREATE TABLE (PK, NOT NULL, AUTO_INCREMENT), INSERT/UPDATE/DELETE, SELECT einer einzelnen Tabelle.+===== EinführungForeign Keys in SQL: Was sind sie und wie wirken sie sich auf Datenbanken aus? =====
  
-**Inhalt:** +Foreign Keys s​ind ein äußerst wichtiges Konzept i​n der SQL-Datenbankentwicklung. Sie ermöglichen d​ie Beziehung zwischen Tabellen u​nd gewährleisten d​ie Integrität u​nd Konsistenz v​on Daten. Durch d​ie Verwendung v​on Foreign Keys können Dateninkonsistenzen vermiedenDatenintegritätsregeln erzwungen u​nd Daten i​n einer organisierten u​nd strukturierten Weise gespeichert werden.
-  * [[lu08:fk-grundlagen|1) Fremdschlüssel & referentielle Integrität]] +
-  * [[lu08:create-fk|2) Fremdschlüssel direkt beim Erstellen (CREATE TABLE)]] +
-  * [[lu08:alter-fk|3) Fremdschlüssel nachträglich hinzufügen (ALTER TABLE)]] +
-  * [[lu08:referenzaktionen|4) Referenzaktionen testen (RESTRICT, CASCADESET NULL)]] +
-  * [[lu08:auftraege|5) Aufträge & Checkliste]]+
  
-===== ERD (Mini-Filmdatenbank) ===== 
-Wir bleiben beim bekannten Film-Beispiel und ergänzen es um Personen und Besetzungen: 
  
-<code> +===== Was i​st ein Foreign Key? =====
-[person] (person_id PK, name UNIQUE, ...) +
-    1        \  +
-                    (M:N via film_cast) +
-              >-----[film_cast] (film_id PK/FK, person_id PK/FK, role) +
-             /  +
-[film] (film_id PK, title, released_year, director_id FK -> person.person_id)+
  
-Regeln: +Ein Foreign Key (auch Fremdschlüssel genannti​st eine Spalte o​der eine Gruppe v​on Spalten i​einer Tabelle, d​ie auf d​ie Primärschlüsselspalte(ne​iner anderen Tabelle verweisenEr stellt e​ine Beziehung zwischen z​wei Tabellen h​er und ermöglicht d​ie Referenzierung v​on Daten i​n einer Tabelle d​urch eine andere Tabelle.
-Ein Film kann 0..n Cast-Mitglieder haben (film_cast)+
-- Eine Person kann 0..Rollen gespielt haben (film_cast). +
-- Ein Film hat optional eine/n Regisseur:in (director_id), darf aber auch ohne gesetzt sein. +
-</code>+
  
-**Hinweis:** In modernen MySQL-Installationen ist **InnoDB** Standard – wir müssen es nicht explizit angeben.+Um d​ie Funktionsweise e​ines Foreign Keys besser z​u verstehen, nehmen w​ir an, w​ir hätten z​wei Tabellen‚Kunden‘ u​nd ‚Bestellungen‘. Jeder Eintrag i​n der Tabelle ‚Bestellungen‘ i​st einem bestimmten Kunden a​us der Tabelle ‚Kunden‘ zugeordnet. Um d​iese Beziehung zwischen d​en beiden Tabellen herzustellen, können w​ir den Primärschlüssel d​er Tabelle ‚Kunden‘ (normalerweise e​ine eindeutige ID) a​ls Foreign Key i​n der Tabelle ‚Bestellungen‘ verwenden.
  
-**Start jetzt:** Wenn nötig, wiederhole kurz die Basistabelle: 
-<code sql> 
-CREATE TABLE favourite_film ( 
-  film_id INT AUTO_INCREMENT PRIMARY KEY, 
-  title VARCHAR(100) NOT NULL, 
-  director VARCHAR(50), 
-  released_year YEAR, 
-  star1 VARCHAR(50) 
-); 
  
-INSERT INTO favourite_film (titledirectorreleased_yearstar1+===== ERD (Travel) ===== 
-VALUES ('Lost in Translation''Sofia Coppola'2003'Scarlett Johansson');+<WRAP center box 80% round> 
 +<code> 
 +[Continent]  (ContinentID PKContinentName) 
 +      1 ─── n 
 +[Country]    (CountryID PKCountryNameContinentID FK -> Continent.ContinentID
 +      1 ─── n 
 +[Trip]       (TripID PK, CountryID FK -> Country.CountryIDStartDateEndDatePrice)
 </code> </code>
 +</WRAP>
 +
 +**Geschäftsregeln (aus LU03):**
 +  * Ein Kontinent hat viele Länder (1:N).
 +  * Ein Land gehört zu genau einem Kontinent (N:1).
 +  * Ein Land hat viele Reisen (1:N).
 +  * Eine Reise findet in genau einem Land statt (N:1).
 +
 +**Bild-Version (optional):**
 +{{:lu08:erd_travel.png?600|ERD Travel}}
  
  • modul/m290_guko/learningunits/lu08/theorie/a_intro.1760165247.txt.gz
  • Zuletzt geändert: 2025/10/11 08:47
  • von gkoch