Inhaltsverzeichnis

Modellierung von Datenbanken

Datenbanken müssen so aufgebaut sein, dass Anomalien, Inkonsistenzen und Redundanzen vermieden werden. Deshalb geht man bei der Modellierung von Datenbanken in zwei Schritten vor:

ER-Modellierung

Begriffe

  • Entität (Entity) - eindeutig identifizierbares Datenobjekt
  • Entitätsmenge ( Entitätsklasse) – Zusammenfassung von Entitäten mit gemeinsamen Eigenschaften
  • Attribut – Eigenschaft der Entitätsmenge
  • Attributwert - konkreter Wert eines Attributs
  • Primärschlüssel – minimale Menge von Attributen zur eindeutigen Identifikation der Entität
  • Relationship – Beziehung zwischen Entitätsmengen

Symbole in ER-Diagrammen

Ein ER-Diagramm ist die grafische Darstellung eines bestimmten praktischen Sachverhalts und seiner Zusammenhänge, für den eine Datenbank erstellt werden soll. Aus dem ER-Diagramm werden dann die Datenbanktabellen (relationale Modellierung) abgeleitet. Die folgenden grafischen Elemente kommen in einem ER-Diagramm vor:

Relationstypen

Insgesamt gibt es zwischen zwei Entitätsmengen drei grundlegende Relationstypen. (Relationen zwischen drei oder Entitätsmengen sollen hier nicht betrachtet werden.)

Beispiel für eine Modellierungsaufgabe

In dieser Aufgabe wird ein Teil von Instahub (https://instahub.org/) vereinfacht modelliert.

In Instahub gibt es User (id, username, Name, Größe, Geschlecht, Geburtsdatum, Ort) und Fotos (id, Beschreibung, erstellt am, URL). Ein Foto kann von mehreren Nutzern kommentiert werden. Ein Nutzer kann mehrere Fotos kommentieren.

Lösung:

Aufgaben

Aufgabe 1

Welche Kardinalität hat die jeweilige Relation?

Relation Kardinalität
Freiberufler und Firma
Mutter und Kind
Computer und Nutzer
Eigentümer und Fahrzeug
Schüler und Schülerausweis
Blatt und Baum
Kind zu einem Paar Großeltern

Aufgabe 2

Erstelle für die folgenden Sachverhalte jeweils ein ER-Diagramm! Kennzeichne sinnvolle Primärschlüssel!

Relationale Modellierung

Im nächsten Schritt sollen aus dem ER-Diagramm die Tabellen abgeleitet werden. Dazu benötigen wir noch einen weiteren Begriff:

Fremdschlüssel - Attribut, welches in einer anderen Tabelle Primärschlüssel ist.

Zum Aufschreiben der Tabellen verwenden wir die folgenden Konventionen:

Wir betrachten bei unseren Aufgaben nur einfache ER-Diagramme, bei denen die Relationen keine Attribute haben. Deshalb können wir zum Ableiten der die folgenden Vereinfachten Regeln verwenden:

Regeln zum Ableiten der Tabellen

  • Jede Entitätsmenge bildet eine eigene Tabelle in der die Attribute als Spaltennamen vorkommen.
  • Bei einer 1-1-Relation erscheint der Primärschlüssel der einen Entitätsmenge als Fremdschlüssel in der Tabelle der anderen Entitätsmenge.
  • Bei einer n-1-Relation erscheint der Primärschlüssel der Seite 1 als Fremdschlüssel in der Tabelle der Seite n.

Beispiel: Ableitung der Tabellen aus dem Beispiel-ER oben

1. Schritt: Wir wenden die Regel 1 an und lassen die Tabellen offen:

$\text{User} \left(\underline{\text{id}}, \text{username}, \text{Name}, \text{Größe}, \text{Geschlecht}, \text{Geburtsdatum}, \text{Ort}\right.$ $\text{Foto} \left( \underline{\text{id}}, \text{Beschreibung}, \text{erstellt_am}, \text{URL} \right.$

2. Schritt: Jetzt werden die einzelnen Relationen entsprechend den Regeln 2 bis 4 abgearbeitet und weitere Tabellen bzw. Fremdschlüssel ergänzt. Wenn alle Relationen abgearbeitet sind, können die Tabellen geschlossen werden.

In unseren Fall kommt die Regel 4 zur Anwendung und die anderen Tabellen können geschlossen werden. Zu beachten ist, dass die beiden Fremdschlüssel in der Tabelle Kommentiert denselben Namen haben. Deshalb ergänzt man den Namen der Ausgangstabelle.

$\text{User} \left(\underline{\text{id}}, \text{username}, \text{Name}, \text{Größe}, \text{Geschlecht}, \text{Geburtsdatum}, \text{Ort}\right)$ $\text{Foto} \left( \underline{\text{id}}, \text{Beschreibung}, \text{erstellt_am}, \text{URL} \right)$

$\text{Kommentiert} \left( \underline{\overline{\text{User.id}}, \overline{\text{Foto.id}}} \right)$

Aufgabe 3

Leite aus den ER-Diagrammen der Aufgabe 2 die Tabellen ab!