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:lu04:theorie:b_crows_foot [2025/09/07 19:22] – gkoch | modul: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: | * Ein Kunde kann viele Bestellungen aufgeben (1: | ||
- | * Eine Bestellung kann mehrere | + | * Eine Bestellung kann mehrere |
+ | |||
+ | {{: | ||
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ß | + | * Linie zwischen Kunde und Bestellung, mit Strich (1) auf der Kundenseite und Krähenfuss |
- | * Linie zwischen Bestellung und Buch mit Krähenfuß | + | * Linie zwischen Bestellung und Produkt |
Zeile 100: | Zeile 103: | ||
Ausgangspunkt ist ein kleines **Crow’s Foot Schema**: | Ausgangspunkt ist ein kleines **Crow’s Foot Schema**: | ||
+ | {{: | ||
* **Regisseur** (RegisseurID **PK**, Name) | * **Regisseur** (RegisseurID **PK**, Name) | ||
Zeile 107: | 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; | ||
</ | </ | ||
+ | </ | ||
**2. Tabelle " | **2. Tabelle " | ||
+ | <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) | ||
); | ); | ||
</ | </ | ||
+ | </ | ||
**3. Tabelle " | **3. Tabelle " | ||
+ | <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 136: | Zeile 144: | ||
); | ); | ||
</ | </ | ||
+ | </ | ||
+ | **4. Daten einfügen** | ||
- | **4. Erste Daten einfügen** | + | Fügen Sie mit Webstorm manuell (Tabelle anklicken und dann -> "Edit Data" |
- | <code sql> | + | |
- | INSERT INTO regisseur | + | |
- | + | ||
- | INSERT INTO film (titel, jahr, regisseur_id) | + | |
- | VALUES (' | + | |
- | | + | |
- | </ | + | |
**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; | ||
+ | |||
</ | </ | ||
+ | </ | ||
+ | |||
+ | Was zu einem ähnlichen Ergebnis, wie hier führen könnte: | ||
+ | <WRAP center box round 80%> | ||
+ | ^ Titel ^ Jahr ^ Regisseur | ||
+ | | Inception | ||
+ | | Lost in Translation | 2003 | Sofia Coppola | ||
+ | |||
+ | </ | ||
- | Die Daten werde aus beiden Tabellen //film// und // | + | ---- |
[[https:// | [[https:// | ||