false
This commit is contained in:
+47
-15
@@ -7,9 +7,10 @@
|
||||
-- 4. Insert initial mock data.
|
||||
-- 5. Insert at least 3 menu items.
|
||||
-- 6. The script should be executable from start to finish without errors.
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS order_details;
|
||||
DROP TABLE IF EXISTS orders;
|
||||
DROP TABLE IF EXISTS menu_items;
|
||||
DROP TABLE IF EXISTS users;
|
||||
-- =======================================================
|
||||
-- USER TABLE
|
||||
-- =======================================================
|
||||
@@ -29,9 +30,12 @@
|
||||
-- - Passwords should not be stored in plain text.
|
||||
--
|
||||
-- CREATE TABLE ...
|
||||
|
||||
|
||||
|
||||
CREATE TABLE users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
username VARCHAR(50) UNIQUE NOT NULL,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(100)
|
||||
);
|
||||
-- =======================================================
|
||||
-- MENU ITEM TABLE
|
||||
-- =======================================================
|
||||
@@ -51,9 +55,13 @@
|
||||
-- - Price must always be positive.
|
||||
--
|
||||
-- CREATE TABLE ...
|
||||
|
||||
|
||||
|
||||
CREATE TABLE menu_items (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
price DECIMAL(10, 2) NOT NULL CHECK (price > 0),
|
||||
category VARCHAR(50)
|
||||
);
|
||||
-- =======================================================
|
||||
-- ORDER TABLE
|
||||
-- =======================================================
|
||||
@@ -76,9 +84,17 @@
|
||||
-- Consider using a name such as "orders" or "customer_orders".
|
||||
--
|
||||
-- CREATE TABLE ...
|
||||
CREATE TABLE orders (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
total_price DECIMAL(10, 2) NOT NULL,
|
||||
|
||||
|
||||
|
||||
CONSTRAINT fk_user
|
||||
FOREIGN KEY (user_id)
|
||||
REFERENCES users(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
-- =======================================================
|
||||
-- ORDER DETAIL TABLE
|
||||
-- =======================================================
|
||||
@@ -99,9 +115,22 @@
|
||||
-- - Store the item's price at the moment of purchase.
|
||||
--
|
||||
-- CREATE TABLE ...
|
||||
CREATE TABLE order_details (
|
||||
id SERIAL PRIMARY KEY,
|
||||
order_id INTEGER NOT NULL,
|
||||
menu_item_id INTEGER NOT NULL,
|
||||
quantity INTEGER NOT NULL CHECK (quantity > 0),
|
||||
unit_price DECIMAL(10, 2) NOT NULL,
|
||||
|
||||
CONSTRAINT fk_order
|
||||
FOREIGN KEY (order_id)
|
||||
REFERENCES orders(id)
|
||||
ON DELETE CASCADE,
|
||||
|
||||
|
||||
CONSTRAINT fk_menu_item
|
||||
FOREIGN KEY (menu_item_id)
|
||||
REFERENCES menu_items(id)
|
||||
);
|
||||
-- =======================================================
|
||||
-- INITIAL MENU DATA
|
||||
-- =======================================================
|
||||
@@ -115,9 +144,12 @@
|
||||
-- - Drink
|
||||
--
|
||||
-- INSERT INTO ...
|
||||
|
||||
|
||||
|
||||
INSERT INTO menu_items(name, description, price, category) VALUES ('Margherita Pizza', 'Classic pizza with tomato and mozzarella', 12.99, 'Pizza'),
|
||||
('Pepperoni Pizza', 'Pizza with pepperoni and cheese', 14.99, 'Pizza'),
|
||||
('Cheeseburger', 'Beef burger with cheddar cheese', 10.99, 'Burger'),
|
||||
('Spaghetti Carbonara', 'Pasta with eggs, cheese, and pancetta', 13.99, 'Pasta'),
|
||||
('Coca-Cola', 'Classic carbonated soft drink', 3.99, 'Drink'),
|
||||
('Sparkling Water', 'Natural sparkling mineral water', 2.99, 'Drink');
|
||||
-- =======================================================
|
||||
-- OPTIONAL TEST DATA
|
||||
-- =======================================================
|
||||
|
||||
Reference in New Issue
Block a user