1 | DROP TABLE IF EXISTS child_ticket CASCADE;
|
---|
2 | DROP TABLE IF EXISTS ticket_relations CASCADE;
|
---|
3 | DROP TABLE IF EXISTS ticket CASCADE;
|
---|
4 | DROP TABLE IF EXISTS payment CASCADE;
|
---|
5 | DROP TABLE IF EXISTS review CASCADE;
|
---|
6 | DROP TABLE IF EXISTS student_ticket CASCADE;
|
---|
7 | DROP TABLE IF EXISTS student CASCADE;
|
---|
8 | DROP TABLE IF EXISTS trip_stops CASCADE;
|
---|
9 | DROP TABLE IF EXISTS trip_days_active CASCADE;
|
---|
10 | DROP TABLE IF EXISTS trip CASCADE;
|
---|
11 | DROP TABLE IF EXISTS route CASCADE;
|
---|
12 | DROP TABLE IF EXISTS favorite CASCADE;
|
---|
13 | DROP TABLE IF EXISTS driver_drives_on_trip CASCADE;
|
---|
14 | DROP TABLE IF EXISTS driver_vehicle_operation CASCADE;
|
---|
15 | DROP TABLE IF EXISTS driver CASCADE;
|
---|
16 | DROP TABLE IF EXISTS transport_organizer CASCADE;
|
---|
17 | DROP TABLE IF EXISTS admin CASCADE;
|
---|
18 | DROP TABLE IF EXISTS account CASCADE;
|
---|
19 | DROP TABLE IF EXISTS location CASCADE;
|
---|
20 | DROP TABLE IF EXISTS train CASCADE;
|
---|
21 | DROP TABLE IF EXISTS van CASCADE;
|
---|
22 | DROP TABLE IF EXISTS bus CASCADE;
|
---|
23 | DROP TABLE IF EXISTS automobile CASCADE;
|
---|
24 | DROP TABLE IF EXISTS vehicle CASCADE;
|
---|
25 |
|
---|
26 | CREATE TABLE account (
|
---|
27 | account_id SERIAL PRIMARY KEY,
|
---|
28 | email VARCHAR(100) NOT NULL UNIQUE,
|
---|
29 | name VARCHAR(50) NOT NULL,
|
---|
30 | surname VARCHAR(50) NOT NULL,
|
---|
31 | password VARCHAR(60) NOT NULL
|
---|
32 | );
|
---|
33 |
|
---|
34 | CREATE TABLE admin (
|
---|
35 | admin_id SERIAL PRIMARY KEY,
|
---|
36 | account_id INT NOT NULL,
|
---|
37 | CONSTRAINT fk_admin_account_id FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE
|
---|
38 | );
|
---|
39 |
|
---|
40 | CREATE TABLE payment (
|
---|
41 | payment_id SERIAL PRIMARY KEY,
|
---|
42 | account_id INT NOT NULL,
|
---|
43 | date DATE NOT NULL,
|
---|
44 | total_price DOUBLE PRECISION NOT NULL CHECK (total_price >= 0),
|
---|
45 | n_tickets INT NOT NULL CHECK (n_tickets > 0),
|
---|
46 | CONSTRAINT payment_account_id_fkey FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE
|
---|
47 | );
|
---|
48 |
|
---|
49 | CREATE TABLE location (
|
---|
50 | location_id SERIAL PRIMARY KEY,
|
---|
51 | latitude DOUBLE PRECISION NOT NULL,
|
---|
52 | longitude DOUBLE PRECISION NOT NULL,
|
---|
53 | name VARCHAR(100) NOT NULL
|
---|
54 | );
|
---|
55 |
|
---|
56 | CREATE TABLE ticket (
|
---|
57 | ticket_id SERIAL PRIMARY KEY,
|
---|
58 | trip_id INT NOT NULL,
|
---|
59 | gets_on_location_id INT NOT NULL,
|
---|
60 | gets_off_location_id INT NOT NULL,
|
---|
61 | account_id INT NOT NULL,
|
---|
62 | date_purchased DATE NOT NULL,
|
---|
63 | time_purchased TIME WITHOUT TIME ZONE NOT NULL,
|
---|
64 | price DOUBLE PRECISION CHECK (price >= 0),
|
---|
65 | seat VARCHAR(10),
|
---|
66 | payment_id INT NOT NULL,
|
---|
67 | CONSTRAINT gets_on_location_fkey FOREIGN KEY (gets_on_location_id) REFERENCES location(location_id) ON DELETE CASCADE,
|
---|
68 | CONSTRAINT gets_off_location_fkey FOREIGN KEY (gets_off_location_id) REFERENCES location(location_id) ON DELETE CASCADE,
|
---|
69 | CONSTRAINT ticket_account_id_fkey FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE,
|
---|
70 | CONSTRAINT ticket_payment_id_fkey FOREIGN KEY (payment_id) REFERENCES payment(payment_id) ON DELETE CASCADE
|
---|
71 | );
|
---|
72 |
|
---|
73 | CREATE TABLE review (
|
---|
74 | review_id SERIAL PRIMARY KEY,
|
---|
75 | account_id INT NOT NULL,
|
---|
76 | ticket_id INT NOT NULL,
|
---|
77 | description TEXT,
|
---|
78 | rating INT CHECK (rating >= 1 AND rating <= 5),
|
---|
79 | CONSTRAINT review_account_id_fkey FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE,
|
---|
80 | CONSTRAINT review_ticket_id_fkey FOREIGN KEY (ticket_id) REFERENCES ticket(ticket_id) ON DELETE CASCADE
|
---|
81 | );
|
---|
82 |
|
---|
83 |
|
---|
84 | CREATE TABLE transport_organizer (
|
---|
85 | transport_organizer_id SERIAL PRIMARY KEY,
|
---|
86 | account_id INT NOT NULL,
|
---|
87 | company_name VARCHAR(100) NOT NULL,
|
---|
88 | company_embg VARCHAR(50) NOT NULL,
|
---|
89 | CONSTRAINT transport_organizer_account_id_fkey FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE
|
---|
90 | );
|
---|
91 |
|
---|
92 | CREATE TABLE vehicle (
|
---|
93 | transport_organizer_id INT NOT NULL,
|
---|
94 | vehicle_id SERIAL PRIMARY KEY,
|
---|
95 | model VARCHAR(30) NOT NULL,
|
---|
96 | brand VARCHAR(30) NOT NULL,
|
---|
97 | capacity VARCHAR(20) NOT NULL,
|
---|
98 | year_manufactured VARCHAR(10),
|
---|
99 | CONSTRAINT vehicle_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer(transport_organizer_id) ON DELETE CASCADE
|
---|
100 |
|
---|
101 | );
|
---|
102 |
|
---|
103 | CREATE TABLE automobile (
|
---|
104 | automobile_id SERIAL PRIMARY KEY,
|
---|
105 | vehicle_id INT NOT NULL UNIQUE,
|
---|
106 | CONSTRAINT automobile_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle(vehicle_id) ON DELETE CASCADE
|
---|
107 | );
|
---|
108 |
|
---|
109 | CREATE TABLE bus (
|
---|
110 | bus_id SERIAL PRIMARY KEY,
|
---|
111 | vehicle_id INT NOT NULL UNIQUE,
|
---|
112 | CONSTRAINT bus_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle(vehicle_id) ON DELETE CASCADE
|
---|
113 | );
|
---|
114 |
|
---|
115 | CREATE TABLE van (
|
---|
116 | van_id SERIAL PRIMARY KEY,
|
---|
117 | vehicle_id INT NOT NULL UNIQUE,
|
---|
118 | CONSTRAINT van_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle(vehicle_id) ON DELETE CASCADE
|
---|
119 | );
|
---|
120 |
|
---|
121 | CREATE TABLE train (
|
---|
122 | train_id SERIAL PRIMARY KEY,
|
---|
123 | vehicle_id INT NOT NULL UNIQUE,
|
---|
124 | CONSTRAINT train_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle(vehicle_id) ON DELETE CASCADE
|
---|
125 | );
|
---|
126 |
|
---|
127 | CREATE TABLE route (
|
---|
128 | route_id SERIAL PRIMARY KEY,
|
---|
129 | transport_organizer_id INT NOT NULL,
|
---|
130 | from_location_id INT NOT NULL,
|
---|
131 | to_location_id INT NOT NULL,
|
---|
132 | CONSTRAINT route_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer(transport_organizer_id) ON DELETE CASCADE,
|
---|
133 | CONSTRAINT route_from_location_id_fkey FOREIGN KEY (from_location_id) REFERENCES location(location_id),
|
---|
134 | CONSTRAINT route_to_location_id_fkey FOREIGN KEY (to_location_id) REFERENCES location(location_id)
|
---|
135 | );
|
---|
136 |
|
---|
137 | CREATE TABLE trip (
|
---|
138 | trip_id SERIAL PRIMARY KEY,
|
---|
139 | transport_organizer_id INT NOT NULL,
|
---|
140 | route_id INT NOT NULL,
|
---|
141 | free_seats INT CHECK (free_seats >= 0),
|
---|
142 | date DATE NOT NULL,
|
---|
143 | status VARCHAR(30),
|
---|
144 | CONSTRAINT trip_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer(transport_organizer_id),
|
---|
145 | CONSTRAINT trip_route_id_fkey FOREIGN KEY (route_id) REFERENCES route(route_id) ON DELETE CASCADE
|
---|
146 | );
|
---|
147 |
|
---|
148 | CREATE TABLE driver (
|
---|
149 | driver_id SERIAL PRIMARY KEY,
|
---|
150 | account_id INT NOT NULL,
|
---|
151 | years_experience INT NOT NULL,
|
---|
152 | transport_organizer_id INT,
|
---|
153 | CONSTRAINT driver_account_id_fkey FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE,
|
---|
154 | CONSTRAINT driver_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer(transport_organizer_id) ON DELETE CASCADE
|
---|
155 | );
|
---|
156 |
|
---|
157 | CREATE TABLE driver_vehicle_operation (
|
---|
158 | driver_vehicle_operation_id SERIAL PRIMARY KEY,
|
---|
159 | driver_id INT NOT NULL,
|
---|
160 | vehicle_id INT NOT NULL,
|
---|
161 | CONSTRAINT driver_vehicle_operation_driver_id_fkey FOREIGN KEY (driver_id) REFERENCES driver(driver_id) ON DELETE CASCADE,
|
---|
162 | CONSTRAINT driver_vehicle_operation_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle(vehicle_id) ON DELETE CASCADE
|
---|
163 | );
|
---|
164 |
|
---|
165 | CREATE TABLE driver_drives_on_trip (
|
---|
166 | driver_drives_on_trip_id SERIAL PRIMARY KEY,
|
---|
167 | driver_id INT NOT NULL,
|
---|
168 | trip_id INT NOT NULL,
|
---|
169 | CONSTRAINT driver_drives_on_trip_driver_id_fkey FOREIGN KEY (driver_id) REFERENCES driver(driver_id) ON DELETE CASCADE,
|
---|
170 | CONSTRAINT driver_drives_on_trip_trip_id_fkey FOREIGN KEY (trip_id) REFERENCES trip(trip_id) ON DELETE CASCADE
|
---|
171 | );
|
---|
172 |
|
---|
173 | CREATE TABLE favorite (
|
---|
174 | favorite_id SERIAL PRIMARY KEY,
|
---|
175 | route_id INT NOT NULL,
|
---|
176 | account_id INT NOT NULL,
|
---|
177 | CONSTRAINT favorite_route_id_fkey FOREIGN KEY (route_id) REFERENCES route(route_id) ON DELETE CASCADE,
|
---|
178 | CONSTRAINT favorite_account_id_fkey FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE
|
---|
179 | );
|
---|
180 |
|
---|
181 | CREATE TABLE trip_days_active (
|
---|
182 | trip_days_active_id SERIAL PRIMARY KEY,
|
---|
183 | route_id INT NOT NULL,
|
---|
184 | day VARCHAR(20) NOT NULL,
|
---|
185 | CONSTRAINT trip_days_active_route_id_fkey FOREIGN KEY (route_id) REFERENCES route(route_id) ON DELETE CASCADE
|
---|
186 | );
|
---|
187 |
|
---|
188 | CREATE TABLE trip_stops (
|
---|
189 | trip_stop_id SERIAL PRIMARY KEY,
|
---|
190 | trip_id INT NOT NULL,
|
---|
191 | location_id INT NOT NULL,
|
---|
192 | stop_time TIME WITHOUT TIME ZONE NOT NULL,
|
---|
193 | CONSTRAINT trip_stops_trip_id_fkey FOREIGN KEY (trip_id) REFERENCES trip(trip_id) ON DELETE CASCADE,
|
---|
194 | CONSTRAINT trip_stops_location_id_fkey FOREIGN KEY (location_id) REFERENCES location(location_id) ON DELETE CASCADE
|
---|
195 | );
|
---|
196 |
|
---|
197 | CREATE TABLE student (
|
---|
198 | student_id SERIAL PRIMARY KEY,
|
---|
199 | account_id INT NOT NULL,
|
---|
200 | university VARCHAR(100) NOT NULL,
|
---|
201 | index_number VARCHAR(20) NOT NULL,
|
---|
202 | CONSTRAINT student_account_id_fkey FOREIGN KEY (account_id) REFERENCES account(account_id) ON DELETE CASCADE
|
---|
203 | );
|
---|
204 |
|
---|
205 | CREATE TABLE student_ticket (
|
---|
206 | student_ticket_id SERIAL PRIMARY KEY,
|
---|
207 | ticket_id INT NOT NULL,
|
---|
208 | discount DOUBLE PRECISION,
|
---|
209 | CONSTRAINT student_ticket_ticket_id_fkey FOREIGN KEY (ticket_id) REFERENCES ticket(ticket_id) ON DELETE CASCADE
|
---|
210 | );
|
---|
211 |
|
---|
212 | CREATE TABLE child_ticket (
|
---|
213 | child_ticket_id SERIAL PRIMARY KEY,
|
---|
214 | ticket_id INT NOT NULL,
|
---|
215 | discount DOUBLE PRECISION,
|
---|
216 | embg VARCHAR(13) NOT NULL,
|
---|
217 | parent_embg VARCHAR(13) NOT NULL,
|
---|
218 | CONSTRAINT child_ticket_ticket_id_fkey FOREIGN KEY (ticket_id) REFERENCES ticket(ticket_id) ON DELETE CASCADE
|
---|
219 | );
|
---|
220 |
|
---|
221 | CREATE TABLE ticket_relations (
|
---|
222 | ticket_relation_id SERIAL PRIMARY KEY,
|
---|
223 | parent_ticket_id INT NOT NULL,
|
---|
224 | child_ticket_id INT NOT NULL,
|
---|
225 | CONSTRAINT ticket_relations_parent_ticket_id_fkey FOREIGN KEY (parent_ticket_id) REFERENCES ticket(ticket_id) ON DELETE CASCADE,
|
---|
226 | CONSTRAINT ticket_relations_child_ticket_id_fkey FOREIGN KEY (child_ticket_id) REFERENCES ticket(ticket_id) ON DELETE CASCADE
|
---|
227 | );
|
---|
228 | INSERT INTO account values(100, 'duko@outlook.com', 'David', 'Davidov', '$2a$12$pr3az9qix0CnAsX84C2clu9cG9JDlfqfK.sMqaFhPYR7D5fiz8BjO'); -- pw: d
|
---|
229 | INSERT INTO account values(200, 'kiko@outlook.com', 'Kiko', 'Kikoski', '$2a$12$KCpRdwqqm2S0BX8fHjzCBO570ivpoJZ6tuIc1W6gwSpzObvxykZ8y'); -- pw: k
|
---|
230 | INSERT INTO account values(300, 'jama@outlook.com', 'Jana', 'Janoska', '$2a$12$XO94fugzv1B9T.IjEbFSWu4WyCDFTdMM9Vg4Xli7DWiDH1LGwgj7G'); -- pw: j
|
---|
231 | INSERT INTO account values(400, 'verche@outlook.com', 'Verche', 'Verchoska', '$2a$12$XO94fugzv1B9T.IjEbFSWu4WyCDFTdMM9Vg4Xli7DWiDH1LGwgj7G'); -- pw: v
|
---|
232 |
|
---|
233 |
|
---|
234 | INSERT INTO transport_organizer values(100, 100, 'Galeb', '1234512345123');
|
---|
235 | INSERT INTO transport_organizer values(200, 200, 'Delfina', '1234512345124');
|
---|
236 | INSERT INTO transport_organizer values(300, 300, 'Classic', '123453245124');
|
---|
237 |
|
---|
238 |
|
---|
239 | INSERT INTO location values(100, 3.2, 1.3, 'Ohrid');
|
---|
240 | INSERT INTO location values(200, 3.6, 1.4, 'Bitola');
|
---|
241 | INSERT INTO location values(300, 1.1, 4.5, 'Skopje');
|
---|
242 | INSERT INTO location values(400, 1.2, 4.8, 'Veles');
|
---|
243 | INSERT INTO location values(500, 1.3, 4.2, 'Prilep');
|
---|
244 | INSERT INTO location values(600, 1.5, 4.5, 'Vevcani');
|
---|
245 |
|
---|
246 |
|
---|
247 |
|
---|
248 | INSERT INTO route values(100, 100, 100, 300);
|
---|
249 | INSERT INTO route values(200, 200, 100, 200);
|
---|
250 | INSERT INTO route values(300, 200, 200, 300);
|
---|
251 | INSERT INTO route values(400, 200, 300, 200);
|
---|
252 | INSERT INTO route values(500, 200, 300, 100);
|
---|
253 | INSERT INTO route values(600, 100, 300, 100);
|
---|
254 | INSERT INTO route values(700, 300, 300, 100);
|
---|
255 |
|
---|
256 |
|
---|
257 | INSERT INTO trip values(400, 100, 100, 33, '12-02-2025', 'NOT_STARTED');
|
---|
258 | INSERT INTO trip values(500, 200, 100, 40, '02-03-2025', 'NOT_STARTED');
|
---|
259 | INSERT INTO trip values(600, 200, 300, 6, '02-05-2025', 'NOT_STARTED');
|
---|
260 | INSERT INTO trip values(700, 100, 300, 13, '12-01-2025', 'NOT_STARTED');
|
---|
261 | INSERT INTO trip values(800, 200, 300, 50, '02-9-2025', 'NOT_STARTED');
|
---|
262 | INSERT INTO trip values(900, 200, 300, 6, '02-10-2025', 'NOT_STARTED');
|
---|
263 |
|
---|
264 | INSERT INTO trip_stops values(300, 400, 300, '19:00');
|
---|
265 | INSERT INTO trip_stops values(400, 400, 100, '20:00');
|
---|
266 | INSERT INTO trip_stops values(500, 500, 200, '15:30');
|
---|
267 | INSERT INTO trip_stops values(600, 500, 100, '16:45');
|
---|
268 | INSERT INTO trip_stops values(700, 600, 600, '09:10');
|
---|
269 | INSERT INTO trip_stops values(800, 600, 200, '12:30');
|
---|
270 | INSERT INTO trip_stops values(900, 700, 400, '19:00');
|
---|
271 | INSERT INTO trip_stops values(1000, 700, 600, '22:30');
|
---|
272 | INSERT INTO trip_stops values(1100, 800, 500, '11:10');
|
---|
273 | INSERT INTO trip_stops values(1200, 800, 200, '12:30');
|
---|
274 | INSERT INTO trip_stops values(1300, 800, 100, '01:10');
|
---|
275 | INSERT INTO trip_stops values(1499, 800, 200, '02:00');
|
---|
276 |
|
---|
277 |
|
---|
278 | INSERT INTO payment values(100, 300, '02-02-2025', 20.98, 2);
|
---|
279 | INSERT INTO payment values(200, 300, '03-02-2025', 9.99, 1);
|
---|
280 |
|
---|
281 | INSERT INTO ticket values(100, 400, 100, 300, 300, '02-02-2025', '10:03', 10.99, '3', 100);
|
---|
282 | INSERT INTO ticket values(200, 400, 100, 300, 300, '02-02-2025', '10:04', 10.99, '4', 100);
|
---|
283 | INSERT INTO ticket values(300, 600, 100, 300, 300, '03-02-2025', '09:32', 9.99, '30', 200); |
---|