Разработка таблиц отношений

 

В процессе разработки предварительных отношений (табл. 1) были использованы правила:

Правило 4 - Если степень связи 1:n и класс принадлежности n-связной сущности обязательный, то необходимы ДВА отношения, по одному для каждой сущности. Ключами этих отношений станут ключи каждой сущности. Ключ односвязной сущности добавится как атрибут в отношение для n-связной сущности.

Правило 6 - Если степень связи m:n, то необходимы ТРИ отношения: по одному для каждой сущности и одно для связи. В отношении для связи среди атрибутов должны быть ключи каждой сущности. Ключами первых двух отношений становятся ключи сущностей, а ключом третьего - ключи обеих сущностей.


 

Таблица 1

Таблица предварительных отношений

Название отношений   Ключевое поле для связи Используемое правило
Заказ Код заказа, Код заказчика,…
Заказчик Код заказчика,…  
Груз Код груза,…  
Сотрудники Код сотрудника,...  
Указывается груз Код груза, Код заказа,…
Сотрудники выполняют заказ Код заказа, Код сотрудника,…

 

Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, потенциально приводящей к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение.

Переменная отношения находится в НФБК тогда и только тогда, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ.

Переменная отношения находится в третьей нормальной форме тогда и только тогда, когда она находится во второй нормальной форме, и отсутствуют транзитивные функциональные зависимости неключевых атрибутов от ключевых.

После составления таблицы нормальных отношений составляется таблица окончательных отношений (табл. 2).

 

 

Таблица 2

Таблица окончательных отношений

Название отношений   Ключевое поле для связи Нормальные формы
Заказ Код заказа, Код заказчика, дата отправления, дата прибытия, откуда отправлять, куда присылать НФБК
Заказчик Код заказчика, ФИОзак, р/сч, банк 3 НФ
Груз Код груза, , наименование, масса, особенности НФБК
Сотрудники Код сотрудника, ФИОсот, дата рождения, паспортные данные, должность 3 НФ
Указывается груз Код груза, Код заказа, цена, отметка об оплате НФБК
Сотрудники выполняют заказ Код заказа, Код сотрудника, статус водителя, выплаты НФБК

На основании таблицы 2 строится схема данных (рис. 3)

Рис. 3 Схема данных

Создание запросов

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

Все сотрудники:

SELECT Сотрудники.[Код Сотрудника], Сотрудники.Телефон, Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Отчество, Сотрудники.Должность

FROM Сотрудники;

Все диспетчера:

SELECT Сотрудники.[Код Сотрудника], Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Отчество, Сотрудники.Должность

FROM Сотрудники

WHERE (((Сотрудники.Должность)="диспетчер"));

Все водители:

SELECT [Все сотрудники Запрос].[Код Сотрудника], [Все сотрудники Запрос].Телефон, [Все сотрудники Запрос].Фамилия, [Все сотрудники Запрос].Имя, [Все сотрудники Запрос].Отчество, [Все сотрудники Запрос].Должность

FROM [Все сотрудники Запрос]

WHERE ((([Все сотрудники Запрос].Должность)="водитель"));

Все заказчики:

SELECT Заказчики.[Код заказчика], Заказчики.Фамилия, Заказчики.Имя, Заказчики.Отчество, Заказчики.Банк

FROM Заказчики;

Сотрудники перекрестный:

TRANSFORM Max(Сотрудники.Код) AS [Итоговое значение Код]

SELECT Сотрудники.[Код Сотрудника], Сотрудники.Телефон

FROM Сотрудники

GROUP BY Сотрудники.[Код Сотрудника], Сотрудники.Телефон

PIVOT Сотрудники.Должность;

Заказ расчет:

SELECT Заказ.[Дата отправления], Заказ.[Дата прибытия], [Дата прибытия]-[Дата отправления] AS [Дни в пути], Заказ.[Код заказа], Сотрудники.Фамилия, [Оклад,день]*[Дни в пути] AS Зарплата, Сотрудники.[Оклад,день], Month([Дата прибытия]) AS Месяц, Заказ.[Код сотрудника]

FROM Заказ INNER JOIN Сотрудники ON Заказ.[Код сотрудника] = Сотрудники.[Код Сотрудника];

Сотрудники выполняют заказ:

SELECT Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Отчество, Сотрудники.[Код Сотрудника], [Сотрудники выполняют заказ].Статус

FROM Сотрудники INNER JOIN [Сотрудники выполняют заказ] ON Сотрудники.[Код Сотрудника] = [Сотрудники выполняют заказ].[Код сотрудника];

Водители стаж больше трех лет:

SELECT Сотрудники.[Фамилия], Сотрудники.[Имя], Сотрудники.[Отчество], Сотрудники.[Должность], Сотрудники.[Стаж]

FROM Сотрудники

WHERE (((Сотрудники.Должность)="водитель") And ((Сотрудники.Стаж)>3));

Грузы:

TRANSFORM Sum(Грузы.[Код груза]) AS [Sum-Код груза]

SELECT Грузы.Особенности, Sum(Грузы.[Масса,кг]) AS [Sum-Масса,кг]

FROM Грузы

WHERE (((Грузы.[Масса,кг]) Is Not Null))

GROUP BY Грузы.Особенности

PIVOT Грузы.[Масса,кг];

Итоговая зарплата:

TRANSFORM Min([Заказ_расчет Запрос].Зарплата) AS [Min-Зарплата]

SELECT [Заказ_расчет Запрос].Месяц, Sum([Заказ_расчет Запрос].Зарплата) AS [Зарплата Итоговая]

FROM [Заказ_расчет Запрос]

GROUP BY [Заказ_расчет Запрос].Месяц

PIVOT [Заказ_расчет Запрос].[Дата отправления];

Запрос на удаление:

DELETE Заказ.[Код заказа]

FROM Заказ

WHERE (((Заказ.[Код заказа])=[Введите код заказа для удаления]));

Разработка интерфейса

Интерфейс разрабатывается в меню «Формы» программы MS Office Access (Рис. 4)

Рис. 4 Форма работы с заказами


Рис. 5 Кнопочная форма

Рис. 6 Диаграмма итоговой зарплаты выданной сотрудникам по месяцам

Рис. 7 Часть отчета данных о всех сотрудниках

Заключение

В данной курсовой работе была рассмотрена работа ООО «ПТО», которое занимается транспортировкой груза. Помимо этого в работе приведена ER-диаграмма взаимодействия сотрудников фирмы, заказчиков и оформляемых запросов. Были приведены таблицы предварительных и окончательных отношений и на основании второй построена схема данных, и на основании построенных и заполненных таблиц в программе MS Access 2007 сформированы запросы и форма.

Цель работы была достигнута.


 



OCUMENT_ROOT"]."/cgi-bin/footer.php"; ?>