-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDBTables.sql
More file actions
133 lines (119 loc) · 3.92 KB
/
Copy pathDBTables.sql
File metadata and controls
133 lines (119 loc) · 3.92 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
CREATE SCHEMA Food;
CREATE TABLE Food.Users (
UserID INT IDENTITY(1,1) PRIMARY KEY,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
PhoneNumber VARCHAR(15) UNIQUE NOT NULL,
Password NVARCHAR(100) NOT NULL
);
CREATE TABLE Food.Restaurants (
RestaurantID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(100) NOT NULL,
PhoneNumber VARCHAR(15) NOT NULL,
Address NVARCHAR(250) NOT NULL,
IsActive BIT DEFAULT 1
);
CREATE TABLE Food.Categories (
CategoryID INT IDENTITY(1,1) PRIMARY KEY,
Title NVARCHAR(50) NOT NULL
);
CREATE TABLE Food.Coupons (
CouponID INT IDENTITY(1,1) PRIMARY KEY,
Code VARCHAR(20) UNIQUE NOT NULL,
DiscountPercent DECIMAL(5,2) NOT NULL,
IsActive BIT DEFAULT 1
);
CREATE TABLE Food.SystemLogs (
LogID INT IDENTITY(1,1) PRIMARY KEY,
TableName NVARCHAR(50) NOT NULL,
Action NVARCHAR(50) NOT NULL,
Description NVARCHAR(MAX),
LogDate DATETIME DEFAULT GETDATE()
);
CREATE TABLE Food.Addresses (
AddressID INT IDENTITY(1,1) PRIMARY KEY,
UserID INT NOT NULL,
City NVARCHAR(50) NOT NULL,
Street NVARCHAR(50) NOT NULL,
PostalCode VARCHAR(20),
FOREIGN KEY (UserID) REFERENCES Food.Users(UserID)
);
CREATE TABLE Food.MenuItems (
ItemID INT IDENTITY(1,1) PRIMARY KEY,
RestaurantID INT NOT NULL,
CategoryID INT NOT NULL,
Name NVARCHAR(50) NOT NULL,
Price DECIMAL(18,2) NOT NULL,
IsAvailable BIT DEFAULT 1,
FOREIGN KEY (RestaurantID) REFERENCES Food.Restaurants(RestaurantID),
FOREIGN KEY (CategoryID) REFERENCES Food.Categories(CategoryID)
);
CREATE TABLE Food.Reviews (
ReviewID INT IDENTITY(1,1) PRIMARY KEY,
UserID INT NOT NULL,
RestaurantID INT NOT NULL,
Rating INT CHECK (Rating >= 1 AND Rating <= 5),
Comment NVARCHAR(250),
FOREIGN KEY (UserID) REFERENCES Food.Users(UserID),
FOREIGN KEY (RestaurantID) REFERENCES Food.Restaurants(RestaurantID)
);
CREATE TABLE Food.Orders (
OrderID INT IDENTITY(1,1) PRIMARY KEY,
UserID INT NOT NULL,
RestaurantID INT NOT NULL,
AddressID INT NOT NULL,
CouponID INT NULL,
OrderDate DATETIME DEFAULT GETDATE(),
TotalAmount DECIMAL(18,2) NOT NULL,
FOREIGN KEY (UserID) REFERENCES Food.Users(UserID),
FOREIGN KEY (RestaurantID) REFERENCES Food.Restaurants(RestaurantID),
FOREIGN KEY (AddressID) REFERENCES Food.Addresses(AddressID),
FOREIGN KEY (CouponID) REFERENCES Food.Coupons(CouponID)
);
CREATE TABLE Food.OrderDetails (
OrderDetailID INT IDENTITY(1,1) PRIMARY KEY,
OrderID INT NOT NULL,
ItemID INT NOT NULL,
Quantity INT NOT NULL,
UnitPrice DECIMAL(18,2) NOT NULL,
FOREIGN KEY (OrderID) REFERENCES Food.Orders(OrderID),
FOREIGN KEY (ItemID) REFERENCES Food.MenuItems(ItemID)
);
CREATE TABLE Food.OrderStatusHistory (
HistoryID INT IDENTITY(1,1) PRIMARY KEY,
OrderID INT NOT NULL,
Status NVARCHAR(50) NOT NULL,
ChangeDate DATETIME DEFAULT GETDATE(),
FOREIGN KEY (OrderID) REFERENCES Food.Orders(OrderID)
);
CREATE TABLE Food.Payments (
PaymentID INT IDENTITY(1,1) PRIMARY KEY,
OrderID INT NOT NULL,
Amount DECIMAL(18,2) NOT NULL,
IsSuccessful BIT DEFAULT 0,
PaymentDate DATETIME DEFAULT GETDATE(),
FOREIGN KEY (OrderID) REFERENCES Food.Orders(OrderID)
);
CREATE TABLE Food.TaxiFoodDeliveries (
FoodDeliverId INT IDENTITY(1,1) PRIMARY KEY,
OrderId INT NOT NULL REFERENCES Food.Orders(OrderID),
PickupAddress NVARCHAR(255) NOT NULL,
DropoffAddress NVARCHAR(255) NOT NULL,
FoodDeliveryStatus NVARCHAR(20) DEFAULT 'Pending'
);
--DROP TABLE Food.TaxiFoodDeliveries;
--DROP TABLE Food.Payments;
--DROP TABLE Food.OrderStatusHistory;
--DROP TABLE Food.OrderDetails;
--DROP TABLE Food.Orders;
--DROP TABLE Food.Reviews;
--DROP TABLE Food.MenuItems;
--DROP TABLE Food.Addresses;
--DROP TABLE Food.SystemLogs;
--DROP TABLE Food.Coupons;
--DROP TABLE Food.Categories;
--DROP TABLE Food.Restaurants;
--DROP TABLE Food.Users;
--GO
--DROP SCHEMA Food;
--GO