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:lu04:theorie:b_crows_foot [2025/09/07 19:25] gkochmodul:m290_guko:learningunits:lu04:theorie:b_crows_foot [2025/09/07 21:18] (aktuell) gkoch
Zeile 73: Zeile 73:
   * Sie zeigt **Entitäten als Tabellen** mit ihren Attributen.     * Sie zeigt **Entitäten als Tabellen** mit ihren Attributen.  
   * Sie markiert **Primärschlüssel (PK)** und **Fremdschlüssel (FK)**.     * Sie markiert **Primärschlüssel (PK)** und **Fremdschlüssel (FK)**.  
-  * Sie stellt **Beziehungen und Kardinalitäten** (1:1, 1:n, n:m) deutlich dar.  +  * Sie stellt **Beziehungen und Kardinalitäten** (1:1, 1:n, n:m) deutlich dar.  
 +  * Es können auch die Datentypen der Attribute (Spalten) vermerkt werden. 
  
 Damit ist sie die **letzte Station vor der praktischen Umsetzung** mit SQL-Befehlen wie //CREATE TABLE …//.   Damit ist sie die **letzte Station vor der praktischen Umsetzung** mit SQL-Befehlen wie //CREATE TABLE …//.  
Zeile 86: Zeile 87:
   * **Kunde**     * **Kunde**  
   * **Bestellung**     * **Bestellung**  
-  * **Buch**  +  * **Produkt**  
  
 Beziehungen:   Beziehungen:  
   * Ein Kunde kann viele Bestellungen aufgeben (1:N).     * Ein Kunde kann viele Bestellungen aufgeben (1:N).  
-  * Eine Bestellung kann mehrere Bücher enthalten, und ein Buch kann in vielen Bestellungen vorkommen (M:N).  +  * Eine Bestellung kann mehrere Produkte enthalten, und ein Produkt kann in vielen Bestellungen vorkommen (M:N).   
 + 
 +{{:modul:m290_guko:learningunits:lu04:theorie:bestellung_crows_feet.drawio_1_.png?direct&600|}}
  
 Darstellung in Crow’s-Foot-Notation:   Darstellung in Crow’s-Foot-Notation:  
-  * Linie zwischen Kunde und Bestellung, mit Strich (1) auf der Kundenseite und Krähenfuß (N) auf der Bestellungsseite.   +  * Linie zwischen Kunde und Bestellung, mit Strich (1) auf der Kundenseite und Krähenfuss (N) auf der Bestellungsseite.   
-  * Linie zwischen Bestellung und Buch mit Krähenfuß auf beiden Seiten.  +  * Linie zwischen Bestellung und Produkt mit Krähenfuss auf beiden Seiten.  
  
  
Zeile 100: Zeile 103:
  
 Ausgangspunkt ist ein kleines **Crow’s Foot Schema**:   Ausgangspunkt ist ein kleines **Crow’s Foot Schema**:  
-{{:modul:m290_guko:learningunits:lu04:theorie:film_regisseur_crowsfoot.drawio.png?direct&600|}}+{{:modul:m290_guko:learningunits:lu04:theorie:film_regisseur_crowsfoot.drawio_1_.png?direct&600|}}
  
   * **Regisseur** (RegisseurID **PK**, Name)     * **Regisseur** (RegisseurID **PK**, Name)  
Zeile 108: Zeile 111:
  
  
-===== Umsetzung in SQL =====+==== Umsetzung in SQL ====
  
 **1. Datenbank anlegen** **1. Datenbank anlegen**
 +<WRAP center box round 80%>
 <code sql> <code sql>
 CREATE DATABASE filmdatenbank; CREATE DATABASE filmdatenbank;
 USE filmdatenbank; USE filmdatenbank;
 </code> </code>
 +</WRAP>
  
 **2. Tabelle "regisseur" anlegen** **2. Tabelle "regisseur" anlegen**
 +<WRAP center box round 80%>
 <code sql> <code sql>
 CREATE TABLE regisseur ( CREATE TABLE regisseur (
   regisseur_id INT AUTO_INCREMENT,   regisseur_id INT AUTO_INCREMENT,
-  name VARCHAR(100) NOT NULL,+  name VARCHAR(50) NOT NULL
 +  birthday DATE,
   PRIMARY KEY (regisseur_id)   PRIMARY KEY (regisseur_id)
 ); );
 </code> </code>
 +</WRAP>
 **3. Tabelle "film" anlegen** **3. Tabelle "film" anlegen**
 +<WRAP center box round 80%>
 <code sql> <code sql>
 CREATE TABLE film ( CREATE TABLE film (
   film_id INT AUTO_INCREMENT,   film_id INT AUTO_INCREMENT,
-  titel VARCHAR(100) NOT NULL,+  titel VARCHAR(50) NOT NULL,
   jahr YEAR,   jahr YEAR,
   regisseur_id INT,   regisseur_id INT,
Zeile 137: Zeile 144:
 ); );
 </code> </code>
 +</WRAP>
 +**4. Daten einfügen**
  
-**4. Erste Daten einfügen** +Fügen Sie mit Webstorm manuell (Tabelle anklicken und dann -"Edit Data" (Tabellen-Icon)) ein paar Daten in die beiden Tabellen. Sie können zur Inspiration Daten aus der Tabelle //imbd_top_1000// verwendenwelche wir zu einem früheren Zeitpunkt bereits importiert haben.
-<code sql> +
-INSERT INTO regisseur (nameVALUES ('Christopher Nolan'), ('Sofia Coppola'); +
- +
-INSERT INTO film (titel, jahr, regisseur_id) +
-VALUES ('Inception', 2010, 1), +
-       ('Lost in Translation'2003, 2); +
-</code>+
  
 **5. Daten abfragen** **5. Daten abfragen**
 +
 +Mit einem Select können wir beide Tabellen gleichzeitig abfragen:
 +<WRAP center box round 80%>
 <code sql> <code sql>
 SELECT f.titel, f.jahr, r.name AS regisseur SELECT f.titel, f.jahr, r.name AS regisseur
 FROM film f, regisseur r FROM film f, regisseur r
 WHERE f.regisseur_id = r.regisseur_id; WHERE f.regisseur_id = r.regisseur_id;
 +
 </code> </code>
 +</WRAP>
 +
 +Was zu einem ähnlichen Ergebnis, wie hier führen könnte:
 +<WRAP center box round 80%>
 +^ Titel               ^ Jahr ^ Regisseur         ^
 +| Inception           | 2010 | Christopher Nolan |
 +| Lost in Translation | 2003 | Sofia Coppola     |
 +
 +</WRAP>
  
-Die Daten werde aus beiden Tabellen //film// und //regisseur// abgefragt!+----
 [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]]
  
  • modul/m290_guko/learningunits/lu04/theorie/b_crows_foot.1757265919.txt.gz
  • Zuletzt geändert: 2025/09/07 19:25
  • von gkoch