Lösen Sie die folgende Aufgabe mit PostgreSQL.
Die Theater-Datenbank: Modellierung
Lösen Sie die folgende Aufgabe mit Hilfe von StarUML. Übersetzen Sie Ihr Modell anschließend in ein relationales Datenbankschema. Leiten Sie zu guter Letzt daraus eine Folge von SQL-DDL-Anweisungen ab und erstellen Sie damit eine zugehörige PostgreSQL-Datenbank.
Für spezielle Syntaxfragen steht Ihnen die offizielle Online-Dokumentation von PostgreSQL zur Verfügung.
Use Cases
Ein kleines Theater (wie zum Beispiel die Augsburger Puppenkiste) verwaltet den Verkauf seiner Eintrittskarten mit einer Datenbank. Folgende Use Cases sollen mit drei Systemen, die auf eine Datenbank zugreifen, abgedeckt werden:

Das Datenmodell
Erstellen Sie für die oben aufgeführten Use Cases mit Hilfe von StarUML ein zugehöriges Datenmodell. Beachten Sie dabei folgende Aspekte:
Es gibt nur eine Bühne (d.h. einen Theaterraum), aber diverse Veranstaltungen. Bei jeder Veranstaltung wird ein Stück aufgeführt. Jede Veranstaltungen, findet an einem bestimmten Tag zu einer bestimmten Uhrzeit statt und dauert eine gewisse Zeit.
Jedes Stück hat einen Titel, eine kurze Beschreibung und optional ein Bild.
Jeder Veranstaltung ist eine so genannte Veranstaltungskategorie zugeordnet (Kindervorstellung, Erwachsenenvorstellung, Special Event etc.). Im Allgemeinen ist die Veranstaltungskategorie durch das Stück festgelegt. Allerdings kann es zu einem Stück durchaus Veranstaltungen mit unterschiedlichen Veranstaltungskategorien geben. Beispielsweise kann „Der kleine Wassermann“ einmal als Kinderveranstaltung und einmal als Schülerveranstalung (für Schulklassen) angeboten werden.
Das Theater hat diverse Sitzplätze. Jedem Sitzplatz ist eine Kategorie zugeordnet (Parkett, Balkon, 1. Rang, 2. Rang etc.; in der Augsburger Puppenkiste beispielsweise gibt es die Kategorien rot, blau und grün) sowie eine Reihennummer und eine Sitzplatznummer.
Ein Besucher kann für eine Veranstaltung beliebig viele Sitzplätze reservieren. Für seine Reservierung erhält er eine Reservierungsnummer, die er angeben muss, wenn er die für ihn reservierten Karten abholen will. (Besser ist es, einen sehr langen Zufallsstring zu generieren, der als QR-Code ausgegeben wird.)
Der Preis für einen Sitzplatz hängt von der Sitzplatzkategorie und der Veranstaltungskategorie ab. Vom Alter der Person hängt der Preis dagegen nicht ab, d. h., Kinder zahlen genauso viel wie Erwachsene.
Karten, die direkt (d.h. ohne Reservierung) verkauft werden, werden ebenfalls in die Reservierungstabelle eingetragen, allerdings mit dem Wert NULL
als Reservierungsnummer.
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.
Anmerkung
Für dieses Datenmodell gibt es viele Erweiterungsmöglichkeiten. Eine wichtige Erweiterung, an die Sie sich heranwagen sollten, ist die Einführung einer Personenkategorie (Kind, Schüler/Student, Erwachsener), die bei der Berechnung des Preises ebenfalls berücksichtigt wird und die bei der Reservierung für jede Karte angegeben werden muss.
Wie ändert sich Ihr Modell, wenn es in Ihrem Theater mehrere Bühnen gibt, mit jeweils eigenen Sitzplätzen, teilweise unterschiedlichen Sitzplatzkategorien und und evtl. auch unterschiedlichen Preisen?