Имя атрибута
|
Сущность владелец атрибута
|
Определение атрибута
|
ID_поставщика
|
ПОСТАВЩИК
|
Уникальный идентификатор поставщика.
|
Название
|
ПОСТАВЩИК
|
Название организации или имя физического лица-поставщика.
|
Контактная_информация
|
ПОСТАВЩИК
|
Информация о контактах поставщика, такая как телефонный номер или адрес электронной почты.
|
ID_продукта
|
ПРОДУКТ
|
Уникальный идентификатор продукта.
|
Название
|
ПРОДУКТ
|
Название конкретного продукта.
|
Единица_измерения
|
ПРОДУКТ
|
Единица измерения продукта, например, килограммы, литры, штуки и т. д.
|
ID_поставки
|
ПОСТАВКА
|
Уникальный идентификатор поставки.
|
ID_поставщика
|
ПОСТАВКА
|
Уникальный идентификатор поставщика, связанного с этой поставкой.
|
Сумма
|
ПОСТАВКА
|
Сумма поставки продукции.
|
Дата
|
ПОСТАВКА
|
Дата поставки продукции.
|
ID_продукта
|
ПОСТАВКА
|
Уникальный номер поставленного продукта
|
Количество
|
ВЫХОД БЛЮДА
|
Количество приготовленных порций.
|
ID_блюда
|
ВЫХОД БЛЮДА
|
Уникальный идентификатор приготовленного блюда
|
Дата
|
ВЫХОД БЛЮДА
|
Дата приготовления блюда
|
ID_блюда
|
БЛЮДО
|
Уникальный идентификатор блюда.
|
Название
|
БЛЮДО
|
Название блюда.
|
ID_расхода
|
РАСХОД
|
Уникальный идентификатор расхода.
|
ID_продукта
|
РАСХОД
|
Уникальный идентификатор продукта, связанный с данным расходом.
|
ID_блюда
|
РАСХОД
|
Уникальный идентификатор блюда, связанный с данным расходом.
|
Количество
|
РАСХОД
|
Количество продукции, использованное в данном расходе.
|
3 АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ
Согласно постановке задачи, отчет о закупке продукции на кухне ресторана должен состоять из данных о поставке, дате поставки, продукте и стоимости. SQL-запрос о закупке продуктов на заданные даты:
SELECT Поставка.ID_поставки, Поставка.Дата, Продукт.Название, Поставка.Сумма
FROM Поставка
INNER JOIN Продукт ON Поставка.ID_продукта = Продукт.ID_продукта
WHERE Поставка.Дата BETWEEN '2022-01-25' AND '2022-01-31';
Формирование отчета о состоянии остатков продуктов на складе, согласно постановки задачи должен состоять из данных о продуктах, их количестве. SQL-запрос об остатках продукта на складе:
SELECT Продукт.ID_продукта, Продукт.Название, Склад.Количество - COALESCE(SUM(Расход.Количество), 0) AS Остаток
FROM Продукт
LEFT JOIN Склад ON Продукт.ID_продукта = Склад.ID_продукта
LEFT JOIN Расход ON Продукт.ID_продукта = Расход.ID_продукта
GROUP BY Продукт.ID_продукта, Продукт.Название, Склад.Количество;
Алгоритм формирования отчета о закупке продукции на заданную дату представлен в виде диаграммы UML на рисунке 3.1
Рисунок 3.1- Алгоритм формирования отчета о закупке продукции на заданную дату
Алгоритм формирования отчета о состоянии остатков продуктов на складе представлен в виде диаграммы UML на рисунке 3.2
Рисунок 3.2- Алгоритм формирования отчета о поездке, по личным данным пассажира.
Для использования базы данных в целях автоматизации, необходимо выполнять вспомогательные функции, такие как:
- создание базы данных и таблиц;
- внесение данных о продуктах;
- внесение данных о поставках;
- внесение данных о поставщиках;
- внесение данных о блюдах;
- внесение данных о складе;
- внесение данных о расходе.
Рассмотрим каждую вспомогательную функцию в отдельности.
Создание базы данных. Эта функция выполняется один раз, во время создания базы данных. SQL запрос может выглядеть так:
CREATE DATABASE KitchenDB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE KitchenDB;
Создание таблиц:
CREATE TABLE Поставщик (
ID_поставщика INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Название VARCHAR(255) NOT NULL,
Контактная_информация VARCHAR(255)
);
CREATE TABLE Продукт (
ID_продукта INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Название VARCHAR(255) NOT NULL,
Единица_измерения VARCHAR(50) NOT NULL
);
CREATE TABLE Поставка (
ID_поставки INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Дата DATE NOT NULL,
Сумма DECIMAL(10, 2) NOT NULL,
ID_поставщика INT NOT NULL,
ID_продукта INT NOT NULL,
FOREIGN KEY (ID_поставщика) REFERENCES Поставщик(ID_поставщика),
FOREIGN KEY (ID_продукта) REFERENCES Продукт(ID_продукта)
);
CREATE TABLE Блюдо (
ID_блюда INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Название VARCHAR(255) NOT NULL
);
CREATE TABLE Склад (
ID_продукта INT NOT NULL,
Количество INT NOT NULL,
PRIMARY KEY (ID_продукта),
FOREIGN KEY (ID_продукта) REFERENCES Продукт(ID_продукта)
);
CREATE TABLE Расход (
ID_расхода INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
ID_продукта INT NOT NULL,
ID_блюда INT NOT NULL,
Количество INT NOT NULL,
FOREIGN KEY (ID_продукта) REFERENCES Продукт(ID_продукта),
FOREIGN KEY (ID_блюда) REFERENCES Блюдо(ID_блюда)
);
Внесение данных о поставщиках. SQL запрос может выглядеть так:
INSERT INTO Поставщик (Название, Контактная_информация)
VALUES ('ООО Продуктовый мир', 'телефон: +7-123-456-78-90, email: info@prodmir.ru'),
('ИП Грибоедов А.А.', 'телефон: +7-098-765-43-21, email: grisha_griboedov@example.com');
Внесение данных о продуктах. SQL запрос может выглядеть так:
INSERT INTO Продукт (Название, Единица_измерения)
VALUES ('Молоко', 'литр'),
('Яйца', 'штука'),
('Мука', 'кг');
Внесение данных о поставках. SQL запрос может выглядеть так:
INSERT INTO Поставка (Дата, Сумма, ID_поставщика, ID_продукта)
VALUES ('2022-01-25', 1500.00, 1, 1),
('2022-01-27', 2500.00, 1, 2),
('2022-01-30', 1800.00, 1, 3);
Внесение данных о блюде. SQL запрос может выглядеть так:
INSERT INTO Блюдо (Название)
VALUES ('Омлет'),
('Панкейки'),
('Пирог с мясом');
Внесение данных в таблицу склад. SQL запрос может выглядеть так:
INSERT INTO Склад (ID_продукта, Количество)
VALUES (1, 100),
(2, 50),
(3, 80);
Внесение данных в таблицу расход. SQL запрос может выглядеть так:
INSERT INTO Расход (ID_продукта, ID_блюда, Количество)
VALUES (2, 1, 5),
(3, 2, 2),
(1, 3, 3);
Пример запроса:
SELECT Поставка.ID_поставки, Поставка.Дата, Продукт.Название, Поставка.Сумма
FROM Поставка
INNER JOIN Продукт ON Поставка.ID_продукта = Продукт.ID_продукта
WHERE Поставка.Дата BETWEEN '2022-01-25' AND '2022-01-31';
Результат запроса представлен на рисунке 5.1
Рисунок 5.1 – Результат запроса
Пример запроса и результат:
SELECT Продукт.ID_продукта, Продукт.Название, Склад.Количество - COALESCE(SUM(Расход.Количество), 0) AS Остаток
FROM Продукт
LEFT JOIN Склад ON Продукт.ID_продукта = Склад.ID_продукта
LEFT JOIN Расход ON Продукт.ID_продукта = Расход.ID_продукта
GROUP BY Продукт.ID_продукта, Продукт.Название, Склад.Количество;
Результат запроса представлен на рисунке 5.2
Рисунок 5.2 – Результат запроса
Достарыңызбен бөлісу: |