-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathticketBookingDDL.sql
More file actions
165 lines (149 loc) · 5.15 KB
/
ticketBookingDDL.sql
File metadata and controls
165 lines (149 loc) · 5.15 KB
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
drop database if exists ticketbookingDB;
create database ticketbookingDB;
use ticketbookingDB;
CREATE TABLE bank_account
(
account_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
account_num VARCHAR(15) NOT NULL UNIQUE,
total DOUBLE
);
CREATE TABLE main_stations
(
station_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
station VARCHAR(100) NOT NULL
);
CREATE TABLE route
(
route_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
route_no VARCHAR(15) NOT NULL,
first_station_id INT NOT NULL,
second_station_id INT NOT NULL,
FOREIGN KEY (first_station_id) REFERENCES main_stations(station_id) ON UPDATE CASCADE,
FOREIGN KEY (second_station_id) REFERENCES main_stations(station_id) ON UPDATE CASCADE
);
CREATE TABLE intermediate
(
intermediate_id DECIMAL(5,2) PRIMARY KEY NOT NULL,
station VARCHAR(100) NOT NULL,
route_id INT NOT NULL,
FOREIGN KEY (route_id) REFERENCES route(route_id) ON UPDATE CASCADE
);
CREATE TABLE owner
(
owner_id VARCHAR(11) PRIMARY KEY NOT NULL,
name VARCHAR(150) NOT NULL,
nic VARCHAR(11) NOT NULL,
telephone VARCHAR(11) NOT NULL,
address VARCHAR(250) NOT NULL,
email VARCHAR(100),
password VARCHAR(50) NOT NULL,
account_num VARCHAR(15),
FOREIGN KEY (account_num) REFERENCES bank_account(account_num) ON UPDATE CASCADE
);
CREATE TABLE admin
(
admin_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
name VARCHAR(150) NOT NULL,
nic VARCHAR(11) NOT NULL,
telephone VARCHAR(11) NOT NULL,
address VARCHAR(250) NOT NULL,
email VARCHAR(100),
password VARCHAR(50) NOT NULL
);
CREATE TABLE operator
(
operator_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
name VARCHAR(150) NOT NULL,
nic VARCHAR(11) NOT NULL,
telephone VARCHAR(11) NOT NULL,
address VARCHAR(250) NOT NULL,
email VARCHAR(100),
password VARCHAR(50) NOT NULL,
station_id INT,
FOREIGN KEY (station_id) REFERENCES main_stations(station_id) ON DELETE SET NULL ON UPDATE CASCADE
);
CREATE TABLE customer
(
customer_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
name VARCHAR(150) NOT NULL,
nic VARCHAR(11) NOT NULL,
telephone VARCHAR(11) NOT NULL,
address VARCHAR(250) NOT NULL
);
CREATE TABLE bus
(
bus_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
number_plate VARCHAR(15) NOT NULL,
type VARCHAR(50) NOT NULL,
no_of_seats INT NOT NULL,
seats_for_booking INT,
owner_id VARCHAR(11) NOT NULL,
route_id INT NOT NULL,
FOREIGN KEY (owner_id) REFERENCES owner(owner_id) ON UPDATE CASCADE,
FOREIGN KEY (route_id) REFERENCES route(route_id) ON UPDATE CASCADE
);
CREATE TABLE bus_requests
(
bus_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
number_plate VARCHAR(15) NOT NULL,
type VARCHAR(50) NOT NULL,
no_of_seats INT NOT NULL,
seats_for_booking INT,
owner_id VARCHAR(11) NOT NULL,
route_id INT NOT NULL,
FOREIGN KEY (owner_id) REFERENCES owner(owner_id) ON UPDATE CASCADE,
FOREIGN KEY (route_id) REFERENCES route(route_id) ON UPDATE CASCADE
);
CREATE TABLE journey
(
journey_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
direction BOOLEAN NOT NULL,
time TIME NOT NULL,
unavailable_days VARCHAR(80),
bus_id INT NOT NULL,
route_id INT NOT NULL,
FOREIGN KEY (bus_id) REFERENCES bus(bus_id),
FOREIGN KEY (route_id) REFERENCES route(route_id)
);
CREATE TABLE bus_fee
(
price_id INT PRIMARY KEY AUTO_INCREMENT,
price_normal DOUBLE NOT NULL,
price_highway DOUBLE NOT NULL
);
CREATE TABLE fare
(
fare_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
route_id INT NOT NULL,
intermediate_id_1 DECIMAL(6,3) NOT NULL,
intermediate_id_2 DECIMAL(6,3) NOT NULL,
price_id INT NOT NULL,
FOREIGN KEY (route_id) REFERENCES route(route_id),
FOREIGN KEY (intermediate_id_1) REFERENCES intermediate(intermediate_id),
FOREIGN KEY (intermediate_id_2) REFERENCES intermediate(intermediate_id),
FOREIGN KEY (price_id) REFERENCES bus_fee(price_id)
);
CREATE TABLE booking
(
booking_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
date DATE NOT NULL,
seats INT NOT NULL,
no_of_seats VARCHAR(50) NOT NULL,
bus_id INT NOT NULL,
journey_id INT NOT NULL ,
fare_id INT NOT NULL ,
customer_id INT NOT NULL ,
status INT,
FOREIGN KEY (bus_id) REFERENCES bus(bus_id),
FOREIGN KEY (journey_id) REFERENCES journey(journey_id),
FOREIGN KEY (customer_id) REFERENCES customer(customer_id),
FOREIGN KEY (fare_id) REFERENCES fare(fare_id)
);
CREATE TABLE transaction
(
transaction_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
booking_id INT NOT NULL ,
amount DOUBLE NOT NULL,
transfered BOOLEAN,
FOREIGN KEY (booking_id) REFERENCES booking(booking_id)
);