Prosjekt i faget TDT4145: Datamodellering og databasesystemer
Det forutsettes at du har installert Python (versjon 3) og SQLite (versjon 3) for å kunne utføre stegene.
- Edward Storlien
- Olav Larsen Halleraker
- Mikael Steenbuch
-
/api
inneholder klasser som håndterer spørringer relatert til brukerhistorie 1-3 -
/seats_bought
inneholder alle tekstfiler delt ut for prosjektet -
/setup
inneholder spørringer for sette opp databasen, samt sette inn data til databasen -
/user_stories
ligger alle skripts som besvarer hver enkelt brukerhistorie. Mer om hvordan vi interagerer med disse brukerhistoriene kommer under.
NB: scan_seats
ligger i rotmappa da vi ser på denne som essensiell for de fleste user_stories
eksempelkjoring.txt
viser innholdet i hvordan en kjøring av python user_stories/brukertilfelle.py
vil se ut. Dette programmet kjøres i en loop, og her har vi printet ut outoput fra interaksjoner med skript som håndterer brukerhistoriene fra 3-7.
- Kjør kommando i terminalen:
python3 complete_setup_theatre.py
Dette skriptet lager en databasefil som heter teater.db i rotmappa, setter opp alle tabeller og setter inn data for to teaterstykker i henhold til prosjektbeskrivelsen og informasjon fra nettsiden til Trøndelag Teater.
Det er nå klart for å interagere med databasen!
Dersom du ikke ønsker å raskt sette opp databasen med tabeller og data gjennom ett enkelt skript, kan hvert steg gjøres hver for seg.
Du må være i sqlite3-shellet for å kjøre kommandoen for oppsetting av tabeller og innsetting av data.
Kjør kommando:
sqlite3 teater.db
Denne kommandoen åpner sqlite3-shellet tilknyttet databasefil kalt teater.db. Du vet du er i sqlite3-shellet når hver linje i terminalen starter med "sqlite>".
- Gitt at du er i sqlite3-shellet, kjør kommando:
.read setup/setup_tables.sql
Etter dette vil det eksistere en databasefil kalt teater.db. Den inneholder alle tabeller, men ingen data.
- Gitt at du er i sqlite3-shellet, kjør kommando::
.read setup/insert_data.sql
Nå vil all dataen for teaterstykkene være satt inn i databasefilen, med unntak av setene i teatersalene. Dette gjøres av to Python-skript for enkelthets skyld.
- Gå ut av sqlite3-shellet ved å kjøre kommando:
.q
- Kjør kommando:
python3 setup/insert_seats_gamle_scene.py teater.db
- Kjør kommando:
python3 setup/insert_seats_hovedscenen.py teater.db
Nå vil databasefilen være helt komplett med tabeller og data for teaterstykkene i henhold til prosjektbeskrivelsen og informasjon på nettsiden til Trøndelag Teater.
Det er nå klart for å interagere med databasen!
Her er hvordan de ulike brukstilfellene er løst
Brukstilfelle 1 ble løst i de foregående stegene der databasefilen ble satt opp med tabeller og data.
Følgende skript leser en fil med hvilke seter som er kjøpt til en forestilling med en gitt dato. Det opprettes et kjøp på adminbrukeren med navn Admin, telefonnummer 55555555 og adresse Admingata 1.
Her antas det at skriptet blir kjørt når det er ledige billetter på de gitte seten. Det vil si, vi antar at dette skriptet blir kjørt initielt i en forestilling av en administrator for å reservere seter eller lignende.
- Kjør kommando for Gamle scene:
python3 scan_seats.py seats_bought/gamle-scene.txt "Gamle scene"
- Kjør kommando for Hovedscenen:
python3 scan_seats.py seats_bought/hovedscenen.txt "Hovedscenen"
For kjøre brukstilfellene 3-7 med et grensesnitt i terminalen, kjør kommando:
python3 user_stories/brukstilfelle.py
Videre er det kommandoer for å kjøre brukstilfellene 3-7 direkte:
For å kjøpe 9 stoler til forestilling "Størst av alt er kjærligheten", den 9. februar for seter med alle stoler på samme rad, kjør kommando:
python3 user_stories/brukstilfelle_3.py
For å skrive ut alle forestillinger og solgte stoler en gitt dato, kjør kommando:
python3 user_stories/brukstilfelle_4.py
For default input trykk enter.
For å skrive ut alle forestillinger og skuespillere, kjør kommando:
python3 user_stories/brukstilfelle_5.py
For å skrive ut hvor mange billetter hver forestilling har solgt sortert synkende, kjør kommando:
python3 user_stories/brukstilfelle_6.py
For å skrive ut hvilke skuespillere som har spilt i samme akt som en gitt skuespiller, kjør kommando:
python3 user_stories/brukstilfelle_7.py
For default input trykk enter.
Roller i Kongsemnene:
Guttorm Ingesson fantes ikke på nettsiden, så vi har ikke lagt inn denne i databasen. Trønder stod ikke oppført i prosjektbeskrivelsen, men den fantes på nettsiden. Den er derfor satt til å spille i akt 1 siden vi antar det egentlig er rollen Guttorm Ingesson.
Baard Bratte var ikke satt opp på noen akter i tabellen i prosjektbeskrivelsen, så vi antar rollen spilles på akter 2, 3, 4 og 5. Vi har antatt dette fordi skuespilleren som spiller Baard Bratte spiller også Trønder, som vi har satt til å spille i akt 1.
Da vi ikke fant mailaddressen på skuespillerne, har vi satt mailaddressen til å være NULL
.
- Endret kardinalitet (0,n) fra (1, n) under Teatersal i diagrammet. Må kunne sette opp sal uten stykke.
- Lagt til SkrevetAv på Teaterstykke
- Endret fra ForGruppe til BillettPriser