-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGiftCardSQLSchema.sql
208 lines (183 loc) · 6.97 KB
/
GiftCardSQLSchema.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
DROP TABLE LoginAttempts;
DROP TABLE Transaction;
DROP TABLE PaymentMethod;
DROP TABLE UserPreference;
DROP TABLE Notification;
DROP TABLE UserFeedback;
DROP TABLE UserFavourites;
DROP TABLE PromoCode;
DROP TABLE ProductOrders;
DROP TABLE UserRewardsHistory;
DROP TABLE UserRewards;
DROP TABLE Orders;
DROP TABLE GiftCard;
DROP TABLE Product;
DROP TABLE Category;
DROP TABLE Brand;
DROP TABLE CustomerPhoneDetails;
DROP TABLE Customer;
DROP TABLE Users;
DROP TABLE Roles;
CREATE TABLE Roles (
idRole INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
isSuperAdmin NUMBER(1) NOT NULL,
isCustomer NUMBER(1) NOT NULL
);
INSERT INTO Roles (isSuperAdmin,isCustomer) VALUES (0,1);
INSERT INTO Roles (isSuperAdmin,isCustomer) VALUES (1,0);
CREATE TABLE Users (
idUser INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idRole INTEGER NOT NULL,
emailId VARCHAR(50),
password VARCHAR(80),
isActive NUMBER(1) NOT NULL,
lastLogin TIMESTAMP NOT NULL,
FOREIGN KEY(idRole) REFERENCES Roles(idRole));
CREATE TABLE Customer (
idCustomer INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idUser INTEGER,
firstName VARCHAR(50) NOT NULL,
lastName VARCHAR(50) NOT NULL,
zipcode INTEGER NOT NULL,
address VARCHAR(255),
DOB DATE,
FOREIGN KEY(idUser) REFERENCES Users(idUser));
CREATE TABLE CustomerPhoneDetails (
idCustomer INTEGER NOT NULL,
phoneNumber INTEGER NOT NULL,
phoneType VARCHAR(20) NOT NULL,
PRIMARY KEY (idCustomer, phoneNumber),
FOREIGN KEY(idCustomer) REFERENCES Customer(idCustomer) ON DELETE CASCADE);
CREATE TABLE LoginAttempts (
idUser INTEGER,
loginAttempts INTEGER NOT NULL,
loginDatetime TIMESTAMP NOT NULL,
PRIMARY KEY (idUser,loginAttempts),
FOREIGN KEY(idUser) REFERENCES Users(idUser) ON DELETE CASCADE);
CREATE TABLE PaymentMethod(
idPaymentMethod INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
paymentMethod VARCHAR(20)
);
CREATE TABLE UserPreference (
idPreference INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idUser INTEGER NOT NULL,
email NUMBER(1) NOT NULL,
sms NUMBER(1) NOT NULL,
FOREIGN KEY(idUser) REFERENCES Users(idUser) ON DELETE CASCADE);
CREATE TABLE Notification (
idNotification INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idUser INTEGER,
isSMSSent NUMBER(1),
isEmailSent NUMBER(1),
message VARCHAR(80),
notificationDatetime TIMESTAMP,
FOREIGN KEY(idUser) REFERENCES Users(idUser));
CREATE TABLE UserFeedback (
idFeedback INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idUser INTEGER NOT NULL,
message VARCHAR(255),
rating INTEGER,
FOREIGN KEY(idUser) REFERENCES Users(idUser));
CREATE TABLE Brand (
idBrand INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
brandName VARCHAR(40)
);
CREATE TABLE Category (
idCategory INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
categoryName VARCHAR(40)
);
CREATE TABLE Product (
idProduct INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idBrand INTEGER NOT NULL,
idCategory INTEGER NOT NULL,
productName VARCHAR(225) NOT NULL,
description VARCHAR(2000),
termsAndConditions VARCHAR(2000),
stepsToRedeem VARCHAR(2000),
imageURL VARCHAR(255),
quantity INTEGER NOT NULL,
amount INTEGER NOT NULL,
FOREIGN KEY(idBrand) REFERENCES Brand(idBrand),
FOREIGN KEY(idCategory) REFERENCES Category(idCategory));
CREATE TABLE UserFavourites (
idUser INTEGER NOT NULL,
idProduct INTEGER NOT NULL,
PRIMARY KEY(idUser, idProduct),
FOREIGN KEY(idProduct) REFERENCES Product(idProduct),
FOREIGN KEY(idUser) REFERENCES Users(idUser));
CREATE TABLE GiftCard (
idGiftcard INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idProduct INTEGER NOT NULL,
giftCardNumber VARCHAR(19) NOT NULL,
giftCardPin INTEGER NOT NULL,
status VARCHAR(16) NOT NULL,
FOREIGN KEY(idProduct) REFERENCES Product(idProduct));
CREATE TABLE PromoCode (
idPromocode INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idProduct INTEGER,
name VARCHAR(20),
discountInPercentage INTEGER NOT NULL,
isActive NUMBER(1),
FOREIGN KEY(idProduct) REFERENCES Product(idProduct));
CREATE TABLE Orders (
orderId INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idUser INTEGER NOT NULL,
status VARCHAR(20),
discount REAL NOT NULL,
totalAmount REAL NOT NULL,
startDate TIMESTAMP NOT NULL,
endDate TIMESTAMP NOT NULL,
orderDatetime TIMESTAMP NOT NULL,
FOREIGN KEY(idUser) REFERENCES Users(idUser) ON DELETE CASCADE);
CREATE TABLE ProductOrders (
orderId INTEGER NOT NULL,
idGiftcard INTEGER NOT NULL,
PRIMARY KEY (orderId, idGiftcard),
FOREIGN KEY(idGiftcard) REFERENCES GiftCard(idGiftcard),
FOREIGN KEY(orderId) REFERENCES Orders(orderId));
CREATE TABLE Transaction (
idTransaction INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
orderId INTEGER NOT NULL,
idUser INTEGER NOT NULL,
idPaymentMethod INTEGER NOT NULL,
status VARCHAR(20),
amount REAL NOT NULL,
transactionDatetime TIMESTAMP,
FOREIGN KEY(idPaymentMethod) REFERENCES PaymentMethod(idPaymentMethod),
FOREIGN KEY(idUser) REFERENCES Users(idUser),
FOREIGN KEY(orderId) REFERENCES Orders(orderId));
CREATE TABLE UserRewards (
idReward INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idUser INTEGER NOT NULL,
points REAL,
FOREIGN KEY(idUser) REFERENCES Users(idUser));
CREATE TABLE UserRewardsHistory (
idHistory INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
idReward INTEGER NOT NULL,
orderId INTEGER NOT NULL,
points REAL NOT NULL,
modifiedDatetime TIMESTAMP,
FOREIGN KEY(idReward) REFERENCES UserRewards(idReward),
FOREIGN KEY(orderId) REFERENCES Orders(orderId));
INSERT INTO Category (categoryName) VALUES ('E-commerce/Online');
INSERT INTO Category (categoryName) VALUES ('Fashion / Lifestyle');
INSERT INTO Category (categoryName) VALUES ('Grocery');
INSERT INTO Category (categoryName) VALUES ('Home Needs');
INSERT INTO Category (categoryName) VALUES ('Home Furnishings');
INSERT INTO Category (categoryName) VALUES ('Travel');
INSERT INTO Category (categoryName) VALUES ('Gaming');
INSERT INTO Category (categoryName) VALUES ('Entertainment');
INSERT INTO Category (categoryName) VALUES ('Health / Beauty');
INSERT INTO Category (categoryName) VALUES ('Electronics');
INSERT INTO Category (categoryName) VALUES ('Food / Beverages');
INSERT INTO Category (categoryName) VALUES ('Hospitality');
INSERT INTO Category (categoryName) VALUES ('Jewellery');
INSERT INTO Category (categoryName) VALUES ('Luxury Brand');
INSERT INTO Category (categoryName) VALUES ('International Brands');
INSERT INTO Category (categoryName) VALUES ('Sportswear / Footwear');
INSERT INTO Category (categoryName) VALUES ('Baby Products');
INSERT INTO Category (categoryName) VALUES ('Books');
INSERT INTO Category (categoryName) VALUES ('Finance and Insurance');
INSERT INTO PaymentMethod VALUES(1,'Visa');
INSERT INTO PaymentMethod VALUES(2,'Mastercard');
INSERT INTO PaymentMethod VALUES(3,'Paypal');