Курсовой проект по дисциплине «Базы данных»



бет4/5
Дата09.05.2024
өлшемі254.5 Kb.
#500792
түріКурсовой проект
1   2   3   4   5
Bazy dannykh

Имя атрибута

Сущность владелец атрибута

Определение атрибута

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- Алгоритм формирования отчета о поездке, по личным данным пассажира.

4 РЕАЛИЗАЦИЯ


Для использования базы данных в целях автоматизации, необходимо выполнять вспомогательные функции, такие как:
- создание базы данных и таблиц;
- внесение данных о продуктах;
- внесение данных о поставках;
- внесение данных о поставщиках;
- внесение данных о блюдах;
- внесение данных о складе;
- внесение данных о расходе.
Рассмотрим каждую вспомогательную функцию в отдельности.
Создание базы данных. Эта функция выполняется один раз, во время создания базы данных. 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 – Результат запроса



Достарыңызбен бөлісу:
1   2   3   4   5




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет