Автор работы: Пользователь скрыл имя, 17 Июня 2013 в 06:49, курсовая работа
Каждый водитель характеризуется паспортными данными, классом, стажем работы и окладом, причем оклад зависит от класса и стажа работы. Маршрут автобуса характеризуется номером маршрута, названием начального и конечного пункта движения, временем начала и конца движения, интервалом движения и протяженностью в минутах (время движения от кольца до кольца). Характеристиками автобуса являются: номер государственной регистрации автобуса, его тип и вместимость, причем вместимость автобуса зависит от его типа. Каждый водитель закреплен за отдельным автобусом и работает на определенном маршруте, но в случае поломки своего автобуса или болезни другого водителя может пересесть на другую машину. В базе должен храниться график работы водителей. Необходимо предусмотреть возможность корректировки БД в случаях поступления на работу нового водителя, списания старого автобуса, введения нового маршрута или изменения старого и т.п.
Министерство образования РФ
СПбГЭТУ «ЛЭТИ»
Пояснительная записка к индивидуальному заданию
по дисциплине
"Базы данных"
Вариант 9
Преподаватель: Лукина О.С.
Студент гр. 3342: Митягин С.А.
2006
1. Задание
Пусть требуется создать программную систему, предназначенную для диспетчера автобусного парка. Такая система должна обеспечивать хранение сведений о водителях, о маршрутах и характеристиках автобусов.
Каждый водитель характеризуется паспортными данными, классом, стажем работы и окладом, причем оклад зависит от класса и стажа работы. Маршрут автобуса характеризуется номером маршрута, названием начального и конечного пункта движения, временем начала и конца движения, интервалом движения и протяженностью в минутах (время движения от кольца до кольца). Характеристиками автобуса являются: номер государственной регистрации автобуса, его тип и вместимость, причем вместимость автобуса зависит от его типа. Каждый водитель закреплен за отдельным автобусом и работает на определенном маршруте, но в случае поломки своего автобуса или болезни другого водителя может пересесть на другую машину. В базе должен храниться график работы водителей. Необходимо предусмотреть возможность корректировки БД в случаях поступления на работу нового водителя, списания старого автобуса, введения нового маршрута или изменения старого и т.п.
Диспетчеру автопарка могут потребоваться следующие сведения:
2. Проектирование
2.1. Сущности:
Водители (Паспортные данные, класс, стаж, оклад)
Маршрут(№маршрута, название начального пункта, название конечного пункта, время начала движения, время конца движения, интервал, протяженность)
Автобус (№гос регистрации, тип, вместимость)
Раскрываем термин «Паспортные данные»:
Водители (Серия_номер паспорта, ФИО, Дата рождения, прописка, класс, стаж, оклад)
Графическое изображение сущностей и связей между ними приведено на рис. 1.
Водят
Рис. 1
2.2. Построение отношений
Для связи третьего порядка Водят генерируются отношения по правилу №9.
2.2.1. Получаем отношения:
Водители (№паспорта, ФИО, Дата рождения, прописка, класс, стаж, оклад)
Маршрут(№маршрута, название начального пункта, название конечного пункта, время начала движения, время конца движения, интервал, протяженность)
Автобус (№гос регистрации, тип, вместимость)
Водят(№паспорта, №маршрута, №гос регистрации, дата)
Для определения технического состояния автобусов введем отношение Поломки. Причем, график поломок зависит от номера автобуса и даты поломки.
Поломки(№гос регистрации, дата_поломки)
Кроме того так как требуется считать величину оклада в зависимости от класса и стажа, то используем отношение Оклад. Оно должно ставить в зависимость денежное начисление в зависимость от класса водителя.
Оклад(Класс, Базовая_ставка)
2.2.2. Проверяем отношения на избыточность:
Ни одно отношение не включает в себя полностью атрибуты другого отношения.
Отношение Водители не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Маршрут не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Автобус не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Водят не является избыточным, так как его атрибут ДАТА содержится только в этом отношении и не может быть получено из других отношений.
Отношение Поломки не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Оклад не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Таким образом, избыточных отношений нет.
2.2.3. Функциональные зависимости:
Отношение Водители находится в НФБК, так как атрибут №паспорта однозначно определяет остальные атрибуты отношения. Остальные же атрибуты могут повторяться. Таким образом, атрибут №паспорта является детерминантом отношения.
№паспорта à ФИО, Дата_рождения, Прописка, Класс, Стаж, оклад
Отношение Маршруты находится в НФБК, так как атрибут №маршрута однозначно определяет остальные атрибуты отношения. Остальные же атрибуты могут повторяться. Таким образом, атрибут №маршрута является детерминантом отношения.
№маршрута à назв_нач_пункта, назв_кон_пункта, время_нач_движ, время_кон_движ, интервал, протяженность
Отношение Автобусы не находится в НФБК, так как атрибут №гос_регистрации
однозначно определяет остальные атрибуты отношения, и является детерминантом, но атрибут Тип однозначно определяет атрибут Вместимость. Таким образом,пользуемся методом декомпозиции. Выполним проекцию на эту функциональную зависимость:
№гос_регистрации à Тип, Вместимость
Тип à Вместимость
Отношение Водят находится в НФБК, так как атрибуты №паспорта , №маршрута, №гос регистрации однозначно определяют остальные атрибуты отношения. Остальные же атрибуты могут повторяться.
№паспорта , №маршрута, №гос регистрации à дата
Отношение Поломки находится в НФБК, так как атрибут №гос регистрации однозначно определяет дату поломки, которая может меняться. Таким образом, атрибут №гос регистрации является детерминантом отношения.
№гос регистрации à дата_поломки
Отношение Оклад находится в НФБК, так как атрибут Стаж однозначно определяет величину денежного начисления, которая может меняться. Таким образом, атрибут Стаж является детерминантом отношения.
Стаж à денежное начисление
Графическое изображение поученных отношений изображено на рис. 2:
Сломался
Водят
Является
Имеет начисление
Рис. 2
Как было доказано выше избыточных отношений нет.
Рассмотрим функциональные зависимости новых отношений:
Отношение Автобусы находится в НФБК, так как атрибут №гос_регистрации однозначно определяет тип автобуса, который может повторяться. Таким образом, атрибут №гос_регистрации является детерминантом отношения.
№ гос_регистрации à тип
Отношение Тип_автобуса находится в НФБК, так как атрибут Тип однозначно определяет вместимость автобуса. Таким образом, атрибут Тип является детерминантом отношения.
Тип à вместимость
Таким образом, все указанные отношения находятся в НФБК.
2.2.4. Структура базы данных
Рис. 3
3. Структура таблиц
Таблица “Оклад”
Содержит данные о денежной ставке за класс.
Поле |
Тип данных |
Комментарий |
Klass |
Текстовый |
Название класса – ключ Обязательное поле Размер 10 |
Oklad |
Числовой |
Величина начисления Целое Обязательное поле |
Таблица “Водители”
Содержит данные о водителях в парке.
Поле |
Тип данных |
Комментарий |
Pasp |
Текстовый |
Серия + номер паспорта – ключ Обязательное поле Размер 11 Условие на значение: Like "???? ??????" |
FIO |
Текстовый |
Фамилия и инициалы Обязательное поле Размер 50 Условие на значение: Like "* ?.?." |
staj |
Числовой |
Стаж (лет) Не обязательное поле Целое Условие на значение >0 |
klas |
Текстовый |
Класс водителя – вторичный ключ Обязательное поле Размер 1 Условие на значение: (="A") Or (="B") Or (="C") |
oklad |
Числовой |
Рассчитанная величина оклада Обязательное поле Целое Условие на значение: >0 |
data_roj |
Дата/время |
Дата рождения |
Adres |
Текстовый |
Место проживания, прописка Не обязательное поле Размер 200 |
Связь по ключу klas с таблицей “Оклад” предусматривает обеспечение ссылочной целостности и каскадное обновление.
Таблица “Автобусы”
Содержит данные об автобусах в парке.
Поле |
Тип данных |
Комментарий |
avtob |
Текстовый |
Номер автобуса –ключ Обязательное поле Размер 6 |
Type |
Текстовый |
Тип автобуса – вторичный ключ Обязательное поле Размер 50 |
Связь по ключу Type с таблицей “Тип_вместимость” предусматривает обеспечение ссылочной целостности.
Таблица “ Тип_вместимость ”
Содержит данные о вместимости автобусов определенного типа.
Поле |
Тип данных |
Комментарий |
Type |
Текстовый |
Тип автобуса – ключ Обязательное поле Размер 50 |
Vmestim |
Числовой |
Вместимость Обязательное поле Целое Условие на значение >0 |
Таблица “ Поломки ”
Содержит данные о поломках автобусов и дат поломок.
Поле |
Тип данных |
Комментарий |
id_Pol |
Счетчик |
Искусственный ключ |
avtob |
Текстовый |
Номер автобуса Обязательное поле Размер 6 |
date |
Дата/время |
Дата поломки |
Связь по ключу avtob с таблицей “Автобусы” предусматривает обеспечение ссылочной целостности.
Таблица “ Маршруты”
Содержит данные о маршрутах, обслуживаемых автопарком.
Поле |
Тип данных |
Комментарий |
marshr |
Числовой |
Номер маршрута – ключ Обязательное поле Целое Условие на значение >0 |
Nach_punkt |
Текстовый |
Название начального пункта Обязательное поле Размер 50 |
Konechn_punkt |
Текстовый |
Название конечного пункта Обязательное поле Размер 50 |
Nach_dvij |
Дата/время |
Время начала движения |
Kon_vrema |
Дата/время |
Время окончания движения |
Interval |
Числовой |
Интервал движения (в мин) Обязательное поле Целое Условие на значение >0 |
Protaj |
Числовой |
Протяженность (в мин) Обязательное поле Целое Условие на значение >0 |
Таблица “Водят”
Содержит данные, какой водитель на каком автобусе какой маршрут и какое время обслуживал.
Поле |
Тип данных |
Комментарий |
id_vod |
Счетчик |
Искусственный ключ |
Pasp |
Текстовый |
Серия + номер паспорта – вторичный ключ Не обязательное поле Размер 11 |
avtob |
Текстовый |
Номер автобуса - вторичный ключ обязательное поле Размер 6 |
marshr |
Числовой |
Номер маршрута - вторичный ключ обязательное поле Целое Условие на значение >0 |
date |
Дата/время |
Дата |