LU04b - Die Crow’s-Foot-Notation

„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:

  • wie Entitäten (Tabellen) miteinander verknüpft sind,
  • wie viele Objekte (Instanzen) einer Entität mit wie vielen Objekten einer anderen verbunden sein können (= Kardinalität),
  • welche Primärschlüssel (PK) und Fremdschlüssel (FK) definiert sind,
  • welche Attribute zu einer Tabelle gehören (auf Wunsch auch mit Datentypen).

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:

  • Ein:e Mitarbeitende ↔ genau ein Arbeitsplatz
  • Jeder Reisepass ↔ genau eine Person

Darstellung: Linie mit kurzem Strich auf beiden Seiten.

One-to-One Beziehung 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:

  • Ein Regisseur ↔ viele Filme
  • Ein Spotify-Artist ↔ viele Songs
  • Eine Klasse ↔ viele Lernende

Darstellung: Linie mit Strich (= „eins“) auf Seite A und einem „Krähenfuss“ (drei Linien) auf Seite B.

One-to-Many Beziehung 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:

  • Mehrere Schauspieler:innen ↔ spielen in mehreren Filmen
  • Viele Lernende ↔ besuchen mehrere Module
  • Viele Songs ↔ sind in mehreren Playlists enthalten

Darstellung: Krähenfüsse auf beiden Seiten der Beziehung.

Many-to-Many 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:

Alle möglichen Kardinalitäten in der Crow’s-Foot-Notation

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:

  • Sie zeigt Entitäten als Tabellen mit ihren Attributen.
  • Sie markiert Primärschlüssel (PK) und Fremdschlüssel (FK).
  • 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 ….

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:

  • Kunde
  • Bestellung
  • Produkt

Beziehungen:

  • Ein Kunde kann viele Bestellungen aufgeben (1:N).
  • Eine Bestellung kann mehrere Produkte enthalten, und ein Produkt kann in vielen Bestellungen vorkommen (M:N).

Darstellung in Crow’s-Foot-Notation:

  • Linie zwischen Kunde und Bestellung, mit Strich (1) auf der Kundenseite und Krähenfuss (N) auf der Bestellungsseite.
  • Linie zwischen Bestellung und Produkt mit Krähenfuss auf beiden Seiten.

Ausgangspunkt ist ein kleines Crow’s Foot Schema:

  • Regisseur (RegisseurID PK, Name)
  • Film (FilmID PK, Titel, Jahr, RegisseurID FK)
  • Beziehung: 1 Regisseur ↔ n Filme

1. Datenbank anlegen

CREATE DATABASE filmdatenbank;
USE filmdatenbank;

2. Tabelle „regisseur“ anlegen

CREATE TABLE regisseur (
  regisseur_id INT AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  birthday DATE,
  PRIMARY KEY (regisseur_id)
);

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)
);

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

  • modul/m290_guko/learningunits/lu04/theorie/b_crows_foot.txt
  • Zuletzt geändert: 2025/09/07 21:18
  • von gkoch