Автобусный парк / Задание
.docЗадание:
Пусть требуется создать программную систему, предназначенную для диспетчера автобусного парка. Такая система должна обеспечивать хранение сведений о водителях, о маршрутах и характеристиках автобусов.
Каждый водитель характеризуется паспортными данными, классом, стажем работы и окладом, причем оклад зависит от класса и стажа работы. Маршрут автобуса характеризуется номером маршрута, названием начального и конечного пункта движения, временем начала и конца движения, интервалом движения и протяженностью в минутах (время движения от кольца до кольца). Характеристиками автобуса являются: номер государственной регистрации автобуса, его тип и вместимость, причем вместимость автобуса зависит от его типа. Каждый водитель закреплен за отдельным автобусом и работает на определенном маршруте, но в случае поломки своего автобуса или болезни другого водителя может пересесть на другую машину. В базе должен храниться график работы водителей. Необходимо предусмотреть возможность корректировки БД в случаях поступления на работу нового водителя, списания старого автобуса, введения нового маршрута или изменения старого и т.п.
Диспетчеру автопарка могут потребоваться следующие сведения:
-
Список водителей, работающих на определенном маршруте с указанием графика их работы?
-
Какие автобусы обслуживают данный маршрут?
-
Какие маршруты начинаются или заканчиваются в пункте с заданным названием?
-
Когда начинается и заканчивается движение автобусов на каждом маршруте?
-
Какова протяженность определенного маршрута?
-
Какова общая протяженность маршрутов, обслуживаемых автопарком?
-
Какие автобусы не вышли на линию, и по какой причине (неисправность, отсутствие водителя)?
-
Сколько водителей каждого класса работает в автопарке?
-
Водитель с самым большим стажем работы?
Необходимо предусмотреть возможность выдачи справки о маршруте (протяженность, время и интервал движения, конечные пункты, кто обслуживает) и отчета по автопарку, сгруппированного по типам автобусов, с указанием маршрутов, обслуживаемых автобусами каждого типа. Для маршрутов должны быть указаны все характеристики, включая списки автобусов и водителей, обслуживающих каждый маршрут. Отчет должен содержать сведения о суммарной протяженности обслуживаемых маршрутов, о количестве имеющихся в автопарке автобусов каждого типа, о количестве водителей, их среднем возрасте и стаже.
Итак, из задания имеем:
Водитель( Паспортные данные, класс, стаж, оклад)
Маршрут( №маршрута, назв_нач_пункта, назв_конечн_пункта, время_нач_движения, время_конца_движения, интервал, протяженность)
Автобус( №гос_регистрации, тип, вместимость)
Так как паспортные данные являются не одним атрибутом, а их списком, то составляем два отношения.
Водители( №паспорта, ФИО, Дата_рождения, прописка, гражданство, класс, стаж, оклад)
Так как оклад зависит от стажа и класса водителя, то составляем отдельное отношение, играющее роль справочника.
Оклад(класс, стаж, оклад)
Это отношение имеет составной ключ из полей «класс» и «стаж», так как каждому сочетанию класса и стажа будет ставиться в соответствие оклад. Поле «оклад» не может быть ключевым, так как его величина может меняться со временем.
Так как нам требуется определять вместимость автобуса в зависимости от типа, то целесообразнее создать отдельное отношение. Так как количество типов автобусов ограничено, поэтому такой шаг позволит исключить дублирование записей.
Тип_автобуса(Тип, вместимость)
Чтобы отслеживать состояние здоровья водителей и техническое состояние автобусов, вводим дополнительные отношения Неявки и Поломки. Тогда они будут иметь вид:
Неявки(№паспорта, причина)
Поломки(№гос_регистрации)
Так как база создается не на один день, и требуется вести график работ водителей, то вводим еще отношение Дата. Тогда появляется возможность хранить в базе сведения, какой водитель на каком автобусе и по какому маршруту отработал и когда.
А так же хранить данные о всех неявках водителей на работу и поломок автобусов.
Дата(число, месяц, год)
Отношение Дата имеет составной ключ, так как в нем не может находиться двух записей, соответствующих одному времени.
В результате получили схему:
Дата
Число
Месяц
Год
Неявки
Поломки
Водители:
№паспорта
ФИО
Дата_рождения
прописка
Автобус:
№гос_регистрации
Тип_автобуса:
Тип
вместимость
Оклад:
Стаж
Класс
оклад
Маршрут:
№маршрута
назв_нач_пункта
назв_конечн_пункта
время_нач_движения
время_конца_движения
интервал
протяженность
Рассмотрим отношения:
1. Водители находится в нормальной форме Бойса-Кодта, так как имеет не составной ключ №паспорта и все атрибуты зависят от этого ключа.
2. Оклад не находится в нормальной форме Бойса-Кодта, поэтому вводим ключевое поле ид_Оклад.
3. Дата не находится в нормальной форме Бойса-Кодта, поэтому вводим ключевое поле ид_Дата.
4. Автобус находится в нормальной форме Бойса-Кодта, так как имеет не составной ключ №гос_регистрации и все атрибуты зависят от этого ключа.
5. Тип_автобуса находится в нормальной форме Бойса-Кодта, так как имеет не составной ключ Тип и все атрибуты зависят от этого ключа.
6. Маршрут находится в нормальной форме Бойса-Кодта, так как имеет не составной ключ №маршрута и все атрибуты зависят от этого ключа.
7. Неявки не находится в нормальной форме Бойса-Кодта, поэтому вводим ключевое поле ид_Неявки.
8. Поломки не находится в нормальной форме Бойса-Кодта, поэтому вводим ключевое поле ид_Поломки
Рассмотрим связи:
1) Водитель, Автобус, Маршрут и Дата находятся в отношении n:n, таким образом действуем по правилу 6. Вводим связывающее отношение График:
График(№паспорта, №гос_регистрации, №маршрута,ид_Дата)
2) Водитель и Оклад находятся в отношении 1:n, таким образом действуем по правилу 4.
Водители( №паспорта, ФИО, Дата_рождения, прописка, гражданство, ид_Оклад)
Оклад( ид_Оклад, стаж, класс, оклад)
3) Тип_автобуса и Автобусы находятся в отношении 1:n, таким образом, действуем по правилу 4.
Автобусы(№гос_регистрации,Тип)
4) Автобусы и Дата находятся в отношении n:n, таким образом действуем по правилу 6 и вводим новое отношение Поломки, с ключевым полем ид_Поломки.
Дата(ид_Дата, число, месяц, год)
Автобусы(№гос_регистрации,Тип)
Поломки(ид_Поломки, ид_Дата, №гос_регистрации)
5) Водители и Дата находятся в отношении n:n, таким образом действуем по правилу 6 и вводим новое отношение Неявки, с ключевым полем ид_Неявки.
Водители( №паспорта, ФИО, Дата_рождения, прописка, гражданство, ид_Оклад)
Дата(ид_Дата, число, месяц, год)
Неявки(ид_Неявки, №паспорта, ид_Дата)
Схема:
Неявки
ид_Неявки
№паспорта
ид_Дата
Дата
ид_Дата
Число
Месяц
Год
Поломки
ид_Поломки
№гос_регистрации
ид_Дата
Водители:
№паспорта
ид_Оклад
ФИО
Дата_рождения
прописка
Автобус:
№гос_регистрации
Тип
График
Ид_График
№паспорта
№гос_регистрации
№маршрута
Оклад:
ид_Оклад
Стаж
Класс
оклад
Тип_автобуса:
Тип
вместимость
Маршрут:
№маршрута
назв_нач_пункта
назв_конечн_пункта
время_нач_движения
время_конца_движения
интервал
протяженность
Министерство образования РФ
СПбГЭТУ “ЛЭТИ”
Пояснительная записка к
Курсовой работе по дисциплине
“Базы данных”
Задание 9
Преподаватель: Лукина О.С.
Студент: Митягин С.А.
Гр. 3342
2006