complete Restaurant Database Management System implementation
This commit is contained in:
+49
-9
@@ -8,7 +8,10 @@
|
||||
-- 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 CASCADE;
|
||||
DROP TABLE IF EXISTS orders CASCADE;
|
||||
DROP TABLE IF EXISTS menu_items CASCADE;
|
||||
DROP TABLE IF EXISTS users CASCADE;
|
||||
|
||||
-- =======================================================
|
||||
-- USER TABLE
|
||||
@@ -30,6 +33,12 @@
|
||||
--
|
||||
-- CREATE TABLE ...
|
||||
|
||||
CREATE TABLE users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(100)
|
||||
);
|
||||
|
||||
|
||||
-- =======================================================
|
||||
@@ -52,7 +61,13 @@
|
||||
--
|
||||
-- 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
|
||||
@@ -77,7 +92,13 @@
|
||||
--
|
||||
-- CREATE TABLE ...
|
||||
|
||||
|
||||
CREATE TABLE orders (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
total_amount DECIMAL(10, 2) NOT NULL DEFAULT 0.00 CHECK (total_amount >= 0),
|
||||
CONSTRAINT fk_order_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- =======================================================
|
||||
-- ORDER DETAIL TABLE
|
||||
@@ -100,7 +121,15 @@
|
||||
--
|
||||
-- CREATE TABLE ...
|
||||
|
||||
|
||||
CREATE TABLE order_details (
|
||||
id SERIAL PRIMARY KEY,
|
||||
order_id INT NOT NULL,
|
||||
menu_item_id INT NOT NULL,
|
||||
quantity INT NOT NULL CHECK (quantity > 0),
|
||||
price_at_purchase DECIMAL(10, 2) NOT NULL CHECK (price_at_purchase > 0),
|
||||
CONSTRAINT fk_detail_order FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_detail_menu FOREIGN KEY (menu_item_id) REFERENCES menu_items(id) ON DELETE RESTRICT
|
||||
);
|
||||
|
||||
-- =======================================================
|
||||
-- INITIAL MENU DATA
|
||||
@@ -116,7 +145,11 @@
|
||||
--
|
||||
-- INSERT INTO ...
|
||||
|
||||
|
||||
INSERT INTO menu_items (name, description, price, category) VALUES
|
||||
('Pizza', 'Delicious cheese and pepperoni pizza', 10.00, 'Pizza'),
|
||||
('Burger', 'Juicy grilled beef burger with fries', 8.00, 'Burger'),
|
||||
('Pasta', 'Creamy Alfredo pasta with chicken', 12.00, 'Pasta'),
|
||||
('Coca Cola', 'Chilled soft drink', 2.50, 'Drink');
|
||||
|
||||
-- =======================================================
|
||||
-- OPTIONAL TEST DATA
|
||||
@@ -127,7 +160,14 @@
|
||||
--
|
||||
-- INSERT INTO ...
|
||||
|
||||
INSERT INTO users (username, password, email) VALUES
|
||||
('fatemeh_demo', '$2a$10$EixZaYVK1upmZ7zpKgH97O5F', 'fatemeh@example.com');
|
||||
|
||||
INSERT INTO orders (user_id, total_amount) VALUES
|
||||
(1, 20.00);
|
||||
|
||||
INSERT INTO order_details (order_id, menu_item_id, quantity, price_at_purchase) VALUES
|
||||
(1, 1, 2, 10.00);
|
||||
|
||||
-- =======================================================
|
||||
-- VERIFICATION QUERIES
|
||||
@@ -135,7 +175,7 @@
|
||||
--
|
||||
-- Uncomment these queries to verify your database.
|
||||
--
|
||||
-- SELECT * FROM ...;
|
||||
-- SELECT * FROM ...;
|
||||
-- SELECT * FROM ...;
|
||||
-- SELECT * FROM ...;
|
||||
SELECT * FROM users;
|
||||
SELECT * FROM menu_items;
|
||||
SELECT * FROM orders;
|
||||
SELECT * FROM orders;
|
||||
Reference in New Issue
Block a user