1 | 1 DROP TABLE IF EXISTS delivery_assignment;
|
---|
2 | 2 DROP TABLE IF EXISTS item_ingredient;
|
---|
3 | 3 DROP TABLE IF EXISTS costs;
|
---|
4 | 4 DROP TABLE IF EXISTS earnings;
|
---|
5 | 5 DROP TABLE IF EXISTS menu;
|
---|
6 | 6 DROP TABLE IF EXISTS restaurant_category;
|
---|
7 | 7 DROP TABLE IF EXISTS item_category;
|
---|
8 | 8 DROP TABLE IF EXISTS order_items;
|
---|
9 | 9 DROP TABLE IF EXISTS orders;
|
---|
10 | 10 DROP TABLE IF EXISTS restaurant_owners;
|
---|
11 | 11 DROP TABLE IF EXISTS user_addresses;
|
---|
12 | 12 DROP TABLE IF EXISTS restaurant_owner;
|
---|
13 | 13 DROP TABLE IF EXISTS delivery_man;
|
---|
14 | 14 DROP TABLE IF EXISTS customer;
|
---|
15 | 15 DROP TABLE IF EXISTS restaurant;
|
---|
16 | 16 DROP TABLE IF EXISTS delivery_firm;
|
---|
17 | 17 DROP TABLE IF EXISTS ingredient;
|
---|
18 | 18 DROP TABLE IF EXISTS item;
|
---|
19 | 19 DROP TABLE IF EXISTS category;
|
---|
20 | 20 DROP TABLE IF EXISTS address;
|
---|
21 | 21 DROP TABLE IF EXISTS app_user;
|
---|
22 | 22 DROP TABLE IF EXISTS administrator;
|
---|
23 | 23 DROP TABLE IF EXISTS menu_item;
|
---|
24 | 24 DROP TABLE IF EXISTS shopping_cart;
|
---|
25 | 25 DROP TABLE IF EXISTS cart_items;
|
---|
26 |
|
---|
27 |
|
---|
28 |
|
---|
29 |
|
---|
30 | CREATE TABLE APP_USER (
|
---|
31 | user_id SERIAL PRIMARY KEY,
|
---|
32 | first_name VARCHAR(100) NOT NULL,
|
---|
33 | last_name VARCHAR(100) NOT NULL,
|
---|
34 | email VARCHAR(150) UNIQUE NOT NULL,
|
---|
35 | password VARCHAR(255) NOT NULL,
|
---|
36 | phone VARCHAR(50)
|
---|
37 | );
|
---|
38 |
|
---|
39 | CREATE TABLE ADMINISTRATOR (
|
---|
40 | user_id INT PRIMARY KEY,
|
---|
41 | authorized_from DATE,
|
---|
42 | authorized_to DATE,
|
---|
43 | CONSTRAINT fk_admin_user FOREIGN KEY (user_id) REFERENCES APP_USER(user_id)
|
---|
44 | );
|
---|
45 |
|
---|
46 | ALTER TABLE APP_USER
|
---|
47 | ADD COLUMN administrator_id INT,
|
---|
48 | ADD CONSTRAINT fk_appuser_admin FOREIGN KEY (administrator_id)
|
---|
49 | REFERENCES ADMINISTRATOR(user_id);
|
---|
50 |
|
---|
51 | CREATE TABLE ADDRESS (
|
---|
52 | address_id SERIAL PRIMARY KEY,
|
---|
53 | city VARCHAR(100),
|
---|
54 | street VARCHAR(200),
|
---|
55 | postal_code VARCHAR(20)
|
---|
56 | );
|
---|
57 |
|
---|
58 | CREATE TABLE CATEGORY (
|
---|
59 | category_id SERIAL PRIMARY KEY,
|
---|
60 | name VARCHAR(100),
|
---|
61 | description TEXT
|
---|
62 | );
|
---|
63 |
|
---|
64 | CREATE TABLE ITEM (
|
---|
65 | item_id SERIAL PRIMARY KEY,
|
---|
66 | image_url VARCHAR(255),
|
---|
67 | name VARCHAR(100) NOT NULL,
|
---|
68 | price DECIMAL(10,2) NOT NULL,
|
---|
69 | description TEXT
|
---|
70 | );
|
---|
71 |
|
---|
72 | CREATE TABLE INGREDIENT (
|
---|
73 | ingredient_id SERIAL PRIMARY KEY,
|
---|
74 | name VARCHAR(100) NOT NULL
|
---|
75 | );
|
---|
76 |
|
---|
77 | CREATE TABLE DELIVERY_FIRM (
|
---|
78 | deliveryfirm_id SERIAL PRIMARY KEY,
|
---|
79 | name VARCHAR(150) NOT NULL
|
---|
80 | );
|
---|
81 |
|
---|
82 | CREATE TABLE RESTAURANT (
|
---|
83 | restaurant_id SERIAL PRIMARY KEY,
|
---|
84 | address_id INT,
|
---|
85 | name VARCHAR(150) NOT NULL,
|
---|
86 | website_url VARCHAR(255),
|
---|
87 | opening_time TIME,
|
---|
88 | closing_time TIME,
|
---|
89 | email VARCHAR(150),
|
---|
90 | phone_number VARCHAR(50),
|
---|
91 | CONSTRAINT fk_restaurant_address FOREIGN KEY (address_id) REFERENCES ADDRESS(address_id)
|
---|
92 | );
|
---|
93 |
|
---|
94 | CREATE TABLE CUSTOMER (
|
---|
95 | user_id INT PRIMARY KEY,
|
---|
96 | CONSTRAINT fk_customer_user FOREIGN KEY (user_id) REFERENCES APP_USER(user_id)
|
---|
97 | );
|
---|
98 |
|
---|
99 | CREATE TABLE DELIVERY_MAN (
|
---|
100 | user_id INT PRIMARY KEY,
|
---|
101 | CONSTRAINT fk_deliveryman_user FOREIGN KEY (user_id) REFERENCES APP_USER(user_id)
|
---|
102 | );
|
---|
103 |
|
---|
104 | CREATE TABLE RESTAURANT_OWNER (
|
---|
105 | user_id INT PRIMARY KEY,
|
---|
106 | CONSTRAINT fk_restowner_user FOREIGN KEY (user_id) REFERENCES APP_USER(user_id)
|
---|
107 | );
|
---|
108 |
|
---|
109 | CREATE TABLE USER_ADDRESSES (
|
---|
110 | address_id INT,
|
---|
111 | user_id INT,
|
---|
112 | PRIMARY KEY (address_id, user_id),
|
---|
113 | CONSTRAINT fk_useraddr_address FOREIGN KEY (address_id) REFERENCES ADDRESS(address_id),
|
---|
114 | CONSTRAINT fk_useraddr_user FOREIGN KEY (user_id) REFERENCES APP_USER(user_id)
|
---|
115 | );
|
---|
116 |
|
---|
117 | CREATE TABLE RESTAURANT_OWNERS (
|
---|
118 | user_id INT,
|
---|
119 | restaurant_id INT,
|
---|
120 | PRIMARY KEY (user_id, restaurant_id),
|
---|
121 | CONSTRAINT fk_restowners_user FOREIGN KEY (user_id) REFERENCES RESTAURANT_OWNER(user_id),
|
---|
122 | CONSTRAINT fk_restowners_rest FOREIGN KEY (restaurant_id) REFERENCES RESTAURANT(restaurant_id)
|
---|
123 | );
|
---|
124 |
|
---|
125 | CREATE TABLE ORDERS (
|
---|
126 | order_id SERIAL PRIMARY KEY,
|
---|
127 | address_id INT,
|
---|
128 | restaurant_id INT,
|
---|
129 | deliveryman_id INT,
|
---|
130 | user_id INT,
|
---|
131 | order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
---|
132 | comment TEXT,
|
---|
133 | order_status VARCHAR(50),
|
---|
134 | total_amount DECIMAL(10,2),
|
---|
135 | CONSTRAINT fk_orders_address FOREIGN KEY (address_id) REFERENCES ADDRESS(address_id),
|
---|
136 | CONSTRAINT fk_orders_rest FOREIGN KEY (restaurant_id) REFERENCES RESTAURANT(restaurant_id),
|
---|
137 | CONSTRAINT fk_orders_delivery FOREIGN KEY (deliveryman_id) REFERENCES DELIVERY_MAN(user_id),
|
---|
138 | CONSTRAINT fk_orders_user FOREIGN KEY (user_id) REFERENCES CUSTOMER(user_id)
|
---|
139 | );
|
---|
140 |
|
---|
141 | CREATE TABLE ORDER_ITEMS (
|
---|
142 | order_id INT,
|
---|
143 | item_id INT,
|
---|
144 | quantity INT NOT NULL,
|
---|
145 | total_price DECIMAL(10,2),
|
---|
146 | PRIMARY KEY (order_id, item_id),
|
---|
147 | CONSTRAINT fk_orderitems_order FOREIGN KEY (order_id) REFERENCES ORDERS(order_id),
|
---|
148 | CONSTRAINT fk_orderitems_item FOREIGN KEY (item_id) REFERENCES ITEM(item_id)
|
---|
149 | );
|
---|
150 |
|
---|
151 | CREATE TABLE ITEM_CATEGORY (
|
---|
152 | category_id INT,
|
---|
153 | item_id INT,
|
---|
154 | PRIMARY KEY (category_id, item_id),
|
---|
155 | CONSTRAINT fk_itemcat_category FOREIGN KEY (category_id) REFERENCES CATEGORY(category_id),
|
---|
156 | CONSTRAINT fk_itemcat_item FOREIGN KEY (item_id) REFERENCES ITEM(item_id)
|
---|
157 | );
|
---|
158 |
|
---|
159 | CREATE TABLE RESTAURANT_CATEGORY (
|
---|
160 | category_id INT,
|
---|
161 | restaurant_id INT,
|
---|
162 | PRIMARY KEY (category_id, restaurant_id),
|
---|
163 | CONSTRAINT fk_restcat_category FOREIGN KEY (category_id) REFERENCES CATEGORY(category_id),
|
---|
164 | CONSTRAINT fk_restcat_rest FOREIGN KEY (restaurant_id) REFERENCES RESTAURANT(restaurant_id)
|
---|
165 | );
|
---|
166 |
|
---|
167 | CREATE TABLE MENU (
|
---|
168 | menu_id SERIAL PRIMARY KEY,
|
---|
169 | restaurant_id INT,
|
---|
170 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
---|
171 | updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
---|
172 | name VARCHAR(150),
|
---|
173 | CONSTRAINT fk_menu_rest FOREIGN KEY (restaurant_id) REFERENCES RESTAURANT(restaurant_id)
|
---|
174 | );
|
---|
175 |
|
---|
176 | CREATE TABLE EARNINGS (
|
---|
177 | earning_id SERIAL PRIMARY KEY,
|
---|
178 | restaurant_id INT,
|
---|
179 | date DATE,
|
---|
180 | amount DECIMAL(10,2),
|
---|
181 | source VARCHAR(100),
|
---|
182 | CONSTRAINT fk_earnings_rest FOREIGN KEY (restaurant_id) REFERENCES RESTAURANT(restaurant_id)
|
---|
183 | );
|
---|
184 |
|
---|
185 | CREATE TABLE COSTS (
|
---|
186 | cost_id SERIAL PRIMARY KEY,
|
---|
187 | restaurant_id INT,
|
---|
188 | date DATE,
|
---|
189 | amount DECIMAL(10,2),
|
---|
190 | type VARCHAR(100),
|
---|
191 | CONSTRAINT fk_costs_rest FOREIGN KEY (restaurant_id) REFERENCES RESTAURANT(restaurant_id)
|
---|
192 | );
|
---|
193 |
|
---|
194 | CREATE TABLE ITEM_INGREDIENT (
|
---|
195 | item_id INT,
|
---|
196 | ingredient_id INT,
|
---|
197 | quantity VARCHAR(50),
|
---|
198 | PRIMARY KEY (item_id, ingredient_id),
|
---|
199 | CONSTRAINT fk_iteming_item FOREIGN KEY (item_id) REFERENCES ITEM(item_id),
|
---|
200 | CONSTRAINT fk_iteming_ing FOREIGN KEY (ingredient_id) REFERENCES INGREDIENT(ingredient_id)
|
---|
201 | );
|
---|
202 |
|
---|
203 | CREATE TABLE DELIVERY_ASSIGNMENT (
|
---|
204 | deliveryfirm_id INT,
|
---|
205 | user_id INT,
|
---|
206 | PRIMARY KEY (deliveryfirm_id, user_id),
|
---|
207 | CONSTRAINT fk_deliveryassign_firm FOREIGN KEY (deliveryfirm_id) REFERENCES DELIVERY_FIRM(deliveryfirm_id),
|
---|
208 | CONSTRAINT fk_deliveryassign_user FOREIGN KEY (user_id) REFERENCES DELIVERY_MAN(user_id)
|
---|
209 | );
|
---|
210 |
|
---|
211 | CREATE TABLE MENU_ITEM (
|
---|
212 | menu_id INT,
|
---|
213 | item_id INT,
|
---|
214 | PRIMARY KEY (menu_id, item_id),
|
---|
215 | CONSTRAINT fk_menuitem_menu FOREIGN KEY (menu_id) REFERENCES MENU(menu_id),
|
---|
216 | CONSTRAINT fk_menuitem_item FOREIGN KEY (item_id) REFERENCES ITEM(item_id)
|
---|
217 | );
|
---|
218 |
|
---|
219 | CREATE TABLE SHOPPING_CART (
|
---|
220 | cart_id SERIAL PRIMARY KEY,
|
---|
221 | user_id INT NOT NULL,
|
---|
222 | CONSTRAINT fk_cart_user FOREIGN KEY (user_id) REFERENCES APP_USER(user_id)
|
---|
223 | );
|
---|
224 |
|
---|
225 | CREATE TABLE CART_ITEMS (
|
---|
226 | cart_id INT NOT NULL,
|
---|
227 | item_id INT NOT NULL,
|
---|
228 | quantity INT NOT NULL,
|
---|
229 | PRIMARY KEY (cart_id, item_id),
|
---|
230 | CONSTRAINT fk_cartitems_cart FOREIGN KEY (cart_id) REFERENCES SHOPPING_CART(cart_id),
|
---|
231 | CONSTRAINT fk_cartitems_item FOREIGN KEY (item_id) REFERENCES ITEM(item_id)
|
---|
232 | ); |
---|