„Crow’s Foot“ bedeutet übersetzt Krähenfuss. Der Name kommt vom Symbol für many (viele), das wie ein kleiner Krähenfuss aussieht.
Die Crow’s-Foot-Notation stellt eine Datenbank so dar, dass man sofort erkennt:
Damit kann die Crow’s-Foot-Notation Teil eines logischen Datenbankschemas sein und bildet die Brücke von der Analyse (Chen-Notation) zur technischen Umsetzung in SQL.
Die Kardinalität beschreibt die Art der Beziehung zwischen zwei Entitäten. Es gibt drei Haupttypen:
1. One-to-One (1:1) Eine Instanz von Entität A gehört genau zu einer Instanz von Entität B.
Beispiel:
Darstellung: Linie mit kurzem Strich auf beiden Seiten.
One-to-One (1:1) Beziehung: Ein Auto kann (gleichzeitig) immer nur einen Fahrer, eine Fahrerin haben. Eine Fahrerin, ein Fahrer kann (gleichzeitig) nur immer Ein Auto fahren.
2. One-to-Many (1:N) Eine Instanz von Entität A kann mit vielen Instanzen von Entität B verbunden sein. Umgekehrt gehört jede Instanz von B zu genau einer Instanz von A.
Beispiel:
Darstellung: Linie mit Strich (= „eins“) auf Seite A und einem „Krähenfuss“ (drei Linien) auf Seite B.
One-to-Many (1:n) Beziehung: Ein Regisseur, eine Regisseurin kann mehrere Filme drehen. Ein Film wird (in der Regel) nur von einem Regisseur, einer Regisseurin gedreht.
3. Many-to-Many (M:N) Mehrere Instanzen von Entität A können mit mehreren Instanzen von Entität B verknüpft sein.
Beispiel:
Darstellung: Krähenfüsse auf beiden Seiten der Beziehung.
Many-to-Many (n:m) Beziehung: Ein:e Schauspieler:in kann in mehreren Filme spielen. Ein Film kann mehrere Schauspieler:innen haben.
Die folgende Abbildung zeigt alle möglichen Kardinalitäten:
Die Crow’s-Foot-Notation wird oft in der Praxis eingesetzt, weil sie eine klare und technische Darstellung bietet.
Im Unterschied zur Chen-Notation, die eher fachlich und abstrakt ist, dient Crow’s-Foot als Brücke zur Umsetzung in SQL:
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.
Stellen wir uns einen Online-Buchshop vor. Wir haben die Entitäten:
Beziehungen:
Darstellung in Crow’s-Foot-Notation:
Ausgangspunkt ist ein Crow’s Foot Schema:
1. Datenbank anlegen
CREATE DATABASE filmdatenbank; USE filmdatenbank;
2. Tabelle „regisseur“ anlegen
CREATE TABLE regisseur ( regisseur_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, birthday DATE );
3. Tabelle „film“ anlegen
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) );
Sowohl das setzen von Foreign Keys (Fremdschlüsseln) in SQL, wie auch das gleichzeitige Abfragen von Daten aus zwei Tabellen (s. unten) werden wir zu einem späteren Zeitpunkt im Modul behandeln. Das dient hier dafür, dass Sie einen Überblick bekommen, wie es gehen würde. Das (also das setzen von Fremdschlüsseln und das programmieren von verschachtelten Abfragen) ist nicht Teil der Leistungsbeurteilung 1.
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:
SELECT f.titel, f.jahr, r.name AS regisseur FROM film f, regisseur r WHERE f.regisseur_id = r.regisseur_id;
Was zu einem ähnlichen Ergebnis, wie hier führen könnte:
Titel | Jahr | Regisseur |
---|---|---|
Inception | 2010 | Christopher Nolan |
Lost in Translation | 2003 | Sofia Coppola |