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:
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:
Insgesamt gibt es zwischen zwei Entitätsmengen drei grundlegende Relationstypen. (Relationen zwischen drei oder Entitätsmengen sollen hier nicht betrachtet werden.)
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:
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!
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
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!