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:13] gkochmodul:m290_guko:learningunits:lu04:theorie:b_crows_foot [2025/09/07 21:18] (aktuell) gkoch
Zeile 64: Zeile 64:
  
 {{:modul:m290:learningunits:lu03:theorie:crow-notation-chart-4127045304.png?300|Alle möglichen Kardinalitäten in der Crow’s-Foot-Notation}} {{:modul:m290:learningunits:lu03:theorie:crow-notation-chart-4127045304.png?300|Alle möglichen Kardinalitäten in der Crow’s-Foot-Notation}}
- 
-[[https://www.youtube.com/watch?v=I-XHfuJ43ic| Lernvideo: ERD Crow’s-Foot-Notation]] 
  
  
Zeile 75: 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 …//.  
  
 Crow’s-Foot wird also vor allem von **Entwickler:innen, Datenbank-Designer:innen und Lernenden** genutzt, die den Schritt von der Analyse (Chen) zur technischen Umsetzung (SQL) machen.   Crow’s-Foot wird also vor allem von **Entwickler:innen, Datenbank-Designer:innen und Lernenden** genutzt, die den Schritt von der Analyse (Chen) zur technischen Umsetzung (SQL) machen.  
-Stakeholder ohne IT-Hintergrund können sie verstehen – aber nur, wenn sie vorher eingeführt werden.   
  
-Merksatz:   +
-  * **Chen = Analyse/Planung** (Welche Objekte und Beziehungen gibt es?)   +
-  * **Crow’s-Foot = Umsetzung** (Wie sehen Tabellen, Schlüssel und Kardinalitäten konkret aus?)+
  
 ==== Beispiel Crow’s-Foot-Notation ==== ==== Beispiel Crow’s-Foot-Notation ====
Zeile 91: 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.  
  
  
-====== Beispiel: Vom Schema zur Tabelle ======+===== Beispiel: Vom Schema zur Tabelle =====
  
 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_1_.png?direct&600|}}
  
   * **Regisseur** (RegisseurID **PK**, Name)     * **Regisseur** (RegisseurID **PK**, Name)  
Zeile 112: Zeile 111:
  
  
-===== Umsetzung in SQL =====+==== Umsetzung in SQL ====
  
 **1. Datenbank anlegen** **1. Datenbank anlegen**
- +<WRAP center box round 80%> 
-```sql+<code sql>
 CREATE DATABASE filmdatenbank; CREATE DATABASE filmdatenbank;
 USE filmdatenbank; USE filmdatenbank;
 +</code>
 +</WRAP>
 +
 +**2. Tabelle "regisseur" anlegen**
 +<WRAP center box round 80%>
 +<code sql>
 +CREATE TABLE regisseur (
 +  regisseur_id INT AUTO_INCREMENT,
 +  name VARCHAR(50) NOT NULL,
 +  birthday DATE,
 +  PRIMARY KEY (regisseur_id)
 +);
 +</code>
 +</WRAP>
 +**3. Tabelle "film" anlegen**
 +<WRAP center box round 80%>
 +<code sql>
 +CREATE TABLE film (
 +  film_id INT AUTO_INCREMENT,
 +  titel VARCHAR(50) NOT NULL,
 +  jahr YEAR,
 +  regisseur_id INT,
 +  PRIMARY KEY (film_id),
 +  FOREIGN KEY (regisseur_id) REFERENCES regisseur(regisseur_id)
 +);
 +</code>
 +</WRAP>
 +**4. 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// verwenden, welche wir zu einem früheren Zeitpunkt bereits importiert haben.
 +
 +**5. Daten abfragen**
 +
 +Mit einem Select können wir beide Tabellen gleichzeitig abfragen:
 +<WRAP center box round 80%>
 +<code sql>
 +SELECT f.titel, f.jahr, r.name AS regisseur
 +FROM film f, regisseur r
 +WHERE f.regisseur_id = r.regisseur_id;
 +
 +</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>
  
 +----
 [[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.1757265211.txt.gz
  • Zuletzt geändert: 2025/09/07 19:13
  • von gkoch