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.
Wir betrachten zunächst die die Tabelle musik, die wir duch eine Klasse
mit den entsprechenden Attributen und geeigneten Datentypen darstellen.
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:
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:
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.
Mögliche Lösung:
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.