Damit in der Datenbank auch die richtige Struktur ist, um Daten gut einzupflegen, zu verändern und abzufragen, muss man sich die reale Situation, die man in der Datenbank abbilden möchte, gut anschauen und geeignet in ein Modell übertragen. Dabei hilft ein objektorientiertes Datenmodell, auch Objektmodell genannt.
In einem objektorientierten Datenmodell kann man (zum Beispiel in einem Klassendiagramm) direkt alle relevanten Klassen, Attribute und Beziehungen sehen. Wie immer in einem Modell sollte hierbei auf das Nötige reduziert werden. Was für die Arbeit mit den Daten wichtig ist, steht im Pflichtenheft.
Vorgehen bei der Modellierung
Beim Modellieren geht man häufig von einem oder mehreren Texten (Userstories) aus und muss identifizieren, was wichtig für das Modell ist.
Auch wenn man sich selbst manchmal denkt "Aber das ist doch auch wichtig" sollte man sich auf die Angaben aus den Texten konzentrieren, damit das Modell nicht unnötig unübersichtlich wird!
Objekte identifizieren
Zunächst sucht man aus den Texten alle Objekte (Ja, in der Informatik können auch Menschen Objekte sein) heraus, die vorkommen. Häufig sind es die Subjekte eines Satzes. Man kann sie zum Beispiel in einer Farbe unterstreichen.
Beispiel: "Das X7 Mountainbike hat 21 Gänge, das G21 Rennrad nur einen. Die Mountainbike-Reifen haben 20 Zoll und sind rot."
Klassen identifizieren
Als Nächstes fasst man diese Objekte in Klassen zusammen. Manchmal stehen auch schon Klassen in den Texten. Diese kann man dann direkt verwenden.
Beispiel: "Das X7 Mountainbike hat 21 Gänge, das G21 Rennrad nur einen. Die Mountainbike-Reifen haben 20 Zoll und sind rot."
Die Klasse zu Mountainbike und Rennrad ist FAHRRAD, die zu Mountainbike-Reifen ist REIFEN.
Attribute identifizieren
Man sucht nun alle Eigenschaften (in der Informatik: Attribute) zu den Klassen heraus. Dabei sollte man für gegebene Attributwerte passende Bezeichner finden.
Beispiel: "Das X7 Mountainbike hat 21 Gänge, das G21 Rennrad nur einen. Die Mountainbike-Reifen haben 20 Zoll und sind rot."
Für die Klasse FAHRRAD finden sich die Attribute Modell und Gangzahl. Je nach Szenario ist eventuell auch noch die Art ein Attribut. Für die Reifen ist es die Größe und die Farbe:
FAHRRAD(Modell, Gangzahl, Art)
REIFEN(Größe, Farbe)
Beziehungen zwischen den Klassen
Zuletzt schaut man, welche Verbindungen es zwischen den Klassen gibt. Diese sollte man nur angeben, wenn sie von der Situation verlangt sind.
Beispiel: "Das X7 Mountainbike hat 21 Gänge, das G21 Rennrad nur einen. Die Mountainbike-Reifen haben 20 Zoll und sind rot."
Ein FAHRRAD hat REIFEN. Für's Erste wird diese Beziehung nur ohne genauere Angaben im Klassendiagramm dargestellt. Interessierte können sich Beziehungen zwischen Tabellen anschauen.

Beispiel: Musikdatenbank
Ein neuer Streaminganbieter für Musik wird entwickelt. Er brüstet sich damit, am allerbesten auf die Anfragen der Nutzer antworten zu können. Damit er dieses Versprechen halten kann, hat er zuvor Test-Nutzeranfragen gesammelt.
Daraus haben sich für das Pflichtenheft folgende Anforderungen ergeben:
Nutzer wollen wissen, von wem ein bestimmtes Lied ist.
Nutzer wollen sich alle Lieder und alle Alben eines Interpreten anschauen.
Nutzer wollen sich alle Lieder eines Albums ausgeben lassen.
Nutzer wollen wissen, wie lang ein Lied ist.
Nutzer wollen Lieder, die zu einer bestimmten Stimmung (z.B. traurig) passen.
Nutzer wollen Lieder eines bestimmten Genres hören.
Nutzer wollen wissen, was die Hauptgenre eines Interpreten ist.
Nutzer wollen wissen, wie lang ein Musiker bereits aktiv ist.
Erstelle ein objektorientiertes Datenmodell mit Klassendiagramm zum Pflichtenheft.
Fühlst du dich von den Nutzern gut vertreten? Welche Informationen interessien dich zu Liedern oder Interpreten? Wie verändern sie das Diagramm? Schreib es in die Kommentare oder noch besser direkt in die Lösung!
Was könnte der Streaminganbieter in Bezug auf die Nutzerdaten ins Pflichtenheft schreiben? Wie verändert das das Klassendiagramm?