Crow's Foot cheat sheet

Læs relationer og kardinalitet i et entitets-relations-diagram

Hvad viser notation?

Crow's Foot viser, hvor mange forekomster af en entitet der kan eller skal høre sammen med én forekomst af en anden entitet.

Læsevejledning: Læs relationen fra en start-entitet til en slut-entitet. Man læser kun kardinalitetstegnene ved slut-entiteten. I Customer → Order aflæser vi altså kun tegnene ved Order: en kunde kan have 0 eller mange ordrer. Vil du læse den modsatte vej, vender du relationen om og aflæser kun tegnene ved Customer.

De tre grundsymboler

Crow's Foot-symboler for 0, 1 og mange samt kardinalitetskombinationer
Oversigt over symboler og kardinalitetskombinationer.

Cirkel betyder 0, en streg betyder 1, og kragefoden betyder mange. Symbolerne kombineres for at vise minimum og maksimum.

Sådan vises en entitet

En entitet vises som en kasse. Navnet står øverst, og attributterne står nedenunder. Markér primærnøglen som PK og fremmednøgler som FK. Crow's Foot beskriver relationerne mellem kasserne; uden entitetskasserne er diagrammet ikke komplet.

Engelske navne foretrækkes. Uanset sprog bruges ental for entiteter og tabeller: Customer, ikke Customers. Brug kun A-Z i tekniske navne: æ/Æ bliver ae/AE, ø/Ø bliver oe/OE, og å/Å bliver aa/AA.

Entitetskasse for Customer med primærnøgle og attributter
Eksempel på en entitetskasse.

Kombinationer

  • 0..1: ingen eller én
  • 1..1: præcis én
  • 0..N: ingen, én eller mange
  • 1..N: mindst én, eventuelt mange

Den første værdi er minimumskardinaliteten. Den anden er maksimumskardinaliteten.

Webshop-eksempel

Crow's Foot-diagram mellem Customer og Order med 1 og 0 til mange
Komplet diagram med entiteter, attributter, relation og kardinalitet.
  • En kunde kan have 0..N ordrer.
  • En ordre hører til 1..1 kunde.
  • Relationen er derfor 1-til-mange.
Designspørgsmål: Må en ordre eksistere uden en kunde? Svaret bestemmer, om relationen fra Order til Customer er 0..1 eller 1..1.

Mange-til-mange

Hvis en ordre kan indeholde mange produkter, og et produkt kan optræde i mange ordrer, har vi en N-M-relation.

Opret en relationstabel, for eksempel OrderLine(order_id, product_id, quantity). Så bliver N-M til to 1-N-relationer.

Husk ved tegning

  1. Skriv en sætning for relationen i begge retninger.
  2. Fastlæg minimum: er relationen valgfri eller påkrævet?
  3. Fastlæg maksimum: én eller mange?
  4. Begrund designvalget i domænebeskrivelsen (dokumentationen).
  5. Kontrollér, om en N-M-relation kræver en relationstabel.