Files
WS-10-Database/database.sql
T

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;