- •Глава 1. Анализ предметной области асу “Московская доставка” 6
- •Глава 2. Проектирование базы данных для объекта автоматизации курьерской доставки “Московская доставка” 16
- •Глава 3. Программная реализация бд для курьерской службы “Московская доставка” 31
- •Введение
- •Глава 1. Анализ предметной области асу “Московская доставка”
- •1.1 Системный анализ предметной области асу “Московская доставка”
- •1.2 Обзор информационных технологий, подходящих для разработки бд
- •1.2.1 Настольные субд. Microsoft Access
- •1.2.2 Полупрофессиональные субд. SqLite
- •1.2.3 Профессиональные субд. Oracle database
- •1.3 Обзор продуктов аналогов асу “Московская доставка”
- •1.3.1 Информационная система службы доставки “ups”
- •1.3.2 Информационная система службы доставки “ikea”
- •1.4 Требования к разрабатываемой бд курьерской службы “Московская доставка”
- •Выводы по главе 1
- •Глава 2. Проектирование базы данных для объекта автоматизации курьерской доставки “Московская доставка”
- •2.1 Разработка инфологической модели бд курьерской службы “Московская доставка”
- •2.2 Обоснование выбора модели данных
- •2.2.1 Иерархическая модель
- •2.2.2 Сетевая модель данных
- •2.2.3 Объектно-ориентированная модель данных
- •2.2.4 Реляционная модель данных
- •2.3 Логическое проектирование бд курьерской службы “Московская доставка”
- •2.4 Нормализация схемы базы данных
- •Выводы по главе 2
- •Глава 3. Программная реализация бд для курьерской службы “Московская доставка”
- •3.1 Анализ и выбор субд
- •3.2 Физическое проектирование бд “Московская доставка”
- •3.3 Реализация ограничений
- •3.4 Безопасность и контроль
- •Выводы по главе 3
- •Заключение
- •Список литературы
- •Приложения
Глава 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;
/