Die Olympia-Datenbank: Modellierung

Lösen Sie die folgende Aufgabe mit PostgreSQL.

Für spezielle Syntaxfragen steht Ihnen die offizielle Online-Dokumentation von PostgreSQL zur Verfügung.

Die Datentypen werden in Kapitel 8 des PostgreSQL-Manuals beschrieben. Die Datumstypen DATE und TIMESTAMP finden Sie im PostgreSQL-Manual in den Abschnitten Date/Time Types und Date/Time Functions and Operators.

Das Datenmodell

Entwickeln Sie mit Hilfe von StarUML ein Datenmodell für eine Datenbank, die bei Olympischen Spielen eingesetzt werden kann (Tipp: Händler-DB; einfacher ist eine Realisierung des Datenmodells gemäß dem Händler-DB-Datenmodell aus Aufgabe 1, das Sie als erstes Modell auf der zuvor genannten Seite finden; wesentlich besser, aber auch deutlich aufwendiger ist ein Datenmodell in Anlehnung an das verbesserte Händler-DB-Datenmodell, das sie ebenfalls auf der zuvor genannten Seite finden):

An den Spielen nehmen Sportler teil. Diese werden durch einen Identifikator eindeutig identifiziert. Außerdem sind für jede Sportlerin und jeden Sportler Vorname, Nachname, Geburtsdatum, das Geschlecht ('w' oder 'm') sowie das Land (Länderkürzel mit drei Buchstaben), für das sie bzw. er antritt, bekannt. Ein Sportler kann durch den vollständigen Namen, den Geburtstag und das Land eindeutig identifiziert werden. Der Nachname, das Geburtsdatum und das Land müssen angegeben werden, der Vorname ist optional.

Bei Olympia werden Wettkämpfe ausgetragen. Von einem Wettkampf sind neben einem künstlichen Identifikator die Sportart (Schwimmen, Rudern ...), die Wettkampfart (100m Kraulen, 400m Lagen ...), das Geschlecht ('w', 'm' und evtl. 'x' für „mixed“), die Sportstätte (Schwimmhalle, Stadion ...) und der Zeitpunkt des Wettkampfstarts bekannt. Alle Werte müssen angegeben werden. Die Sportart, die Wettkampfart sowie das Geschlecht identifizieren gemeinsam einen Wettkampf eindeutig.

Sportler melden sich zur Teilnahme an Wettkämpfen an und nehmen später auch daran teil. Manche Sportler werden im Rahmen einer oder auch mehrerer Wettkampfteilnahmen auf Doping hin untersucht. Das Ergebnis kann jeweils positiv (true) oder negativ (false) ausfallen. Solange der Sportler nicht getestet wurde, ist das Dopingergebnis unbekannt (null) .

Ein Sportler kann jederzeit für einen Wettkampf disqualifiziert werden (z. B. aufgrund eines Startfehlers). Insbesondere wird jeder Sportler, dem für den zugehörigen Wettkampf Doping nachgewiesen wurde, immer auch disqualifiziert. Zu Beginn eines Wettkampfs ist ein Sportler defaultmäßig nicht disqualifiziert. Nach Ende eines Wettbewerbs wird für jeden Sportler der Platz notiert, den er in diesem Wettbewerb erzielt hat (sofern er nicht disqualifiziert wurde). Dieser Platz muss dann natürlich größer als 0 sein.

CREATE-TABLE-Befehle

Schreiben Sie für ihr Datenmodell die passenden CREATE-TABLE-Befehle, legen Sie eine zugehörige Datenbank an und fügen Sie mit Hilfe von INSERT-Befehlen ein paar sinnvolle Daten in Ihre Datenbank ein.

Tipp: Händler-DDL-Skript oder (besser) Händler-DDL-Skript erweitert

Anmerkung

Beachten Sie, dass es noch viele weitere Informationen gibt, die in einer echten Datenbank gespeichert werden sollten: Nähere Informationen zum Sportler (wie z. B. Blutwerte, wettkampfunabhängige Dopingtests etc.), Teamwettbewerbe, individuelle Startzeiten für Sportler (wie es z. B. im Tennis notwendig wäre), nähere Informationen zum Wettkampf (z. B. das Wettkampfende, die Schieds- und Preisrichter, die Olympia- und Weltrekorde etc.), nähere Informationen zum Wettkampfverlauf (z. B. Zeiten und Zwischenzeiten). Dies brauchen Sie jetzt aber nicht zu modellieren. Es reicht, wenn Sie die obigen Angaben als Datenmodell umsetzen.