Use-Cases

Im fol­gen­den wer­den die Use-Cases für eine Daten­bank zur Unter­stüt­zung des Kar­ten­ver­kaufs eines klei­nen Thea­ters (wie der Augs­bur­ger Pup­pen­kis­te) auf­ge­führt.

Use-Cases Theater-Datenbank

Datenmodell 1

Crea­te-Table-Befeh­le: theater1.sql

Erzeu­gung eines ech­ten QR-Codes, d. h. eines QR-Code-Bil­des:
SELECT bc_qrcode(qr_code) FROM reservierung
Ach­tung:
Dies funk­tio­niert nur, wenn die Post­gres-Exten­si­on pgzint gela­den wur­de.

Für ver­schie­de­ne Ver­an­stal­tun­gen soll­ten jeweils ver­schie­de­ne Codes qr_code ver­wen­det wer­den. Das heißt, ein Code kommt in maxi­mal einer Ver­an­stal­tung zum Ein­satz.
  Funk­tio­na­le Anhän­gig­keit: qr_code -> v_id
In Daten­mo­dell 1 gilt die­se funk­tio­na­le Abhän­gig­kei­ten nicht, in Daten­mo­dell 3 dage­gen schon (wg. UNIQUE).

Wenn man die­se funk­tio­na­le Anhän­gig­keit als gege­ben vor­aus­setzt, ist das Daten­mo­dell 1 (im Gegen­satz zum Daten­mo­dell 3) nicht in 3NF. Das Daten­mo­dell 1 ist jedoch ein­fa­cher als das Daten­mo­dell 3: Man spart sich die Unter­schei­dung zwi­schen reservierung und sitzplatzreservierung. Aller­dings muss man nun bei allen Anfra­gen nach reser­vier­ten Kar­ten auch die Ver­an­stal­tung mit ange­ben (was nicht son­der­lich dra­ma­tisch ist).

Anmer­kung: Man könn­te die feh­len­de funk­tio­na­le Abhän­gig­keit mit Hil­fe eines Cons­traint-Trig­gers auch für das Daten­mo­del 1 erzwin­gen.

Datenmodell 2

Crea­te-Table-Befeh­le: theater2.sql

Datenmodell 3

Crea­te-Table-Befeh­le: theater3.sql

Für die Augs­bur­ger Pup­pen­kis­te gel­ten wei­te­re Cons­traints, die bis­lang nicht oder nur teil­wei­se beach­tet wur­den:

  • Nach­mit­tags­vor­stel­lun­gen sind Kin­der­ver­an­stal­tun­gen. Hier wird im Daten­mo­dell als Default­ka­te­go­rie die Kate­go­rie 1 ver­ge­ben; das Ver­an­stal­tungs­ka­te­go­rie-Tupel mit der ID 1 muss also immer die Kin­der­ver­an­stal­tun­gen bezeich­nen.
  • Abend­vor­stel­lun­gen sind Erwach­se­nen­ver­an­stal­tun­gen. Hier wird wird im Daten­mo­dell als Default­ka­te­go­rie die Kate­go­rie 2 ver­ge­ben; das Ver­an­stal­tungs­ka­te­go­rie-Tupel mit der ID 2 muss also immer die Erwach­se­nen­ver­an­stal­tun­gen bezeich­nen) .
  • Son­der­vor­stel­lun­gen fin­den übli­cher­wei­se am Vor­mit­tag statt. Dies wird im Daten­mo­dell nicht berück­sich­tigt.
  • Am Tag kann eine Ver­an­stal­tung evtl. mehr­fach gege­ben wer­den, ein­mal als Son­der­ver­an­stal­tung und ein­mal regu­lär.
  • Pro Tag wird höchs­tens eine regu­la­re Kin­der­ver­an­stal­tung gege­ben.
  • Pro Tag wird höchs­tens eine regu­la­re Erwach­se­nen­ver­an­stal­tung gege­ben.