Разработка таблиц отношений
В процессе разработки предварительных отношений (табл. 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 сформированы запросы и форма.
Цель работы была достигнута.