Krähenfuss-Notation
Zwei Symbole an jedem Linienende, und zusammen kodieren sie jede Kardinalität, die eine relationale Datenbank durchsetzen kann. Die ganze Notation passt in einen Absatz; die Enden richtig herum zu bekommen dauert etwas länger.
8 Min. LesezeitER - crow's foot2 von 3
Die kurze Antwort
- Zwei Symbole je Ende: das innere ist das Minimum (Kreis null, Strich eins), das äussere das Maximum (Strich eins, Krähenfuss viele).
- Die Symbole sitzen an einem Ende und schränken dieses ein, gelesen werden sie vom anderen. Sie andersherum zu lesen ist der häufigste Krähenfuss-Fehler.
- Eine durchgezogene Linie ist eine identifizierende Beziehung - der Elternschlüssel ist Teil des Kindschlüssels. Gestrichelt heisst, der Fremdschlüssel ist ein gewöhnliches Attribut.
- Eine relationale Datenbank kann n:m nicht speichern. Jede solche Linie in einem logischen Modell ist der Hinweis, dass eine Zwischentabelle fehlt.
01Drei Symbole, vier Kombinationen#
Krähenfuß - korrekt: Information-Engineering-Notation - setzt an jedes Ende einer Beziehungslinie zwei Zeichen. Das weiter von der Entität entfernte ist das Maximum, das näher an der Entität das Minimum.
| Element | Notation | Was es bedeutet |
|---|---|---|
| Strich | ein Querstrich auf der Linie | Eins. Als äußeres Zeichen bedeutet er „höchstens eins“, als inneres „mindestens eins“. |
| Krähenfuß | drei Zinken | Viele. Immer nur äußeres Zeichen - ein Maximum ohne Obergrenze. |
| Kreis | ein kleiner Ring | Null. Immer nur inneres Zeichen - die Beziehung ist optional. |
Kombiniert ergeben sich genau vier Möglichkeiten, und das ist die ganze Notation:
| Element | Notation | Was es bedeutet |
|---|---|---|
| Genau eins | Strich und Strich. Verpflichtend, einfach. | |
| Null oder eins | Kreis, dann Strich. Optional, einfach. | |
| Eins oder mehr | Strich, dann Krähenfuß. Verpflichtend, mehrfach. | |
| Null oder mehr | Kreis, dann Krähenfuß. Optional, mehrfach. |
02Welches Ende das Symbol beschreibt#
Das ist die einzige Sache am Krähenfuß, die wirklich gegen die Intuition läuft, und sie erklärt die meisten falsch gelesenen Diagramme. Die Symbole an einem Ende beschreiben die Entität an diesem Ende, und man liest sie, während man sich auf diese Entität zubewegt.
Auf der vierten Linie im Diagramm oben sitzt der Krähenfuß am Order-Ende. Er bedeutet nicht „viele Kunden“. Er bedeutet: zu einem Kunden gehören null oder mehr Bestellungen. Sagen Sie es als Reise - „ich starte bei einem Kunden, folge der Linie und komme bei null oder mehr Bestellungen an“ - und die Richtung ist nicht mehr mehrdeutig.
Eine Gewohnheit, die das Problem ganz beseitigt: schreiben Sie die Verbphrase in Leserichtung auf die Linie und lesen Sie die Rückrichtung laut, bevor Sie weitergehen. Dreißig Sekunden pro Beziehung - und es findet Fehler, die in einem Dokument monatelang überleben.
03Identifizierend und nicht identifizierend#
Der Linienstil trägt eine zweite Information, und die betrifft Schlüssel statt Anzahlen.
| Element | Notation | Was es bedeutet |
|---|---|---|
| Nicht identifizierend | Gestrichelt. Das Kind hat einen eigenen Primärschlüssel und hält lediglich einen Fremdschlüssel auf den Elternteil. Eine Order hat eine order_id und vermerkt getrennt davon, zu welchem Kunden sie gehört. Der Normalfall. | |
| Identifizierend | Durchgezogen. Der Schlüssel des Elternteils ist Teil des Primärschlüssels des Kindes, das Kind kann ohne ihn also weder existieren noch identifiziert werden. Eine schwache Entität. |
Der Test ist eine Frage: ließe sich diese Zeile ohne Kenntnis ihres Elternteils identifizieren? Eine Bestellposition Nummer 3 ist ohne die Bestellung sinnlos - das ist identifizierend. Eine Bestellung von Kunde 41 ist unabhängig davon weiterhin Bestellung 8817 - das ist nicht identifizierend.
04Ein n:m auflösen#
Ein Krähenfuß an beiden Enden sagt „viele zu viele“, und keine relationale Datenbank kann das in zwei Tabellen speichern. Die Beziehung wird zu einer eigenen Entität - einer Verknüpfungs-, Assoziations- oder Link-Entität - die je einen Fremdschlüssel auf beide Seiten hält.
Daraus folgen zwei Dinge, und das zweite ist der Grund, das früh zu tun statt erst bei der Umsetzung:
- Die Verknüpfungsentität hat meist eigene Attribute. Eine Einschreibung hat ein Datum, eine Note, einen Status. Diese Attribute hatten keinen Ort, solange die Beziehung eine Linie war, und ihr Fehlen verbarg eine Lücke im Modell.
- Die Verknüpfungsentität verdient einen echten Namen.
Enrolment,Booking,Assignment- nichtStudentCourse. Ein Fachexperte erkennt das erste und kann das zweite nicht prüfen, und der Name ist meist ein Wort, das der Fachbereich schon benutzt.
Beachten Sie die Schlüssel in der Verknüpfungsentität oben: beide Fremdschlüssel bilden zusammen den Primärschlüssel, und genau das verhindert, dass sich derselbe Studierende zweimal in denselben Kurs einschreibt. Diese Einschränkung kam gratis aus sauberer Modellierung und wäre sonst eine Validierung gewesen, an die jemand gedacht hat.
05Gegen die Alternativen#
| Element | Notation | Was es bedeutet |
|---|---|---|
| Chen-Notation | Rauten und Ovale | Das Original. Beziehungen sind Rauten und Attribute Ovale an den Entitäten - was ausdrucksstark ist und viermal so viel Platz braucht. In der Lehre verbreitet, in der Praxis selten. |
| UML-Multiplizität | 0..1, 1..* | Zahlen an den Linienenden statt Symbolen. Präziser - sie kann 2..5 sagen - und langsamer über eine Wand voller Tabellen zu überfliegen. |
| IDEF1X | gefüllte Kreise | Ein US-Bundesstandard, dem Krähenfuß nahe, mit anderen Symbolen und strengeren Regeln für identifizierende Beziehungen. Begegnet Ihnen in Verwaltung und Verteidigung. |
| Krähenfuß | Kompakt, aus der Entfernung lesbar und von jedem Datenbankwerkzeug verstanden. Aus guten Gründen der Standard. |
Dazu greifen, wenn
- Jedes Diagramm mit mehr als etwa sechs Entitäten - es bleibt lesbar
- Ein Publikum, in dem DBAs und Data Engineers sitzen
- Ein Modell, aus dem DDL wird, wo die vier Fälle exakt auf Constraints abbilden
- Whiteboard-Arbeit, weil die Symbole auch schlecht gezeichnet überleben
Zu etwas anderem greifen, wenn
- Sie brauchen eine Schranke wie „zwischen zwei und fünf“ - nehmen Sie UML-Multiplizität
- Das Publikum ist ein UML-nahes Softwareteam und das Modell sind Domänenklassen
- Erste Prinzipien zu lehren, wo Chens Rauten die Beziehung sichtbar machen
- Eine ternäre Beziehung, die der Krähenfuß ohne Verknüpfungsentität nicht zeichnen kann
Nichts davon schließt sich aus. Sehr viele reale Projekte zeichnen Krähenfuß für die Datenbank und ein Klassendiagramm für das Domänenmodell und behalten beides, weil sie verschiedene Fragen zu denselben Substantiven beantworten.
06Häufige Fehler#
- Symbole am falschen Ende. Der häufigste Fehler in dieser Notation. Lesen Sie beide Sätze laut.
- Alles optional. Ein Kreis an jeder inneren Position heißt, das Modell behauptet keine Regeln - und jede davon wird stattdessen Anwendungscode.
- n:m im logischen Modell belassen. Konzeptionell in Ordnung, physisch unmöglich. Lösen Sie es auf und benennen Sie die Verknüpfung.
- Verknüpfungsentitäten durch Aneinanderreihen benannt.
OrderProductsagt einem Prüfer nichts;OrderLinesagt ihm alles. - Sich allein auf den Strichstil verlassen. Werkzeuge sind sich uneins. Zeigen Sie den zusammengesetzten Schlüssel auch im Kasten.
- Unbeschriftete Beziehungen. Das Verb macht die Linie laut lesbar - und das laute Lesen ist das Review.
Ist die Kardinalität geklärt, lautet die nächste Frage, welche Tabellen es überhaupt geben soll - und das ist Schema-Entwurf: Schlüssel, Normalisierung und der Weg vom Modell zum DDL.
In je einer Zeile
- 01Das äußere Symbol ist das Maximum, das innere das Minimum.
- 02Strich ist eins, Krähenfuß ist viele, Kreis ist null.
- 03Die Symbole beschreiben die Entität an ihrem eigenen Ende - lesen Sie auf sie zu.
- 04Jede Beziehung hat zwei wahre Sätze; prüfen Sie beide.
- 05Durchgezogen heißt, der Elternschlüssel ist Teil des Kindschlüssels; gestrichelt heißt, er ist es nicht.
- 06Ein n:m wird zu einer benannten Verknüpfungsentität, meist mit eigenen Attributen.
07Häufige Fragen#
Was bedeuten die Krähenfuss-Symbole?
An jedem Linienende stehen zwei Symbole. Das innere ist das Minimum: ein Kreis für null, also optional, oder ein Strich für eins, also verpflichtend. Das äussere ist das Maximum: ein Strich für eins oder der dreizinkige Krähenfuss für viele. Zusammen gelesen ergeben sie null-oder-eins, genau-eins, null-oder-mehr oder eins-oder-mehr.
Für welches Linienende gilt ein Krähenfuss-Symbol?
Die Symbole sitzen an einem Ende und schränken die dortige Entität ein, gelesen werden sie aber vom anderen. Ein Krähenfuss neben Bestellung in einer Kunde-zu-Bestellung-Beziehung heisst: ein Kunde hat viele Bestellungen. Es andersherum zu lesen ist der mit Abstand häufigste Krähenfuss-Fehler.
Was unterscheidet identifizierende und nicht identifizierende Beziehungen?
In einer identifizierenden Beziehung kann das Kind ohne den Elternteil nicht existieren, und dessen Schlüssel ist Teil des Kindschlüssels - gezeichnet als durchgezogene Linie. In einer nicht identifizierenden Beziehung ist der Fremdschlüssel ein gewöhnliches Attribut und das Kind steht für sich - gezeichnet als gestrichelte Linie.
Wie behandelt man eine n:m-Beziehung?
Man löst sie in eine Zwischentabelle auf: eine dritte Entität mit je einem Fremdschlüssel auf beide Seiten. Eine relationale Datenbank kann n:m nicht direkt speichern, jede solche Linie in einem logischen Modell ist also der Hinweis, dass noch eine Tabelle fehlt.
Wie verhält sich Krähenfuss zur UML-Multiplizität?
Sie drücken dieselben Einschränkungen in anderer Syntax aus. UML schreibt den Bereich als Text ans Ende der Assoziation, etwa 0..1 oder 1..*, während Krähenfuss ihn als Symbolpaar zeichnet. UML platziert die Multiplizität ausserdem am entgegengesetzten Ende zu dem, wo ein Krähenfuss-Leser sie erwartet - beim Wechsel zwischen beiden lohnt eine Kontrolle.
In dieser Reihe
- 01ER-Diagramme
- 02Krähenfuss-Notation
- 03Schemaentwurf
Passend dazu
Grundlagen
Modellierungspraxis
Strukturdiagramme
Notationsreferenz