Datenbanken mit mehreren Tabellen

In der bisherigen Musikdatenbank mit der Tabelle musik sind vielfältige Informationen redundant gespeichert. Im Folgenden werden wir versuchen, diese Redundanz zu vermeiden, indem wir die verschieden Informationen in verschiedenen Tabellen speichern.

Klassen und Tabellen

Wir betrachten zunächst die die Tabelle musik, die wir duch eine Klasse mit den entsprechenden Attributen und geeigneten Datentypen darstellen.

Überlege, welche Attribute der Klasse Information jeweils zwingend zueinander gehören. Erstelle ein Klassendiagramm, dass diese Informationen in vier getrennten Klassen beinhaltet. Überlege dir geeignete Namen für die Klassen.
Mögliche Lösung:

In der Tabelle einer Datenbank sollten die Datensätze eindeutig durch einen Schlüssel bestimmt sein. Das heißt, dass es ein Attribut oder eine Kombination von Attributen gibt, in denen zwei Datensätze nicht übereinstimmen. In der Tabelle Band wäre der Bandname ein Schlüssel, da davon auszugehen ist, dass zwei Bands nie den gleichen Namen besitzen. Bei einer CD kann CDTitel als Schlüssel dienen, bei der Tabelle Lied das Attribut LiedTitel.
Bei der Klasse Musiker wäre als Schlüssel z. B. die Kombination von Vorname und Nachname denkbar. Der Nachteil dabei wäre aber, dass der eindeutige Schlüssel recht lang wäre. Außerdem dürften zwei Personen nicht den gleichen Vor- und Nachnamen haben.
In der Praxis verwendet man deshalb selten Attribute der Klassen als Schlüssel, sondern ergänzt die Tabelle um künstliche Schlüssel, die aus fortlaufenden natürlichen Zahlen bestehen. Einen solchen künstlichen Schlüssel verwenden wir bei der Klasse Person:

Beziehungen zwischen Klassen

Die vier Klassen Band, Person, CD und Lied trennen die Informationen sinnvoll, gleichzeitig ist damit aber nicht mehr klar, in welcher Beziehung die einzelnen Datensätze zueinander stehen. Im Klassendiagramm fügt man deshalb eine Linie zwischen den Klassen ein und beschriftet diese mit einer aussagekräftigen Bezeichnung. Ein Pfeil an der Beschriftung zeigt die Leserichtung an.
Für die Klassen Band und Person wäre z. B. eine der folgenden Beziehungen möglich:

oder

Die Bezeichnung von Beziehungen zwischen zwei Klassen ist also nicht eindeutig festgelegt, sondern sollte nur den Sachzusammenhang darstellen.

Ergänze das Klassendiagramm um die sinnvollen Beziehungen zwischen den Klassen und beschrifte diese sinnvoll.

Mögliche Lösung:

Kardinalitäten von Beziehungen

Nachdem die grundsätzliche Beziehung zwischen den Klassen geklärt ist, müssen wir uns vor der Umsetzung in der Datenbank noch Gedanken darüber machen, wie viele Objekte der einen Klassen mit wie vielen Objekten (Datensätzen) der anderen Klassen in Verbindung stehen können. Diese Angaben nennt man Kardinalitäten

In unserem Beispiel der Musikdatenbank gehen wir von Folgendem aus:

Im Klassendiagramm wird die Anzahl Objekte am Ende der Beziehungslinie vermerkt. Die folgende interaktive Grafik erklärt die Angaben am Beispiel:

Manchmal wird bei den Kardinalitäten aber nur die maximale Anzahl der mit einem Objekt in Beziehung stehenden Objekten der anderen Klassen angegeben. D. h. auf Angabe der minimalen Anzahl von Objekten wird verzichtet.

Das folgende Diagramm zeigt das Datenmodell einer Schule, bei der jede Klasse genau eine Klassenleiterin bzw. einen Klassenleiter und natürlich auch Schülerinnen und Schüler besitzt. Eine Klasse wird in genau einem Raum unterrichtet, aber nicht alle Räume werden zum Unterricht genutzt.
Ergänze die Beziehungen zwischen den Klassen und gib die Kardinalitäten an.

Mögliche Lösung:

Bei der Beziehung zwischen Klassen ist es auch möglich, dass zu einem Objekt der einen Klasse beliebig viele Objekt der anderen Klassen gehören und umgekehrt. In diesem Fall verwendet man für die Angabe der Kardinalitäten die Buchstaben m und n.
Beispiel:
Auf Fotos sind mehrere Personen abgebildet. Eine Person kann auf verschiedenen Fotos zu finden sein.

Das folgende Klassendiagramm zeigt den Zusammenhang von Städten, Ländern und Flüssen. Bei der Angabe der Kardinalitäten sind Fehler unterlaufen. Erläutere diese und verbessere sie.

Mögliche Lösung:

Bemerkung:
Falls bei einer Beziehung auf beiden Seiten mehrere Objekte in Verbindung stehen können, verwendet man häufig die Buchstaben m und n.

Beim Entwurf (Modellierung) von Datenbanken muss man überlegen, wie Informationen sinnvoll getrennt in verschiedenen Tabellen gespeichert werden können, um Redundanz zu vermeiden. Dabei eignen sich Klassendiagramme. In Beziehung stehende Klassen werden mit beschrifteten Verbindungslinien gekennzeichnet. Die Kardinalität beschreibt zudem, wie viele Objekte einer Klasse mit einem Objekt einer anderen Klasse in Beziehung stehen können.