Lösen Sie die fol­gen­de Auf­ga­be mit Post­greS­QL.

Die Theater-Datenbank: Modellierung

Lösen Sie die fol­gen­de Auf­ga­be mit Hil­fe von Star­UML. Über­set­zen Sie Ihr Modell anschlie­ßend in ein rela­tio­na­les Daten­bank­sche­ma. Lei­ten Sie zu guter Letzt dar­aus eine Fol­ge von SQL-DDL-Anwei­sun­gen ab und erstel­len Sie damit eine zuge­hö­ri­ge Post­greS­QL-Daten­bank.

Für spe­zi­el­le Syn­tax­fra­gen steht Ihnen die offi­zi­el­le Online-Doku­men­ta­ti­on von Post­greS­QL zur Ver­fü­gung.

Use Cases

Ein klei­nes Thea­ter (wie zum Bei­spiel die Augs­bur­ger Pup­pen­kis­te) ver­wal­tet den Ver­kauf sei­ner Ein­tritts­kar­ten mit einer Daten­bank. Fol­gen­de Use Cases sol­len mit drei Sys­te­men, die auf eine Daten­bank zugrei­fen, abge­deckt wer­den:

Theater-DB: Use Cases

Das Datenmodell

Erstel­len Sie für die oben auf­ge­führ­ten Use Cases mit Hil­fe von Star­UML ein zuge­hö­ri­ges Daten­mo­dell. Beach­ten Sie dabei fol­gen­de Aspek­te:

Es gibt nur eine Büh­ne (d.h. einen Thea­ter­raum), aber diver­se Ver­an­stal­tun­gen. Bei jeder Ver­an­stal­tung wird ein Stück auf­ge­führt. Jede Ver­an­stal­tun­gen, fin­det an einem bestimm­ten Tag zu einer bestimm­ten Uhr­zeit statt und dau­ert eine gewis­se Zeit.

Jedes Stück hat einen Titel, eine kur­ze Beschrei­bung und optio­nal ein Bild.

Jeder Ver­an­stal­tung ist eine so genann­te Ver­an­stal­tungs­ka­te­go­rie zuge­ord­net (Kin­der­vor­stel­lung, Erwach­se­nen­vor­stel­lung, Spe­cial Event etc.). Im All­ge­mei­nen ist die Ver­an­stal­tungs­ka­te­go­rie durch das Stück fest­ge­legt. Aller­dings kann es zu einem Stück durch­aus Ver­an­stal­tun­gen mit unter­schied­li­chen Ver­an­stal­tungs­ka­te­go­ri­en geben. Bei­spiels­wei­se kann Der klei­ne Was­ser­mann“ ein­mal als Kin­der­ver­an­stal­tung und ein­mal als Schü­ler­ver­an­stalung (für Schul­klas­sen) ange­bo­ten wer­den.

Das Thea­ter hat diver­se Sitz­plät­ze. Jedem Sitz­platz ist eine Kate­go­rie zuge­ord­net (Par­kett, Bal­kon, 1. Rang, 2. Rang etc.; in der Augs­bur­ger Pup­pen­kis­te bei­spiels­wei­se gibt es die Kate­go­ri­en rot, blau und grün) sowie eine Rei­hen­num­mer und eine Sitz­platz­num­mer.

Ein Besu­cher kann für eine Ver­an­stal­tung belie­big vie­le Sitz­plät­ze reser­vie­ren. Für sei­ne Reser­vie­rung erhält er eine Reser­vie­rungs­num­mer, die er ange­ben muss, wenn er die für ihn reser­vier­ten Kar­ten abho­len will. (Bes­ser ist es, einen sehr lan­gen Zufalls­string zu gene­rie­ren, der als QR-Code aus­ge­ge­ben wird.)

Der Preis für einen Sitz­platz hängt von der Sitz­platz­ka­te­go­rieund der Ver­an­stal­tungs­ka­te­go­rie ab. Vom Alter der Per­son hängt der Preis dage­gen nicht ab, d. h., Kin­der zah­len genau­so viel wie Erwach­se­ne.

Kar­ten, die direkt (d.h. ohne Reser­vie­rung) ver­kauft wer­den, wer­den eben­falls in die Reser­vie­rungs­ta­bel­le ein­ge­tra­gen, aller­dings mit dem Wert NULL als Reser­vie­rungs­num­mer.

CREATE-TABLE-Befehle

Schrei­ben Sie für ihr Daten­mo­dell die pas­sen­den CREA­TE-TABLE-Befeh­le, legen Sie eine zuge­hö­ri­ge Daten­bank an und fügen Sie mit Hil­fe von INSERT-Befeh­len ein paar sinn­vol­le Daten in Ihre Daten­bank ein.

Anmerkung

Für die­ses Daten­mo­dell gibt es vie­le Erwei­te­rungs­mög­lich­kei­ten. Eine wich­ti­ge Erwei­te­rung, an die Sie sich her­an­wa­gen soll­ten, ist die Ein­füh­rung einer Per­so­nen­ka­te­go­rie (Kind, Schüler/​Student, Erwach­se­ner), die bei der Berech­nung des Prei­ses eben­falls berück­sich­tigt wird und die bei der Reser­vie­rung für jede Kar­te ange­ge­ben wer­den muss.

Wie ändert sich Ihr Modell, wenn es in Ihrem Thea­ter meh­re­re Büh­nen gibt, mit jeweils eige­nen Sitz­plät­zen, teil­wei­se unter­schied­li­chen Sitz­platz­ka­te­go­ri­en und und evtl. auch unter­schied­li­chen Prei­sen?