Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТБД_курсовая.docx
Скачиваний:
104
Добавлен:
28.06.2021
Размер:
916.66 Кб
Скачать

Глава 3. Программная реализация бд для курьерской службы “Московская доставка”

В данной главе проведем анализ и выбор СУБД для реализации базы данных курьерской службы “Московская доставка”. Она содержит 9 таблиц, которые будут спроектированы в разделе Физическое проектирование БД. Также будут показаны скриншоты готовых таблиц. В конце главы будут приведены 3 триггера для данной базы.

3.1 Анализ и выбор субд

Основываясь на данных, полученных в пункте 1.2 данной работы, можно сделать вывод, что для реализации данной базы данных, необходимо использовать профессиональную СУБД, так как объект автоматизации является средним бизнесом. Таким образом, итоговый выбор был сделан в пользу Oracle Database, так как она предоставляет широкие возможности и может быть использована бизнесами от малых до больших. Некоторые особенности Oracle Database:

  • Позволяет работать с удаленной базой данных, что дает возможность осуществлять доступ к одной базе с разных компьютеров в учебном заведении;

  • Поддерживает одновременную работу сразу нескольких пользователей с базой данных;

  • Предоставляет высокий уровень защиты данных;

  • Обладает невысокими требованиями к аппаратной части серверов;

  • Позволяет создавать БД любых масштабов

3.2 Физическое проектирование бд “Московская доставка”

На основе реляционной модели произведена программная реализация. База данных содержит 9 таблиц:

  • Товары

  • Клиенты

  • Склады

  • Курьеры

  • Точки самовывоза

  • Менеджеры

  • Заказы

  • Количество по позиции

  • Промежуточная таблица “товары к сладам”, реализующая связь многие ко многим между данными таблицами

Р исунок 10 – Таблица клиентов

Рисунок 11 – Таблица курьеров

Рисунок 12 – Таблица менеджеров

Рисунок 13 – Таблица товаров

Рисунок 14– Таблица точек самовывоза

Рисунок 15 – Таблица складов

Р исунок 16 – Таблица товары к складам

Рисунок 17 – Таблица заказов

Рисунок 18 – Таблица количества по позиции

3.3 Реализация ограничений

С базой могут работать курьеры, менеджеры и клиенты.

Курьеры и менеджеры могут просматривать заказы, распределенные на них. Клиенты могут оформлять заказы и видеть информацию о них.

Для того, чтобы удалять товары, если они не хранятся ни на одном из складов, создадим триггер:

CREATE OR REPLACE TRIGGER noProduct

BEFORE DELETE

ON Warehouses

FOR EACH ROW

DECLARE

CURSOR productOnDelete IS

SELECT Products.Product_ID FROM Products

MINUS (SELECT Product_to_warehouse.Product_ID FROM Product_to_warehouse GROUP BY Product_to_warehouse.Product_ID);

BEGIN

DELETE FROM Product_to_warehouse WHERE Warehouse_ID = :old.Warehouse_ID;

FOR prod IN productOnDelete

LOOP

DELETE FROM Products WHERE Product_ID = prod.Product_ID;

END LOOP;

END;

/

Для того, чтобы назначать заказам менеджера, создадим триггер:

CREATE OR REPLACE TRIGGER giveManager

BEFORE INSERT

ON Orders

FOR EACH ROW

DECLARE

managerID int(5) := 10000 ;

managerOrders int(5) := 10000 ;

CURSOR managerChoose IS

SELECT Manager_ID, COUNT(*) AS MOrders FROM Orders GROUP BY Manager_ID;

BEGIN

FOR man IN managerChoose

LOOP

IF man.MOrders < managerOrders THEN

BEGIN

managerID := man.Manager_ID;

managerOrders := man.MOrders;

END;

END IF;

END LOOP;

:new.Manager_ID := managerID;

END;

/

Для того, чтобы назначать заказам курьера, создадим триггер:

CREATE OR REPLACE TRIGGER giveCourier

BEFORE INSERT

ON Orders

FOR EACH ROW

DECLARE

courierID int(5) := 10000 ;

courierOrders int(5) := 10000 ;

CURSOR courierChoose IS

SELECT Courier_ID, COUNT(*) AS MOrders FROM Orders GROUP BY Courier_ID;

BEGIN

FOR cur IN courierChoose

LOOP

IF cur.MOrders < courierOrders THEN

BEGIN

courierID := cur.Courier_ID;

courierOrders := cur.MOrders;

END;

END IF;

END LOOP;

:new.Courier_ID := courierID;

END;

/

Соседние файлы в предмете Базы данных