Datenbankmodellierung (Lernzielkontrolle zum Entity-Relationship-Modell) – Anwendungsentwickler-Podcast #48

Dieser Beitrag ist Teil 10 von 14 in der Serie Lernzielkontrollen.

Eine Kernaufgabe vieler Softwareentwickler – auch in der Abschlussprüfung – ist die Modellierung von Datenbanken. In der achtundvierzigsten Episode des Anwendungsentwickler-Podcasts gehe ich daher die Schritte bei der Modellierung von Datenbanken mit dem Entity-Relationship-Modell durch.

Inhalt

Modellierung mit dem Entity-Relationship-Modell

  • Welche Bestandteile hat ein Entity-Relationship-Modell (ERM) und wie sehen sie (in der Chen-Notation) aus?
    • Entitätstypen (Rechtecke), Attribute (Ovale), Beziehungstypen (Striche mit Rauten) mit Kardinalitäten.
    • Primärschlüssel werden unterstrichen.
    • Fremdschlüssel sind nicht (!) enthalten.
    • m:n-Beziehungen werden nicht (!) aufgelöst.
  • Vorgehensweise bei der Bestimmung der Kardinalität einer Beziehung: Du musst für die Beziehung zwischen den beiden Entitäten in beide Richtungen separat (!) überlegen, wie viele Ausprägungen der anderen Entität zu einer Ausprägung der aktuellen Entität gehören. Also immer zwei (!) Sätze bilden, die mit „1“ beginnen. Dann nimmst du die beiden Ergebnisse der jeweiligen Gegenseite und bist fertig. Beispiele:
    • Ein Login ist genau einem (1) Benutzer zugeordnet. Ein Benutzer hat genau einen (1) Login. -> 1:1
    • Ein Artikel gehört zu einer (1) Warengruppe. Eine Warengruppe hat mehrere (n) Artikel. -> 1:n
    • Ein Hund hat mehrere (m) Herrchen. Ein Herrchen hat mehrere (n) Hunde. -> m:n
  • Wie funktioniert die crow’s foot notation?
    • Anstatt die Anzahl (0, 1, n, 0..1 usw.) der zugehörigen Datensätze an die Beziehung zu schreiben, wird eine grafische Darstellung verwendet. Die Beziehungslinien werden um 0, 1 oder den Krähenfuß (n) ergänzt.
  • Wie kommt man zu einem ER-Modell?
    • Substantive im Aufgabentext (bzw. der Domäne) suchen. Sie sind potentielle Entitätstypen.
    • Ggfs. konkrete Werte in abstrakte Konzepte übersetzen (z.B. Mercedes in Auto oder gelb in Farbe) und Substantive ergänzen.
    • Beschreiben die Substantive andere Substantive werden sie zu Attributen. Die beschriebenen Substantive sind dann Entitätstypen.
    • Ggfs. sinnvolle/notwendige Attribute ergänzen (z.B. Vorname und Nachname bei Personen).
    • Primärschlüssel kennzeichnen und ggfs. ergänzen.
    • Beziehungen zwischen Entitätstypen einzeichnen und Kardinalitäten festlegen.
    • Ggfs. Attribute an die Beziehungen hängen.
    • Restliche Substantive sinnvoll als Attribute einsortieren oder streichen.
    • Fertiges Datenmodell mit Beispielen aus der Praxis verifizieren.

Literaturempfehlungen

  • Einsteigern ins Thema Datenmodellierung empfehle ich die Artikelreihe von Dr. Veikko Krypczyk im Entwickler Magazin. Der erste Artikel ist frei verfügbar: Datenbanken: Grundlagen und Entwurf – entwickler.de.
  • Das Beispiel (Telefonliste) für den Algorithmus zum Erstellen eines Entity-Relationship-Modells habe ich aus einem der Prüfungstrainer für die Abschlussprüfung*.
    Prüfungstrainer Fachinformatiker Anwendungsentwicklung (Affiliate)*
  • Ein tolles Buch, um einmal über den Tellerrand der relationalen Datenbanken hinweg zu schauen, ist Seven Databases in Seven Weeks*. Eine relationale Datenbank (PostgreSQL) wird vorgestellt, aber der Rest des Buches behandelt die unterschiedlichsten Typen von (NoSQL-)Datenbanken und ihre Besonderheiten – gerade auch ber der Datenmodellierung. Absolut lesenswert für jeden Softwareentwickler.
    Eric Redmond - Seven Databases in Seven Weeks (Affiliate)*

Links

Navigation der Serie<< Objektorientierung Teil 2 (Lernzielkontrolle) – Anwendungsentwickler-Podcast #44Datenbankmodellierung (Lernzielkontrolle zum relationalen Tabellenmodell) – Anwendungsentwickler-Podcast #49 >>

2 thoughts on “Datenbankmodellierung (Lernzielkontrolle zum Entity-Relationship-Modell) – Anwendungsentwickler-Podcast #48

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax