-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTables.sql
293 lines (262 loc) · 8.36 KB
/
Tables.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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
CREATE TABLE Users
(
username VARCHAR(20) ,
password VARCHAR(20) ,
first_name VARCHAR(20),
last_name VARCHAR(20),
email VARCHAR(50)NOT NULL UNIQUE,
CONSTRAINT pr_users
PRIMARY KEY (username)
);
CREATE TABLE User_mobile_numbers
(
mobile_number VARCHAR(20) UNIQUE,
username VARCHAR(20) ,
CONSTRAINT pr_mobile_numbers
PRIMARY KEY (mobile_number,username),
CONSTRAINT fr_username_mobiles
FOREIGN KEY (username) REFERENCES Users ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE User_Adresses
(
address VARCHAR(100),
username VARCHAR(20),
CONSTRAINT pr_addresses
PRIMARY KEY (address,username),
CONSTRAINT fr_username_adresses
FOREIGN KEY(username) REFERENCES Users ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE Customer
(
username VARCHAR(20)NOT NULL,
points INT DEFAULT 0,
CONSTRAINT pr_customer
PRIMARY KEY(username),
CONSTRAINT fr_username_customer
FOREIGN KEY(username) REFERENCES Users ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Admins
(
username VARCHAR(20),
CONSTRAINT pr_admin
PRIMARY KEY(username),
CONSTRAINT fr_username_admins
FOREIGN KEY (username) REFERENCES Users ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE Vendor
(
username VARCHAR(20),
activated BIT DEFAULT 0,
company_name VARCHAR(20) NOT NULL,
bank_acc_no VARCHAR(20) NOT NULL UNIQUE,
admin_username VARCHAR(20) ,
CONSTRAINT pr_vendor
PRIMARY KEY (username),
CONSTRAINT fr_username_vendor
FOREIGN KEY (username) REFERENCES Users ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fr_admin
FOREIGN KEY (admin_username) REFERENCES Admins ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE TABLE Delivery_personel
(
username VARCHAR(20) NOT NULL,
is_activated BIT DEFAULT 0,
CONSTRAINT pr_delivery_personel
PRIMARY KEY (username),
CONSTRAINT fr_username_delivery
FOREIGN KEY (username) REFERENCES Users ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE Delivery(
id INT IDENTITY (1,1),
type VARCHAR(20) ,
time_duration INT ,
fees DECIMAL(5,3) ,
username VARCHAR(20) ,
CONSTRAINT pr_delivery_type
PRIMARY KEY (id),
CONSTRAINT fr_usrAdmin
FOREIGN KEY (username) REFERENCES Admins ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE TABLE Credit_Card (
number varchar(20),
expiry_date DATE NOT NULL,
cvv_code varchar(4) NOT NULL,
CONSTRAINT pr_cc
PRIMARY KEY(number)
);
CREATE TABLE Orders(
order_no INT IDENTITY(1,1),
order_date datetime ,
total_amount DECIMAL(10,2) ,
cash_amount DECIMAL(10,2) ,
credit_amount DECIMAL(10,2) ,
payment_type VARCHAR(20) ,
order_status varchar(100) DEFAULT 'NOT PROCESSED' ,
remaining_days INT ,
time_limit INT ,
Gift_Card_code_used VARCHAR(10),
customer_name varchar(20) ,
delivery_id INT ,
creditCard_number varchar(20) ,
CONSTRAINT pr_orders
PRIMARY KEY(order_no),
CONSTRAINT fr_name
FOREIGN KEY(customer_name) REFERENCES Customer ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fr_D_id
FOREIGN KEY(delivery_id) REFERENCES Delivery ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fr_cc_num
FOREIGN KEY(creditCard_number) REFERENCES Credit_Card ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fr_gf_code
FOREIGN KEY(Gift_Card_code_used) REFERENCES GiftCard ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Product(
serial_no INT IDENTITY(1,1),
product_name VARCHAR(20) NOT NULL,
category VARCHAR(20) NOT NULL,
product_description TEXT,
price DECIMAL(10,2) NOT NULL,
final_price DECIMAL(10,2) ,
color VARCHAR(20),
available BIT DEFAULT 1,
rate INT,
vendor_username VARCHAR(20) NOT NULL,
customer_username VARCHAR(20) ,
customer_order_id INT,
CONSTRAINT pr_product
PRIMARY KEY(serial_no),
CONSTRAINT fr_c_usr
FOREIGN KEY(customer_username) REFERENCES Customer ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fr_v_usr
FOREIGN KEY(vendor_username) REFERENCES Vendor ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fr_co_id
FOREIGN KEY(customer_order_id) REFERENCES Orders ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE CustomerAddstoCartProduct(
serial_no INT ,
customer_name VARCHAR(20) ,
CONSTRAINT pr_custaddscart
PRIMARY KEY(serial_no,customer_name),
CONSTRAINT fr_serial_no
FOREIGN KEY(serial_no) REFERENCES Orders on delete cascade on update cascade,
CONSTRAINT fr_c_name
FOREIGN KEY(customer_name) REFERENCES Customer ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE Table Todays_Deals
(
deal_id INT IDENTITY(1,1) ,
deal_amount INT NOT NULL,
expiry_date DATETIME NOT NULL,
admin_username VARCHAR(20),
CONSTRAINT pr_todays_deal
PRIMARY KEY(deal_id),
CONSTRAINT fr_admin_todays_deal
FOREIGN KEY (admin_username) REFERENCES Admins ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE Table Todays_Deals_Product(
deal_id INT ,
serial_no INT ,
CONSTRAINT pr_todays_deal_prod
PRIMARY KEY(deal_id,serial_no),
CONSTRAINT fr_deal_id
FOREIGN KEY (deal_id) REFERENCES Todays_Deals ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT fr_seriall_deal
FOREIGN KEY (serial_no) REFERENCES Product ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE Table offer
(
offer_id INT IDENTITY(1,1) ,
offer_amount DECIMAL(10,2) NOT NULL ,
expiry_date DATETIME NOT NULL ,
CONSTRAINT pr_offer_id
PRIMARY KEY (offer_id)
);
CREATE TABLE offersOnProduct(
offer_id INT ,
serial_no INT ,
CONSTRAINT pr_offersprod
PRIMARY KEY (offer_id,serial_no),
CONSTRAINT fr_offer_id
FOREIGN KEY (offer_id) REFERENCES offer ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fr_serial_prod
FOREIGN KEY (serial_no) REFERENCES Product ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Customer_Question_Product
(
serial_no INT,
customer_name VARCHAR(20) NOT NULL ,
question VARCHAR(50) NOT NULL,
answer VARCHAR(200) ,
CONSTRAINT pr_custquesprod
PRIMARY KEY (serial_no, customer_name),
CONSTRAINT fr_serial_no_cart
FOREIGN KEY (serial_no) REFERENCES Product ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fr_customer_name
FOREIGN KEY(customer_name) REFERENCES Customer ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE TABLE Wishlist(
username VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL,
CONSTRAINT pr_wishlist
PRIMARY KEY(username,name),
CONSTRAINT fr_user_name
FOREIGN KEY (username) REFERENCES Customer ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE TABLE Giftcard(
code VARCHAR(10),
expiry_date DATETIME NOT NULL ,
amount INT NOT NULL,
username VARCHAR(20) NOT NULL,
CONSTRAINT pr_Giftcard
PRIMARY KEY (code),
CONSTRAINT fr_username_wishlist_customer
FOREIGN KEY (username) REFERENCES Admins ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE Table Wishlist_Product(
username VARCHAR(20) NOT NULL,
wish_name VARCHAR(20) NOT NULL,
serial_no INT NOT NULL,
CONSTRAINT pr_wishlist_prod
PRIMARY KEY(username,wish_name,serial_no),
CONSTRAINT fr_username_wishlist
FOREIGN KEY(username,wish_name) REFERENCES Wishlist ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fr_serial_no_product_wishlist
FOREIGN KEY(serial_no) REFERENCES Product ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE Table Admin_Customer_Giftcard(
code VARCHAR(10) ,
customer_name VARCHAR(20) NOT NULL,
admin_username VARCHAR(20) NOT NULL,
remaining_points INT,
CONSTRAINT pr_admin_customer_giftcard
PRIMARY KEY (code,customer_name,admin_username),
CONSTRAINT fr_code_giftcard
FOREIGN KEY (code) REFERENCES Giftcard ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fr_customer_name_giftcard
FOREIGN KEY (customer_name) REFERENCES Customer ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fl_admin_username_giftcard
FOREIGN KEY (admin_username) REFERENCES Admins ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE Table Admin_Delivery_Order(
delivery_username VARCHAR(20) ,
order_no INT ,
admin_username VARCHAR(20) NOT NULL,
delivery_window VARCHAR(50),
CONSTRAINT pr_admin_delivery_order
PRIMARY KEY (delivery_username,order_no),
CONSTRAINT fr_delivery_username_order
FOREIGN KEY(delivery_username) REFERENCES Delivery_personel ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fr_order_no_delivery
FOREIGN KEY(order_no) REFERENCES Orders ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fr_admin_username_delivery
FOREIGN KEY(admin_username) REFERENCES Admins ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE Table Customer_CreditCard(
customer_name VARCHAR(20) NOT NULL,
cc_number VARCHAR(20) NOT NULL,
CONSTRAINT pr_customer_creditcard
PRIMARY KEY(customer_name,cc_number),
CONSTRAINT fr_customer_name_cc
FOREIGN KEY(customer_name) REFERENCES Customer ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fr_cc_number
FOREIGN KEY(cc_number) REFERENCES Credit_Card ON DELETE CASCADE ON UPDATE CASCADE
);