-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDB_Project.sql
More file actions
154 lines (121 loc) · 3.75 KB
/
DB_Project.sql
File metadata and controls
154 lines (121 loc) · 3.75 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
use DB_Project;
create table Person (
PersonID INT AUTO_INCREMENT NOT NULL,
Name VARCHAR(20) NOT NULL,
Gender CHAR(1),
DateOfBirth DATE NOT NULL,
Address TEXT NOT NULL,
PRIMARY KEY (PersonID)
);
create table Person_Phone_Numbers (
PersonID INT NOT NULL,
Phone_Number CHAR(10),
FOREIGN KEY (PersonID) REFERENCES PERSON(PersonID)
);
create table Employee (
EmployeeID INT NOT NULL,
Salary INT,
Start_Date DATE,
FOREIGN KEY (EmployeeID) REFERENCES PERSON(PersonID)
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (EmployeeID)
);
create table Customer (
CustomerID INT NOT NULL,
FOREIGN KEY (CustomerID) REFERENCES PERSON(PersonID),
PRIMARY KEY (CustomerID)
);
create table Store (
StoreID INT AUTO_INCREMENT NOT NULL,
Store_Type VARCHAR(20),
Store_Location INT,
Open_Time TIME,
Close_time TIME,
PRIMARY KEY (StoreID)
);
create table Products (
ProductID INT NOT NULL,
Name VARCHAR(20) NOT NULL,
Description TEXT,
Price DOUBLE(5, 2),
StoreID INT NOT NULL,
Quantity INT,
FOREIGN KEY (StoreID) REFERENCES Store(StoreID)
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (StoreID, ProductID)
);
create table Manager (
EmployeeID INT NOT NULL,
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (EmployeeID)
);
create table Floor_Staff (
EmployeeID INT NOT NULL,
ManagerID INT NOT NULL,
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (ManagerID) REFERENCES Manager(EmployeeID)
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (EmployeeID)
);
create table Floor_Log(
Floor INT,
FloorStaffID INT NOT NULL,
Work_Date DATE NOT NULL,
FOREIGN KEY (FloorStaffID) REFERENCES Floor_Staff(EmployeeID)
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY(FloorStaffID, Work_Date)
);
create table Cashier (
EmployeeID INT NOT NULL,
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (EmployeeID)
);
create table Supervises (
FloorStaffID INT NOT NULL,
CashierID INT NOT NULL,
FOREIGN KEY (FloorStaffID) REFERENCES Floor_Staff(EmployeeID)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (CashierID) REFERENCES Cashier(EmployeeID)
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (FloorStaffID, CashierID)
);
create table Places_Order (
OrderID INT AUTO_INCREMENT NOT NULL,
Created_Time TIME,
Subtotal DOUBLE(5, 2),
CustomerID INT NOT NULL,
StoreID INT NOT NULL,
FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID),
FOREIGN KEY (StoreID) REFERENCES Store(StoreID),
PRIMARY KEY (OrderID)
);
create table Make_Payment (
PaymentID INT AUTO_INCREMENT NOT NULL,
Amount DOUBLE(5, 2) NOT NULL,
Payment_Time TIME NOT NULL,
Method TEXT NOT NULL,
Other_Information TEXT,
CustomerID INT NOT NULL,
CashierID INT NOT NULL,
PRIMARY KEY (PaymentID),
FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID) ON DELETE CASCADE,
FOREIGN KEY (CashierID) REFERENCES Cashier(EmployeeID),
CONSTRAINT CHK_PAYMENT_METHOD CHECK (Method IN ('Cash', 'Credit Card', 'Debit Card', 'PayPal'))
);
create table Ordered_Product (
OrderID INT AUTO_INCREMENT NOT NULL,
ProductID INT NOT NULL,
Price DOUBLE(5, 2) NOT NULL,
Quantity INT NOT NULL,
PRIMARY KEY (OrderID, ProductID),
FOREIGN KEY (OrderID) REFERENCES Places_Order(OrderID) ON DELETE CASCADE,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
create table Mall_Manager (
ManagerID INT NOT NULL,
FOREIGN KEY (ManagerID) REFERENCES Manager(EmployeeID),
PRIMARY KEY (ManagerID)
);