DDL: ddl_final2.sql

File ddl_final2.sql, 9.7 KB (added by 231233, 39 hours ago)
Line 
1CREATE TABLE MOVIE
2(
3 movie_id SERIAL NOT NULL,
4 title text NOT NULL,
5 release_date date NOT NULL,
6 description text NOT NULL,
7 duration int NOT NULL,
8 PRIMARY KEY (movie_id),
9 CONSTRAINT check_duration CHECK (duration > 0)
10);
11
12CREATE TABLE ROLE
13(
14 role_id SERIAL NOT NULL,
15 role_name text NOT NULL,
16 PRIMARY KEY (role_id),
17 CONSTRAINT unique_role_name UNIQUE (role_name)
18);
19
20CREATE TABLE DIRECTOR
21(
22 director_id text NOT NULL,
23 name text NOT NULL,
24 surname text NOT NULL,
25 PRIMARY KEY (director_id)
26);
27
28CREATE TABLE GENRE
29(
30 genre_id SERIAL NOT NULL,
31 name text NOT NULL,
32 PRIMARY KEY (genre_id),
33 CONSTRAINT unique_genre_name UNIQUE (name)
34);
35
36CREATE TABLE CITY
37(
38 name text NOT NULL,
39 city_id SERIAL NOT NULL,
40 PRIMARY KEY (city_id),
41 CONSTRAINT unique_city_name UNIQUE (name)
42);
43
44CREATE TABLE CINEMA
45(
46 cinema_id BIGSERIAL NOT NULL,
47 name text NOT NULL,
48 address text NOT NULL,
49 contact text NOT NULL,
50 city_id int NOT NULL,
51 PRIMARY KEY (cinema_id),
52 CONSTRAINT FKCINEMA56868 FOREIGN KEY (city_id) REFERENCES CITY (city_id) ON DELETE CASCADE,
53 CONSTRAINT unique_cinema_contact UNIQUE (contact)
54);
55
56CREATE TABLE ROLE_PERMISSION
57(
58 role_id int NOT NULL,
59 permission_id int NOT NULL,
60 PRIMARY KEY (role_id, permission_id)
61);
62
63CREATE TABLE "USER"
64(
65 user_id text NOT NULL,
66 password text NOT NULL,
67 name text NOT NULL,
68 surname text NOT NULL,
69 role_id int NOT NULL,
70 cinema_id bigint,
71 PRIMARY KEY (user_id),
72 CONSTRAINT FKUSER65207 FOREIGN KEY (role_id) REFERENCES ROLE (role_id),
73 CONSTRAINT FKUSER561546 FOREIGN KEY (cinema_id) REFERENCES CINEMA (cinema_id) ON DELETE SET NULL
74);
75
76CREATE TABLE CINEMA_HALL
77(
78 cinemahall_id SERIAL NOT NULL,
79 capacity int NOT NULL,
80 cinema_id bigint NOT NULL,
81 number_rows int NOT NULL,
82 number_seats int NOT NULL,
83 description text NOT NULL,
84 status text NOT NULL,
85 PRIMARY KEY (cinemahall_id),
86 CONSTRAINT FKCINEMA_HAL154643 FOREIGN KEY (cinema_id) REFERENCES CINEMA (cinema_id) ON DELETE CASCADE,
87 CONSTRAINT check_capacity CHECK (capacity > 0),
88 CONSTRAINT check_number_rows CHECK (number_rows > 0),
89 CONSTRAINT check_number_seats CHECK (number_seats > 0)
90);
91
92CREATE TABLE SEAT_TYPE
93(
94 seattype_id SERIAL NOT NULL,
95 name text NOT NULL,
96 price float4 NOT NULL,
97 PRIMARY KEY (seattype_id),
98 CONSTRAINT check_seattype_price CHECK (price > 0),
99 CONSTRAINT unique_seattype_name UNIQUE (name)
100);
101
102CREATE TABLE SEAT
103(
104 seat_id SERIAL NOT NULL,
105 row_number int NOT NULL,
106 seat_number int NOT NULL,
107 type_id int NOT NULL,
108 cinemahall_id int NOT NULL,
109 PRIMARY KEY (seat_id),
110 CONSTRAINT FKSEAT164380 FOREIGN KEY (cinemahall_id) REFERENCES CINEMA_HALL (cinemahall_id) ON DELETE CASCADE,
111 CONSTRAINT FKSEAT804590 FOREIGN KEY (type_id) REFERENCES SEAT_TYPE (seattype_id)
112);
113
114CREATE TABLE SCREENING
115(
116 screening_id SERIAL NOT NULL,
117 "date" date NOT NULL,
118 "time" time(7) NOT NULL,
119 cinemahall_id int NOT NULL,
120 movie_id int NOT NULL,
121 PRIMARY KEY (screening_id),
122 CONSTRAINT FKSCREENING975220 FOREIGN KEY (cinemahall_id) REFERENCES CINEMA_HALL (cinemahall_id) ON DELETE CASCADE,
123 CONSTRAINT FKSCREENING176236 FOREIGN KEY (movie_id) REFERENCES MOVIE (movie_id) ON DELETE CASCADE
124);
125
126CREATE TABLE RESERVATION
127(
128 reservation_id SERIAL NOT NULL,
129 status text NOT NULL,
130 "date" date NOT NULL,
131 PRIMARY KEY (reservation_id)
132);
133
134CREATE TABLE PAYMENT
135(
136 payment_id SERIAL NOT NULL,
137 amount float4 NOT NULL,
138 status text NOT NULL,
139 reservation_id int NOT NULL,
140 PRIMARY KEY (payment_id),
141 CONSTRAINT FKPAYMENT601419 FOREIGN KEY (reservation_id) REFERENCES RESERVATION (reservation_id) ON DELETE CASCADE,
142 CONSTRAINT check_amount CHECK (amount > 0)
143);
144
145CREATE TABLE TICKET
146(
147 ticket_id SERIAL NOT NULL,
148 price float4 NOT NULL,
149 user_id text,
150 reservation_id int,
151 seat_id int NOT NULL,
152 screening_id int NOT NULL,
153 PRIMARY KEY (ticket_id),
154 CONSTRAINT FKTICKET285003 FOREIGN KEY (user_id) REFERENCES "USER" (user_id),
155 CONSTRAINT FKTICKET332966 FOREIGN KEY (reservation_id) REFERENCES RESERVATION (reservation_id) ON DELETE CASCADE,
156 CONSTRAINT FKTICKET680705 FOREIGN KEY (seat_id) REFERENCES SEAT (seat_id) ON DELETE CASCADE,
157 CONSTRAINT FKTICKET411280 FOREIGN KEY (screening_id) REFERENCES SCREENING (screening_id) ON DELETE CASCADE,
158 CONSTRAINT check_price CHECK (price > 0),
159 CONSTRAINT unique_seat_screening UNIQUE (seat_id, screening_id)
160);
161
162CREATE TABLE PAYMENT_METHOD
163(
164 payment_method_id SERIAL NOT NULL,
165 name text NOT NULL,
166 payment_id int NOT NULL,
167 PRIMARY KEY (payment_method_id),
168 CONSTRAINT FKPAYMENT_ME706637 FOREIGN KEY (payment_id) REFERENCES PAYMENT (payment_id) ON DELETE CASCADE,
169 CONSTRAINT unique_payment_method_name UNIQUE (name)
170);
171
172CREATE TABLE REVIEW
173(
174 review_id SERIAL NOT NULL,
175 comment text NOT NULL,
176 "date" date NOT NULL,
177 user_id text NOT NULL,
178 movie_id int NOT NULL,
179 rating int NOT NULL,
180 PRIMARY KEY (review_id),
181 CONSTRAINT FKREVIEW298251 FOREIGN KEY (user_id) REFERENCES "USER" (user_id) ON DELETE CASCADE,
182 CONSTRAINT FKREVIEW927899 FOREIGN KEY (movie_id) REFERENCES MOVIE (movie_id) ON DELETE CASCADE,
183 CONSTRAINT check_rating CHECK (rating >= 1 AND rating <= 10),
184 CONSTRAINT unique_user_movie UNIQUE (user_id, movie_id)
185);
186
187CREATE TABLE ACTOR
188(
189 actor_id text NOT NULL,
190 name text NOT NULL,
191 surname text NOT NULL,
192 PRIMARY KEY (actor_id)
193);
194
195CREATE TABLE PROMOTION
196(
197 promotion_id SERIAL NOT NULL,
198 name text NOT NULL,
199 discount float4 NOT NULL,
200 "start" date NOT NULL,
201 "end" date NOT NULL,
202 screening_id int NOT NULL,
203 PRIMARY KEY (promotion_id),
204 CONSTRAINT FKPROMOTION365376 FOREIGN KEY (screening_id) REFERENCES SCREENING (screening_id) ON DELETE CASCADE,
205 CONSTRAINT check_discount CHECK (discount > 0 AND discount <= 100),
206 CONSTRAINT unique_promotion_name UNIQUE (name)
207);
208
209CREATE TABLE PRODUCT
210(
211 product_id SERIAL NOT NULL,
212 name text NOT NULL,
213 unit text NOT NULL,
214 quantity int NOT NULL,
215 price float4 NOT NULL,
216 PRIMARY KEY (product_id),
217 CONSTRAINT check_product_price CHECK (price > 0),
218 CONSTRAINT check_product_quantity CHECK (quantity >= 0),
219 CONSTRAINT unique_product_name UNIQUE (name)
220);
221
222CREATE TABLE PURCHASED_PRODUCT
223(
224 purchased_product_id SERIAL NOT NULL,
225 numbers int NOT NULL,
226 ticket_id int NOT NULL,
227 product_id int NOT NULL,
228 PRIMARY KEY (purchased_product_id),
229 CONSTRAINT FKPURCHASED_989966 FOREIGN KEY (ticket_id) REFERENCES TICKET (ticket_id) ON DELETE CASCADE,
230 CONSTRAINT FKPURCHASED_466460 FOREIGN KEY (product_id) REFERENCES PRODUCT (product_id),
231 CONSTRAINT check_numbers CHECK (numbers > 0)
232);
233
234CREATE TABLE NOTIFICATION
235(
236 notification_id SERIAL NOT NULL,
237 message text NOT NULL,
238 "date" date NOT NULL,
239 user_id text NOT NULL,
240 PRIMARY KEY (notification_id),
241 CONSTRAINT FKNOTIFICATI106294 FOREIGN KEY (user_id) REFERENCES "USER" (user_id) ON DELETE CASCADE
242);
243
244CREATE TABLE USER_RESERVATION
245(
246 user_id text NOT NULL,
247 reservation_id int NOT NULL,
248 PRIMARY KEY (user_id, reservation_id),
249 CONSTRAINT FKUSER_RESER151935 FOREIGN KEY (user_id) REFERENCES "USER" (user_id) ON DELETE CASCADE,
250 CONSTRAINT FKUSER_RESER867618 FOREIGN KEY (reservation_id) REFERENCES RESERVATION (reservation_id) ON DELETE CASCADE
251);
252
253CREATE TABLE MOVIE_GENRE
254(
255 genre_id int NOT NULL,
256 movie_id int NOT NULL,
257 PRIMARY KEY (genre_id, movie_id),
258 CONSTRAINT FKMOVIE_GENR273664 FOREIGN KEY (genre_id) REFERENCES GENRE (genre_id) ON DELETE CASCADE,
259 CONSTRAINT FKMOVIE_GENR655579 FOREIGN KEY (movie_id) REFERENCES MOVIE (movie_id) ON DELETE CASCADE
260);
261
262CREATE TABLE MOVIE_ACTOR
263(
264 movie_id int NOT NULL,
265 actor_id text NOT NULL,
266 PRIMARY KEY (movie_id, actor_id),
267 CONSTRAINT FKMOVIE_ACTO60552 FOREIGN KEY (movie_id) REFERENCES MOVIE (movie_id) ON DELETE CASCADE,
268 CONSTRAINT FKMOVIE_ACTO38053 FOREIGN KEY (actor_id) REFERENCES ACTOR (actor_id) ON DELETE CASCADE
269);
270
271CREATE TABLE MOVIE_DIRECTOR
272(
273 director_id text NOT NULL,
274 movie_id int NOT NULL,
275 PRIMARY KEY (director_id, movie_id),
276 CONSTRAINT FKMOVIE_DIRE300372 FOREIGN KEY (director_id) REFERENCES DIRECTOR (director_id) ON DELETE CASCADE,
277 CONSTRAINT FKMOVIE_DIRE810181 FOREIGN KEY (movie_id) REFERENCES MOVIE (movie_id) ON DELETE CASCADE
278);
279
280CREATE TABLE PERMISSION
281(
282 permission_id SERIAL NOT NULL,
283 status boolean NOT NULL,
284 name text NOT NULL,
285 PRIMARY KEY (permission_id),
286 CONSTRAINT unique_permission_name UNIQUE (name)
287);
288
289CREATE TABLE ROLE_PERMISSION
290(
291 role_id int NOT NULL,
292 permission_id int NOT NULL,
293 PRIMARY KEY (role_id, permission_id),
294 CONSTRAINT FKROLE_PERMI829363 FOREIGN KEY (role_id) REFERENCES ROLE (role_id) ON DELETE CASCADE,
295 CONSTRAINT FKROLE_PERMI727346 FOREIGN KEY (permission_id) REFERENCES PERMISSION (permission_id) ON DELETE CASCADE
296);