This commit is contained in:
2026-06-22 20:27:29 +03:30
parent 00f990c653
commit 19c11f39fb
15 changed files with 558 additions and 91 deletions
+47 -15
View File
@@ -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
-- =======================================================