Создание базы данных «Грузопоток», которая позволяет быстро и эффективно управлять грузооборотом, вести учет транспортных средств, составлять отчеты для руководителей и различных отделов, страница 4

Zak(KZak, Gr(KGr, GNaim, Kat(KKat, KNapr, KVes, KCena)), Pol(KPol, PNaim, PAdr), Trans(KTrans, TNaim, TGruz), ZSt, ZKol).

Выделим подчиненные отношения в самостоятельные, оставив в исходных реквизиты (атрибуты), соответствующие первичным ключам выделенных отношений:

Zak(KZak,KGr, KPol, KTrans, ZSt, ZKol);

Gr(KGr, GNaim, KKat);

Kat(KKat, KNapr, KVes, KCena);

Pol(KPol, PNaim, PAdr);

Trans(KTrans, TNaim, TGruz).

Среди выделенных нормализованных отношений нет одинаковых, различающихся лишь именами.

Результат нормализации:

Kat(KKat, KNapr, KVes, KCena);

Gr(KGr, GNaim, KKat);

Pol(KPol, PNaim, PAdr);

Trans(KTrans, TNaim, TGruz);

Zak(KZak, NaimIsp, RasSchet, KGr, KPol, KTrans, ZSt, ZKol).

БД находится в 3 нормальной форме, поскольку значения всех ее атрибутов атомарны, каждый не ключевой элемент функционально полно зависит только от первичного ключа и не зависят от других не ключевых атрибутов.

Рис. 6

Таблица Категория

Ключевое поле KKat

Kat(KKat, KNapr, KVes, KCena)

Рис. 7

Таблица Груз

Ключевое поле KGr

Gr(KGr, GNaim, KKat)

Рис. 8

Таблица Транспорт

Trans(KTrans, TNaim, TGruz)

Ключевое поле KTrans

Рис. 9

Таблица Получатель

Pol(KPol, PNaim, PAdr)

Ключевое поле KPol

                                                                                                                               Рис. 10

Таблица Заказ

Zak(KZak, KGr, KPol, KTrans, ZSt, ZKol)

Ключевое поле KZak

Рис.11

Запросы к реляционной базе данных

В процессе разработки БД «Грузопоток» были разработаны следующие регламентные запросы:

·  Добавление Груза (добавление записи в таблицу Груз);

Запрос на добавление в таблицу Груз новых сведений:

INSERT INTO Gr ( KGr, GNaim, KKat )

SELECT [Введите код груза:] AS KGr, [Введите Наименование:] AS Naim, [Введите Код категории:] AS KKat

FROM Gr;

В таблице Заказы ключом поиска является Номер заказа, который уникален для каждого заказа. В таблице Получатель – ключ Код Получателя, в таблице Груз – Код Груза, в таблице Категория – Код категории, в таблице Транспорт - Код транспорта

·  Добавление Получателя (добавление записи в таблицу Получатель);

·  Добавление Категории (добавление записи в таблицу Категория);

·  Добавление Транспорта (добавление записи в таблицу Транспорт);

·  Добавление Заказа (добавление записи в таблицу Заказ)

Запрос на добавление Получателя, Транспорта, Категории и Заказа в таблицы, осуществляется аналогичным образом, что и добавление Груза

·  Заказ-Груз (формирование общей таблицы, в которой отображаются все Заказы на каждый Груза);

Перекрестный запрос:

TRANSFORM Sum(Zak.St) AS [Sum-St]

SELECT Zak.[KZak]

FROM Gr INNER JOIN Zak ON Gr.[KGr]=Zak.[KGr]

GROUP BY Gr.GNaim, Gr.[KKat], Zak.[KZak]

ORDER BY Gr.[KGr]

PIVOT Gr.[KGr];

·  Заказ-Получатель (формирование таблицы, в которой отображаются все Заказы каждого Получателя);

·  Получатель-Груз (формирование таблицы, в которой отображаются все Грузы заказанные каждым Получателем);

·  Груз-Получатель (формирование таблицы, в которой отображаются все Получатели, заказавшие каждый Груз);

Запросы на формирование таблиц Заказ -  Получатель, Получатель - Груз, Груз – Получатель осуществляются аналогичным образом, что и перекрестный запрос Заказ-Груз.

·  Поиск Заказа (осуществление поиска Заказа по его коду в таблице Заказ);

Запрос на выборку с параметром (поиск информации о договоре по номеру договора):

SELECT Zak.KZak, Zak.KPol, Zak.KGr, Zak.Kol, Zak.St, Zak.KTruns

FROM Zak

WHERE (((Zak.KZak)=[Введите номер Заказа:]));

Аналогично выполняются запросы на выборку для таблиц Получатель, Груз, Категория и Транспорт

·  Поиск Груза (осуществление поиска груза по его коду в таблице Груз);

·  Поиск Получателя (осуществление поиска Получателя по его коду в таблице Получатель);

·  Поиск Категории (осуществление поиска категории по ее коду в таблице Категория);

·  Поиск Транспорта (осуществление поиска транспорта по его коду в таблице Транспорт);

·  Заказы (формирование таблицы Заказы с вычисляемым полем Стоимость);

SELECT Zak.[KZak], Zak.[KGr], Zak.[KPol], Zak.Kol, [Kol]*Kat.[KCena] AS St, Zak.[KTruns]

FROM Kat INNER JOIN (Gr INNER JOIN Zak ON Gr.[KGr] = Zak.[KGr]) ON Kat.[КKat] = Gr.[KKat];

·  Сведения о Заказах (обновление таблицы Заказы);

UPDATE Kat INNER JOIN (Gr INNER JOIN Zak ON Gr.[KGr]=Zak.[KGr]) ON Kat.[KKat]=Gr.[KKat] SET Zak.St = [Kol]*Kat.[KCena];

·  Удаление Получателя (удаление записи из таблицы Получатель по ее коду);

Запрос на удаление записи из таблицы Получатель (аналогично для остальных таблиц):

DELETE Pol.KPol, Pol.PNaim, Pol.PAdr

FROM Pol

WHERE (((Pol.KPol)=[Введите Код Получателя:]));

·  Удаление Груза (удаление записи из таблицы Груз по ее коду);

·  Удаление Транспорта (удаление записи из таблицы Транспорт по его коду);

·  Удаление Заказа (удаление записи из таблицы Заказы по ее номеру);

·  Удаление Категории (удаление записи из таблицы Категория)

Проектирование базы данных сетевого типа

Для проектирования базы сетевого типа разрабатывается диаграмма Бахмана:

SYS

 

Рис. 12

SYS – система, одна особая запись, вход в БД

P1, P2, P3, S1, S2, S3, S4 – физические наборы данных в БД, которые содержат тот или иной тип записи

С – вычисляемые записи (calc), записи, которые получены прямым доступом

V – записи через набор S1, S2, S3, S4

KPol, KKat, KGr, KZak, KTruns - первичные ключи.

Описание схемы базы данных

Описание схемы БД производится на Языке Описания Данных (ЯОД) и состоит из предложений пяти типов:

1.  Имя схемы БД;

2.  Описание файла данных;

3.  Описание файла ключей;

4.  Описание типов записей;

5.  Описание наборов данных.

Data base Gruz; {

Data file ‘Gruz.dat’ contains system, KAT, ZAK, POL, GR TRANS;

Key file ‘Gruz.kly’ contains KKat, KZak, KPol, KGr KTrans;