Databasteknik: Övning 6 - Aktiva databaser

Det här är en övning. Man behöver inte redovisa något, eller lämna in någon rapport, men om du har problem eller frågor får du gärna fråga övningsassistenten.

Det finns ett lösningsförslag.

Mål

Förberedelser

Läs i boken, och kanske också annat material, om aktiva database och triggers. Läs åtminstone detta:

Scenario

En databas innehåller bokningar av platserna på ett flygplan:

ER-diagram över bokningsdatabasen

Varje plats på flygplanet finns med i databasen, och alla passagerare. Om planet är fullbokat kan passagerarna skriva upp sig på en väntelista, med en så kallad väntenotering.

Vi skapar följande tabeller. Kommandon för att skapa tabellerna och lägga in data finns här. Notera att 1:N-sambandet Bokning har implementerats i form av en egen tabell.

Passagerare
Nummer Namn Adress
1 Anna Annagränd 1
2 Bertil Bertilbo 1
3 Cecilia C-vägen 1
4 David Davidstorp
5 Erik Erikshof
6 Fia Fiaorget 2
7 Gun Gunbohus
8 Helge Helgestig 7
9 Ivar Ivarvägen 2
10 Jesper Jesperstorp
Plats
Nummer Platstyp
1 Fönster
2 Gång
3 Fönster
4 Gång
5 Fönster
Bokning
Plats BokadAv
1 1
2 2
3 3
4 10
5 10
Vantelista
Nummer Passagerare
1 6
2 7
3 8

Som vi ser finns just nu följande bokningar:

Följande passagerare finns på väntelistan, i den ordningen:

Uppgift

Om någon passagerare avbokar en plats, så ska den som står först (dvs har lägst nummer) på väntelistan bokas in på den platsen. Samtidigt ska den noteringen i väntelistan tas bort. Skriv en trigger som gör detta.

Tips


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 22 mars 2021