Inhaltsverzeichnis

Datenmodellierung

Musteraufgabe

Lea und Dominik gehen in den Schwimmverein. Um Ihrem Trainer die Arbeit zu erleichtern, wollen sie eine Datenbank für die Vereinsverwaltung zu erstellen. Dazu sammeln Sie zuerst die Anforderungen anhand von Use-Cases:

  • Einmal im Jahr wird an alle Vereinsmitglieder die jährliche Beitragsrechnung per Post versandt.
  • Die ausstehenden und gezahlten Beiträge sollen gespeichert werden
  • Vor Turnieren ist es wichtig, alle Teilnehmer telefonisch erreichen zu können, damit letzte Details abgesprochen werden können. Es soll möglich sein, beliebig viele Telefonnummern je Mitglied zu speichern und zu vermerken, ob es sich um eine Festnetz- oder Handynummer handelt.
  • Der Verein ist in vier Teilgruppen unterteilt: Schwimmschule, "Goldfische" (Kinder bis 13), Jungschwimmer (bis 17) und Erwachsenenmannschaft.
  • Jede Teilgruppe hat ein- bis zwei Leiter/innen, die üblicherweise zusätzlich einer anderen Gruppe als Mitglied angehört. Die Leiterin der Goldfische schwimmt beispielsweise in der Erwachsenenmannschaft mit.
  • Es gibt verschiedene Schwimmdisziplinen, z.B. 50 m Kraul, 1 km Kraul, 400 m Brustschwimmen usw. Für jedes Mitglied sollen die Bestzeiten für jede Disziplin auf 1/100 s genau speicherbar sein.

Wir wollen im folgenden das objektorientierte Datenmodell entwickeln und dieses dann in ein relationales Modell überführen.

Datenmodell

Zur Relation "schwimmt" soll noch die Bestzeit je Mitglied und Disziplin gespeichert werden. Dies kann ganz einfach durch ein zusätzliches Attribut "bestzeit_hundertstel_s" in der Beziehungstabelle zur n:m-Relation geschehen. Im Datenmodell wird dies durch die gestichelte Linie veranschaulicht.

Relationales Modell ( = Datenbankschema)

Schritte zur Übertragung des Datenmodells in ein relationales Modell:

  • Falls noch nicht geschehen: Primärschlüssel je Tabelle hinzufügen
  • Jede 1:n-Relation wird durch ein zusätzliches Fremdschlüsselattribut auf der "n-Seite" realisiert.
  • Jede n:m-Relation wird durch eine Beziehungstabelle realisiert.

Wir schreiben das relationale Modell in folgender Kurzform:

Bemerkungen:

Aufgabe 1: Volleyballturnier

Das Emmy Noether-Gymnasium in Kleinschwabhausen möchte für die umliegenden Schulen (Name) ein Volleyballturnier ausrichten. Die Daten dazu werden in einer Datenbank verwaltet. Gespeichert werden sollen alle Mannschaften (Name, Altersklasse, Geschlecht (m/w/gemischt), Schule) zusammen mit den Schüler/innen (Rufname, Familienname, Geschlecht, Jahrgangsstufe) sowie die Daten der Spiele (wer gegen wen; Ergebnis, Schülerschiedsrichter).

  1. Zeichne ein Klassendiagramm (ohne Attribute).
  2. Erstelle das Datenbankschema.

Mögliche Lösung

Aufgabe 2: Fahrradgeschäft

Ein Fahrradgeschäft möchte die Daten seiner Kundinnen (Rufname, Familienname, Anschrift, Tel), Waren (Bezeichnung, Preis, Lieferant, Einheit, Vorrat), Lieferanten (Name, Anschrift, Tel, Ansprechpartner) sowie Bestellungen in einer Datenbank speichern. Die Datenbank soll insbesondere die Beantwortung folgender Fragen ermöglichen:

Bemerkung: Die Lieferanten beliefern das Fahrradgeschäft mit Waren. Das Fahrradgeschäft verkauft die Waren an die Kund/innen.

  1. Zeichne das Klassendiagramm.
  2. Erstelle das Datenbankschema.

Mögliche Lösung

Aufgabe 3: Autovermietung

Eine Autovermietung hat einen Fuhrpark voller Autos, die zu unterschiedlichen Typen gehören (z.B. BMW i3, VW Passat, …). Sie werden gegen eine - je nach Typ unterschiedliche - tägliche Gebühr vermietet. Das Unternehmen benötigt eine Datenbank, in der die Daten seiner Autos (Kennzeichen, Typ) und seiner Kunden (Rufname, Familienname, Anschrift, Telefnonummer) gespeichert werden sollen. Zudem will es wissen, welcher Kunde wann (von … bis) welches Auto entliehen oder reserviert hat und ob die Gebühr schon bezahlt ist.

  1. Zeichne das Klassendiagramm.
  2. Erstelle das Datenbankschema.

Mögliche Lösung

Aufgabe 4: Lager

Die Daten eines großen Baustofflagers sollen in einer Datenbank verwaltet werden. Das Lager besteht aus mehreren Hallen, in denen jeweils mehrere Regale stehen. Jede Halle hat einen Namen (z.B. „Halle 1“), jedes Regal ist mit einem – je Halle eindeutigen – Buchstaben bezeichnet. Auf den Regalen liegen Waren, zu denen jeweils

gespeichert werden sollen.
Ist von einer Ware viel vorhanden, so kann es sein, dass sie auf mehreren Regalen verteilt lagert. Es kann aber auch sein, dass sich in einem Regal mehrere verschiedene Waren befinden. Aus der Datenbank soll sich die Information entnehmen lassen, in welchen Regalen welche Waren in welcher Anzahl lagern.

Beispielsweise könnten 20 Sack Trasszement in Regal C, Halle 1 lagern, weitere 30 Sack Trasszement in Regal F, Halle 4.

Mögliche Lösung...