81 lines
3.1 KiB
SQL
81 lines
3.1 KiB
SQL
-- =======================================================
|
|
-- USER TABLE
|
|
-- =======================================================
|
|
CREATE TABLE users(
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
password_hash TEXT NOT NULL,
|
|
email VARCHAR(255) UNIQUE
|
|
);
|
|
|
|
|
|
-- =======================================================
|
|
-- MENU ITEM TABLE
|
|
-- =======================================================
|
|
CREATE TABLE menu(
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(250) NOT NULL,
|
|
description TEXT,
|
|
price NUMERIC NOT NULL CHECK (price > 0),
|
|
category VARCHAR(50)
|
|
);
|
|
|
|
|
|
-- =======================================================
|
|
-- ORDER TABLE
|
|
-- =======================================================
|
|
CREATE TABLE orders(
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
created_at TIMESTAMP NOT NULL ,
|
|
total_price NUMERIC NOT NULL,
|
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
);
|
|
|
|
|
|
-- =======================================================
|
|
-- ORDER DETAIL TABLE
|
|
-- =======================================================
|
|
CREATE TABLE order_details(
|
|
id SERIAL PRIMARY KEY ,
|
|
order_id INT NOT NULL ,
|
|
menu_id INT NOT NULL ,
|
|
quantity NUMERIC NOT NULL CHECK (quantity > 0),
|
|
item_price NUMERIC NOT NULL,
|
|
|
|
FOREIGN KEY (order_id) REFERENCES orders(id),
|
|
FOREIGN KEY (menu_id) REFERENCES menu(id)
|
|
);
|
|
|
|
|
|
-- =======================================================
|
|
-- INITIAL MENU DATA
|
|
-- =======================================================
|
|
-- id is left out because it has SERIAl type and auto-generates.
|
|
INSERT INTO menu (name, description, price, category) VALUES
|
|
('Margherita Pizza', 'Classic tomato, mozzarella, and basil', 9.99, 'Pizza'),
|
|
('Grilled Chicken Wrap', 'Chicken, lettuce, tomato, garlic sauce', 7.49, 'Wraps'),
|
|
('Caesar Salad', 'Romaine, parmesan, croutons, caesar dressing', 6.99, 'Salads'),
|
|
('Beef Burger', 'Beef patty, cheddar, lettuce, brioche bun', 8.99, 'Burgers'),
|
|
('Spaghetti Carbonara', 'Pasta, egg, pancetta, parmesan', 10.49, 'Pasta'),
|
|
('Veggie Spring Rolls', 'Crispy rolls with mixed vegetables', 5.49, 'Appetizers'),
|
|
('Chocolate Lava Cake', 'Warm cake with molten chocolate center', 4.99, 'Dessert'),
|
|
('Iced Latte', 'Espresso with cold milk over ice', 3.49, 'Beverages'),
|
|
('Mushroom Risotto', 'Creamy arborio rice with wild mushrooms', 9.49, 'Pasta'),
|
|
('Fish Tacos', 'Grilled fish, cabbage slaw, chipotle mayo', 8.49, 'Tacos');
|
|
|
|
|
|
-- =======================================================
|
|
-- OPTIONAL TEST DATA
|
|
-- =======================================================
|
|
|
|
|
|
|
|
-- =======================================================
|
|
-- VERIFICATION QUERIES
|
|
-- =======================================================
|
|
-- SELECT * FROM users;
|
|
-- SELECT * FROM menu;
|
|
-- SELECT * FROM orders;
|
|
-- SELECT * FROM order_details; |