-- Client
CREATE TABLE client (
client_id SERIAL PRIMARY KEY,
full_name CHAR(60),
contact_info CHAR(100),
order_history CHAR(200)
);
-- Order
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
order_date DATE,
client_id INT REFERENCES client(client_id),
order_status CHAR(15),
order_total NUMERIC(10,2)
);
-- Product unit
CREATE TABLE product_unit (
unit_id SERIAL PRIMARY KEY,
name CHAR(10),
coefficient NUMERIC(10,4)
);
-- Order content
CREATE TABLE order_content (
order_id INT REFERENCES orders(order_id),
product_id INT REFERENCES product_calculation(product_id),
quantity NUMERIC(10,2),
unit_id INT REFERENCES product_unit(unit_id),
PRIMARY KEY (order_id, product_id)
);
-- Employee
CREATE TABLE employee (
employee_id SERIAL PRIMARY KEY,
full_name CHAR(60),
position CHAR(30),
contact_info CHAR(100)
);
-- Finished goods warehouse
CREATE TABLE finished_goods_warehouse (
employee_id INT REFERENCES employee(employee_id),
order_id INT REFERENCES orders(order_id),
quantity_on_stock NUMERIC(10,2),
PRIMARY KEY (employee_id, order_id)
);
-- Supplier
CREATE TABLE supplier (
supplier_id SERIAL PRIMARY KEY,
organization_name CHAR(60),
ingredient_type CHAR(20),
contact_info CHAR(100)
);
-- Ingredient stock
CREATE TABLE ingredient_stock (
ingredient_id SERIAL PRIMARY KEY,
quantity_on_stock NUMERIC(10,2),
supplier_id INT REFERENCES supplier(supplier_id)
);
-- Ingredient unit
CREATE TABLE ingredient_unit (
unit_id SERIAL PRIMARY KEY,
name CHAR(10),
coefficient NUMERIC(10,4)
);
-- Recipe
CREATE TABLE recipe (
recipe_id SERIAL PRIMARY KEY,
ingredient_id INT REFERENCES ingredient_stock(ingredient_id),
ingredient_quantity NUMERIC(10,2),
unit_id INT REFERENCES ingredient_unit(unit_id)
);
-- Product calculation card
CREATE TABLE product_calculation (
product_id SERIAL PRIMARY KEY,
product_name CHAR(60),
recipe_id INT REFERENCES recipe(recipe_id),
performer CHAR(60),
cost_price NUMERIC(10,2)
);
-- Insert data
-- client (4 клиента)
INSERT INTO client (full_name, contact_info, order_history) VALUES
('Петров Алексей Юрьевич', '533123456', 'Регулярные заказы по выходным'),
('Иванова Мария Сергеевна', '533234567', 'Любит багеты и круассаны'),
('Кузнецов Игорь Владимирович', '533345678', 'Покупает по утрам'),
('Смирнова Ольга Николаевна', '533456789', 'Заказывает на праздники');
-- orders (4 заказа)
INSERT INTO orders (order_date, client_id, order_status, order_total) VALUES
('2025-06-01', 1, 'оформлен', 750.00),
('2025-06-02', 2, 'доставлен', 540.00),
('2025-06-03', 3, 'оплачен', 620.00),
('2025-06-04', 4, 'готовится', 400.00);
-- product_unit (ед. изм., 4 единицы)
INSERT INTO product_unit (name, coefficient) VALUES
('шт', 1.0000),
('упак', 5.0000),
('кг', 1.0000),
('порц', 0.5000);
-- employee (4 сотрудника)
INSERT INTO employee (full_name, position, contact_info) VALUES
('Сидоров Николай Павлович', 'пекарь', '533567890'),
('Лебедева Анна Михайловна', 'менеджер', '533678901'),
('Волков Дмитрий Олегович', 'кладовщик', '533789012'),
('Новикова Ирина Евгеньевна', 'кассир', '533890123');
-- finished_goods_warehouse (4 записи склада)
INSERT INTO finished_goods_warehouse (employee_id, order_id, quantity_on_stock) VALUES
(2, 1, 20.00),
(2, 2, 15.00),
(3, 3, 12.00),
(3, 4, 8.00);
-- supplier (4 поставщика)
INSERT INTO supplier (organization_name, ingredient_type, contact_info) VALUES
('Мельница Юг', 'мука', '533901234'),
('Молочный Мир', 'молочные', '533012345'),
('Ферма Зеленая', 'яйца', '533123789'),
('Сахар-Трейд', 'сахар', '533234890');
-- ingredient_stock (4 ингредиента)
INSERT INTO ingredient_stock (quantity_on_stock, supplier_id) VALUES
(100.00, 1), -- мука
(50.00, 2), -- молоко
(200.00, 3), -- яйца
(80.00, 4); -- сахар
-- ingredient_unit (4 ед. изм. для ингредиентов)
INSERT INTO ingredient_unit (name, coefficient) VALUES
('кг', 1.0000),
('л', 1.0000),
('шт', 1.0000),
('г', 0.0010);
-- recipe (4 рецепта — по одному ингредиенту каждый)
INSERT INTO recipe (ingredient_id, ingredient_quantity, unit_id) VALUES
(1, 2.5, 1), -- 2.5 кг муки
(2, 1.0, 2), -- 1 л молока
(3, 3.0, 3), -- 3 яйца
(4, 200.0, 4); -- 200 г сахара
-- product_calculation (4 товара)
INSERT INTO product_calculation (product_name, recipe_id, performer, cost_price) VALUES
('Хлеб пшеничный', 1, 'Сидоров Н.П.', 35.50),
('Булочка молочная', 2, 'Сидоров Н.П.', 27.80),
('Круассан', 3, 'Сидоров Н.П.', 42.00),
('Пирожок с сахаром', 4, 'Сидоров Н.П.', 22.50);
-- order_content (4 строки, по 1 товару в каждом заказе)
INSERT INTO order_content (order_id, product_id, quantity, unit_id) VALUES
(1, 1, 10.00, 1),
(2, 2, 5.00, 1),
(3, 3, 6.00, 1),
(4, 4, 8.00, 1);