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 | (
|
---|
28 | account_id SERIAL PRIMARY KEY,
|
---|
29 | email VARCHAR(100) NOT NULL UNIQUE,
|
---|
30 | name VARCHAR(50) NOT NULL,
|
---|
31 | surname VARCHAR(50) NOT NULL,
|
---|
32 | password VARCHAR(60) NOT NULL
|
---|
33 | );
|
---|
34 |
|
---|
35 | CREATE TABLE admin
|
---|
36 | (
|
---|
37 | admin_id SERIAL PRIMARY KEY,
|
---|
38 | account_id INT NOT NULL,
|
---|
39 | CONSTRAINT fk_admin_account_id FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE
|
---|
40 | );
|
---|
41 |
|
---|
42 | CREATE TABLE payment
|
---|
43 | (
|
---|
44 | payment_id SERIAL PRIMARY KEY,
|
---|
45 | account_id INT NOT NULL,
|
---|
46 | date DATE NOT NULL,
|
---|
47 | total_price DOUBLE PRECISION NOT NULL CHECK (total_price >= 0),
|
---|
48 | n_tickets INT NOT NULL CHECK (n_tickets > 0),
|
---|
49 | CONSTRAINT payment_account_id_fkey FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE
|
---|
50 | );
|
---|
51 |
|
---|
52 | CREATE TABLE location
|
---|
53 | (
|
---|
54 | location_id SERIAL PRIMARY KEY,
|
---|
55 | latitude DOUBLE PRECISION NOT NULL,
|
---|
56 | longitude DOUBLE PRECISION NOT NULL,
|
---|
57 | name VARCHAR(100) NOT NULL
|
---|
58 | );
|
---|
59 |
|
---|
60 | CREATE TABLE transport_organizer
|
---|
61 | (
|
---|
62 | transport_organizer_id SERIAL PRIMARY KEY,
|
---|
63 | account_id INT NOT NULL,
|
---|
64 | company_name VARCHAR(100) NOT NULL,
|
---|
65 | company_embg VARCHAR(50) NOT NULL,
|
---|
66 | CONSTRAINT transport_organizer_account_id_fkey FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE
|
---|
67 | );
|
---|
68 |
|
---|
69 | CREATE TABLE route
|
---|
70 | (
|
---|
71 | route_id SERIAL PRIMARY KEY,
|
---|
72 | transport_organizer_id INT NOT NULL,
|
---|
73 | from_location_id INT NOT NULL,
|
---|
74 | to_location_id INT NOT NULL,
|
---|
75 | CONSTRAINT route_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer (transport_organizer_id) ON DELETE CASCADE,
|
---|
76 | CONSTRAINT route_from_location_id_fkey FOREIGN KEY (from_location_id) REFERENCES location (location_id),
|
---|
77 | CONSTRAINT route_to_location_id_fkey FOREIGN KEY (to_location_id) REFERENCES location (location_id)
|
---|
78 | );
|
---|
79 |
|
---|
80 | CREATE TABLE trip
|
---|
81 | (
|
---|
82 | trip_id SERIAL PRIMARY KEY,
|
---|
83 | base_price DOUBLE PRECISION,
|
---|
84 | transport_organizer_id INT NOT NULL,
|
---|
85 | route_id INT NOT NULL,
|
---|
86 | free_seats INT CHECK (free_seats >= 0),
|
---|
87 | date DATE NOT NULL,
|
---|
88 | status VARCHAR(30),
|
---|
89 | CONSTRAINT trip_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer (transport_organizer_id),
|
---|
90 | CONSTRAINT trip_route_id_fkey FOREIGN KEY (route_id) REFERENCES route (route_id) ON DELETE CASCADE
|
---|
91 | );
|
---|
92 |
|
---|
93 | CREATE TABLE ticket
|
---|
94 | (
|
---|
95 | ticket_id SERIAL PRIMARY KEY,
|
---|
96 | trip_id INT NOT NULL,
|
---|
97 | gets_on_location_id INT NOT NULL,
|
---|
98 | gets_off_location_id INT NOT NULL,
|
---|
99 | account_id INT NOT NULL,
|
---|
100 | date_purchased DATE NOT NULL,
|
---|
101 | time_purchased TIME WITHOUT TIME ZONE NOT NULL,
|
---|
102 | price DOUBLE PRECISION CHECK (price >= 0),
|
---|
103 | seat VARCHAR(10),
|
---|
104 | payment_id INT NOT NULL,
|
---|
105 | ticket_related_with_id INT,
|
---|
106 | CONSTRAINT gets_on_location_fkey FOREIGN KEY (gets_on_location_id) REFERENCES location (location_id) ON DELETE CASCADE,
|
---|
107 | CONSTRAINT gets_off_location_fkey FOREIGN KEY (gets_off_location_id) REFERENCES location (location_id) ON DELETE CASCADE,
|
---|
108 | CONSTRAINT ticket_account_id_fkey FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE,
|
---|
109 | CONSTRAINT ticket_payment_id_fkey FOREIGN KEY (payment_id) REFERENCES payment (payment_id) ON DELETE CASCADE,
|
---|
110 | CONSTRAINT trip_id_fkey FOREIGN KEY (trip_id) REFERENCES trip (trip_id) ON DELETE CASCADE,
|
---|
111 | CONSTRAINT ticket_related_with_id_fk FOREIGN KEY (ticket_related_with_id) REFERENCES ticket(ticket_id) ON DELETE CASCADE
|
---|
112 | );
|
---|
113 |
|
---|
114 | CREATE TABLE review
|
---|
115 | (
|
---|
116 | review_id SERIAL PRIMARY KEY,
|
---|
117 | account_id INT NOT NULL,
|
---|
118 | ticket_id INT NOT NULL,
|
---|
119 | description TEXT,
|
---|
120 | rating INT CHECK (rating >= 1 AND rating <= 5),
|
---|
121 | CONSTRAINT review_account_id_fkey FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE,
|
---|
122 | CONSTRAINT review_ticket_id_fkey FOREIGN KEY (ticket_id) REFERENCES ticket (ticket_id) ON DELETE CASCADE
|
---|
123 | );
|
---|
124 |
|
---|
125 | CREATE TABLE vehicle
|
---|
126 | (
|
---|
127 | transport_organizer_id INT NOT NULL,
|
---|
128 | vehicle_id SERIAL PRIMARY KEY,
|
---|
129 | model VARCHAR(30) NOT NULL,
|
---|
130 | brand VARCHAR(30) NOT NULL,
|
---|
131 | capacity VARCHAR(20) NOT NULL,
|
---|
132 | year_manufactured VARCHAR(10),
|
---|
133 | CONSTRAINT vehicle_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer (transport_organizer_id) ON DELETE CASCADE
|
---|
134 |
|
---|
135 | );
|
---|
136 |
|
---|
137 | CREATE TABLE automobile
|
---|
138 | (
|
---|
139 | automobile_id SERIAL PRIMARY KEY,
|
---|
140 | vehicle_id INT NOT NULL UNIQUE,
|
---|
141 | CONSTRAINT automobile_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle (vehicle_id) ON DELETE CASCADE
|
---|
142 | );
|
---|
143 |
|
---|
144 | CREATE TABLE bus
|
---|
145 | (
|
---|
146 | bus_id SERIAL PRIMARY KEY,
|
---|
147 | vehicle_id INT NOT NULL UNIQUE,
|
---|
148 | CONSTRAINT bus_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle (vehicle_id) ON DELETE CASCADE
|
---|
149 | );
|
---|
150 |
|
---|
151 | CREATE TABLE van
|
---|
152 | (
|
---|
153 | van_id SERIAL PRIMARY KEY,
|
---|
154 | vehicle_id INT NOT NULL UNIQUE,
|
---|
155 | CONSTRAINT van_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle (vehicle_id) ON DELETE CASCADE
|
---|
156 | );
|
---|
157 |
|
---|
158 | CREATE TABLE train
|
---|
159 | (
|
---|
160 | train_id SERIAL PRIMARY KEY,
|
---|
161 | vehicle_id INT NOT NULL UNIQUE,
|
---|
162 | CONSTRAINT train_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle (vehicle_id) ON DELETE CASCADE
|
---|
163 | );
|
---|
164 |
|
---|
165 | CREATE TABLE driver
|
---|
166 | (
|
---|
167 | driver_id SERIAL PRIMARY KEY,
|
---|
168 | account_id INT NOT NULL,
|
---|
169 | years_experience INT NOT NULL,
|
---|
170 | transport_organizer_id INT,
|
---|
171 | CONSTRAINT driver_account_id_fkey FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE,
|
---|
172 | CONSTRAINT driver_transport_organizer_id_fkey FOREIGN KEY (transport_organizer_id) REFERENCES transport_organizer (transport_organizer_id) ON DELETE CASCADE
|
---|
173 | );
|
---|
174 |
|
---|
175 | CREATE TABLE driver_vehicle_operation
|
---|
176 | (
|
---|
177 | driver_vehicle_operation_id SERIAL PRIMARY KEY,
|
---|
178 | driver_id INT NOT NULL,
|
---|
179 | vehicle_id INT NOT NULL,
|
---|
180 | CONSTRAINT driver_vehicle_operation_driver_id_fkey FOREIGN KEY (driver_id) REFERENCES driver (driver_id) ON DELETE CASCADE,
|
---|
181 | CONSTRAINT driver_vehicle_operation_vehicle_id_fkey FOREIGN KEY (vehicle_id) REFERENCES vehicle (vehicle_id) ON DELETE CASCADE
|
---|
182 | );
|
---|
183 |
|
---|
184 | CREATE TABLE driver_drives_on_trip
|
---|
185 | (
|
---|
186 | driver_drives_on_trip_id SERIAL PRIMARY KEY,
|
---|
187 | driver_id INT NOT NULL,
|
---|
188 | trip_id INT NOT NULL,
|
---|
189 | CONSTRAINT driver_drives_on_trip_driver_id_fkey FOREIGN KEY (driver_id) REFERENCES driver (driver_id) ON DELETE CASCADE,
|
---|
190 | CONSTRAINT driver_drives_on_trip_trip_id_fkey FOREIGN KEY (trip_id) REFERENCES trip (trip_id) ON DELETE CASCADE
|
---|
191 | );
|
---|
192 |
|
---|
193 | CREATE TABLE favorite
|
---|
194 | (
|
---|
195 | favorite_id SERIAL PRIMARY KEY,
|
---|
196 | route_id INT NOT NULL,
|
---|
197 | account_id INT NOT NULL,
|
---|
198 | CONSTRAINT favorite_route_id_fkey FOREIGN KEY (route_id) REFERENCES route (route_id) ON DELETE CASCADE,
|
---|
199 | CONSTRAINT favorite_account_id_fkey FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE
|
---|
200 | );
|
---|
201 |
|
---|
202 | CREATE TABLE trip_days_active
|
---|
203 | (
|
---|
204 | trip_days_active_id SERIAL PRIMARY KEY,
|
---|
205 | route_id INT NOT NULL,
|
---|
206 | day VARCHAR(20) NOT NULL,
|
---|
207 | CONSTRAINT trip_days_active_route_id_fkey FOREIGN KEY (route_id) REFERENCES route (route_id) ON DELETE CASCADE
|
---|
208 | );
|
---|
209 |
|
---|
210 | CREATE TABLE trip_stops
|
---|
211 | (
|
---|
212 | trip_stop_id SERIAL PRIMARY KEY,
|
---|
213 | trip_id INT NOT NULL,
|
---|
214 | location_id INT NOT NULL,
|
---|
215 | stop_time TIME WITHOUT TIME ZONE NOT NULL,
|
---|
216 | CONSTRAINT trip_stops_trip_id_fkey FOREIGN KEY (trip_id) REFERENCES trip (trip_id) ON DELETE CASCADE,
|
---|
217 | CONSTRAINT trip_stops_location_id_fkey FOREIGN KEY (location_id) REFERENCES location (location_id) ON DELETE CASCADE
|
---|
218 | );
|
---|
219 |
|
---|
220 | CREATE TABLE student
|
---|
221 | (
|
---|
222 | student_id SERIAL PRIMARY KEY,
|
---|
223 | account_id INT NOT NULL,
|
---|
224 | university VARCHAR(100) NOT NULL,
|
---|
225 | index_number VARCHAR(20) NOT NULL,
|
---|
226 | CONSTRAINT student_account_id_fkey FOREIGN KEY (account_id) REFERENCES account (account_id) ON DELETE CASCADE
|
---|
227 | );
|
---|
228 |
|
---|
229 | CREATE TABLE student_ticket
|
---|
230 | (
|
---|
231 | student_ticket_id SERIAL PRIMARY KEY,
|
---|
232 | ticket_id INT NOT NULL,
|
---|
233 | discount DOUBLE PRECISION,
|
---|
234 | CONSTRAINT student_ticket_ticket_id_fkey FOREIGN KEY (ticket_id) REFERENCES ticket (ticket_id) ON DELETE CASCADE
|
---|
235 | );
|
---|
236 |
|
---|
237 | CREATE TABLE child_ticket
|
---|
238 | (
|
---|
239 | child_ticket_id SERIAL PRIMARY KEY,
|
---|
240 | ticket_id INT NOT NULL,
|
---|
241 | discount DOUBLE PRECISION,
|
---|
242 | embg VARCHAR(13) NOT NULL,
|
---|
243 | parent_embg VARCHAR(13) NOT NULL,
|
---|
244 | CONSTRAINT child_ticket_ticket_id_fkey FOREIGN KEY (ticket_id) REFERENCES ticket (ticket_id) ON DELETE CASCADE
|
---|
245 | );
|
---|
246 |
|
---|