-
Notifications
You must be signed in to change notification settings - Fork 0
/
lag_tabeller_teater.sql
190 lines (169 loc) · 6.13 KB
/
lag_tabeller_teater.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
-- Endringer fra innlevering 1:
-- 1. Endret alle int til integer for å få auto-increment til å fungere
-- Endret til en mer logisk rekkefølge på tabellene
-- Pristyper endret til Pristype
-- Fremmednøkkel i Teaterbillett(TeaterstykkeID) refererer til teaterstykke istedenfor pristype
-- Fjernet fremmednøkkel(Type) i Billettype
-- Billettype har fremmednøkkel(KjopID) til Teaterbillett istedenfor billettkjop
BEGIN TRANSACTION;
DROP TABLE IF EXISTS Teatersal;
CREATE TABLE Teatersal (
SalID INTEGER PRIMARY KEY,
Navn VARCHAR(50) NOT NULL,
MaksPlasser INTEGER NOT NULL DEFAULT 0
);
DROP TABLE IF EXISTS Teaterstykke;
CREATE TABLE Teaterstykke (
TeaterstykkeID INTEGER PRIMARY KEY,
Tittel VARCHAR(50) NOT NULL,
Forfatter VARCHAR(50),
SalID INTEGER NOT NULL,
FOREIGN KEY (SalID) REFERENCES Teatersal(SalID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Forestilling;
CREATE TABLE Forestilling (
TeaterstykkeID INTEGER NOT NULL,
Dato DATE NOT NULL,
Tidspunkt TIME NOT NULL,
PRIMARY KEY (TeaterstykkeID, Dato, Tidspunkt),
FOREIGN KEY (TeaterstykkeID)
REFERENCES Teaterstykke(TeaterstykkeID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Akt;
CREATE TABLE Akt (
TeaterstykkeID INTEGER NOT NULL,
AktNr INTEGER NOT NULL,
Navn VARCHAR(50),
PRIMARY KEY (TeaterstykkeID, AktNr),
FOREIGN KEY (TeaterstykkeID)
REFERENCES Teaterstykke(TeaterstykkeID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Skuespiller;
CREATE TABLE Skuespiller (
SkuespillerID INTEGER PRIMARY KEY,
Navn VARCHAR(50) NOT NULL
);
DROP TABLE IF EXISTS Rolle;
CREATE TABLE Rolle (
RolleID INTEGER PRIMARY KEY,
Navn VARCHAR(50)
);
DROP TABLE IF EXISTS SpillesAv;
CREATE TABLE SpillesAV (
SkuespillerID INTEGER NOT NULL,
RolleID INTEGER NOT NULL,
PRIMARY KEY (SkuespillerID, RolleID),
FOREIGN KEY (SkuespillerID) REFERENCES Skuespiller(SkuespillerID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (RolleID) REFERENCES Rolle(RolleID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS SpillesIAkt;
CREATE TABLE SpillesIAkt (
TeaterstykkeID INTEGER NOT NULL,
AktNr INTEGER NOT NULL,
RolleID INTEGER NOT NULL,
PRIMARY KEY (TeaterstykkeID, AktNr, RolleID),
FOREIGN KEY (TeaterstykkeID, AktNr)
REFERENCES Akt(TeaterstykkeID,AktNr) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (RolleID) REFERENCES Rolle(RolleID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Involvert;
CREATE TABLE Involvert (
InvolvertID INTEGER PRIMARY KEY,
Navn VARCHAR(50) NOT NULL,
Epost VARCHAR(50) NOT NULL,
AnsattStatus VARCHAR(50)
);
DROP TABLE IF EXISTS Oppgave;
CREATE TABLE Oppgave (
OppgaveID INTEGER PRIMARY KEY,
Tittel VARCHAR(50) NOT NULL,
Beskrivelse TEXT,
TeaterstykkeID INT,
FOREIGN KEY (TeaterstykkeID)
REFERENCES Teaterstykke(TeaterstykkeID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS UtforesAv;
CREATE TABLE UtforesAv (
InvolvertID INTEGER NOT NULL,
OppgaveID INTEGER NOT NULL,
PRIMARY KEY (InvolvertID, OppgaveID),
FOREIGN KEY (InvolvertID) REFERENCES Involvert(InvolvertID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (OppgaveID) REFERENCES Oppgave(OppgaveID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Pristype;
CREATE TABLE Pristype (
TeaterstykkeID INTEGER NOT NULL,
Type VARCHAR(50) NOT NULL,
Pris INTEGER NOT NULL,
PRIMARY KEY (TeaterstykkeID, Type),
FOREIGN KEY (TeaterstykkeID)
REFERENCES Teaterstykke(TeaterstykkeID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS KundeProfil;
CREATE TABLE KundeProfil (
KundeID INTEGER PRIMARY KEY,
Mobilnummer INTEGER NOT NULL,
Navn VARCHAR(50) NOT NULL,
Adresse VARCHAR(50) NOT NULL
);
DROP TABLE IF EXISTS Stol;
CREATE TABLE Stol (
SalID INTEGER NOT NULL,
RadNr INTEGER NOT NULL,
SeteNr INTEGER NOT NULL,
OmraadeNavn VARCHAR(50) NOT NULL DEFAULT 'Standard',
PRIMARY KEY (SalID, RadNr, SeteNr, Omraadenavn),
FOREIGN KEY (SalID) REFERENCES Teatersal(SalID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS ReservererForestilling;
CREATE TABLE ReservererForestilling (
KjopID INTEGER NOT NULL,
TeaterstykkeID INTEGER NOT NULL,
ForestillingsDato DATE NOT NULL,
ForestillingsTidspunkt TIME NOT NULL,
PRIMARY KEY (KjopID),
FOREIGN KEY (KjopID) REFERENCES Teaterbillett(KjopID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (TeaterstykkeID, ForestillingsDato, ForestillingsTidspunkt)
REFERENCES Forestilling(TeaterstykkeID, Dato, Tidspunkt) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS ReservererStol;
CREATE TABLE ReservererStol (
KjopID INTEGER NOT NULL,
BillettNr INTEGER NOT NULL,
SalID INTEGER NOT NULL,
RadNr INTEGER NOT NULL,
SeteNr INTEGER NOT NULL,
OmraadeNavn VARCHAR(50) NOT NULL DEFAULT 'Standard',
PRIMARY KEY (KjopID, BillettNr),
FOREIGN KEY (KjopID, BillettNr)
REFERENCES Billettype(KjopID, BillettNr) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (SalID, RadNr, SeteNr, Omraadenavn)
REFERENCES Stol(SalID, RadNr, SeteNr, Omraadenavn) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Teaterbillett;
CREATE TABLE TeaterBillett (
KjopID INTEGER NOT NULL,
TeaterstykkeID INTEGER NOT NULL,
PRIMARY KEY (KjopID),
FOREIGN KEY (KjopID) REFERENCES Billettkjop(KjopID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (TeaterstykkeID) REFERENCES Teaterstykke(TeaterstykkeID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Billettype;
CREATE TABLE Billettype (
KjopID INTEGER NOT NULL,
BillettNr INTEGER NOT NULL,
Type VARCHAR(50) NOT NULL,
PRIMARY KEY (KjopID, BillettNr),
FOREIGN KEY (KjopID) REFERENCES Teaterbillett(KjopID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS Billettkjop;
CREATE TABLE Billettkjop (
KjopID INTEGER NOT NULL,
Dato DATE NOT NULL,
Tid TIME NOT NULL,
Totalpris INTEGER NOT NULL,
KundeID INTEGER NOT NULL,
PRIMARY KEY (KjopID),
FOREIGN KEY (KundeID) REFERENCES KundeProfil(KundeID) ON DELETE CASCADE ON UPDATE CASCADE
);
COMMIT;