| 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 | ); |
|---|