Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Автобусный парк / Задание

.doc
Скачиваний:
147
Добавлен:
01.05.2014
Размер:
67.58 Кб
Скачать

Задание:

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

Каждый водитель характеризуется паспортными данными, классом, стажем работы и окладом, причем оклад зависит от класса и стажа работы. Маршрут автобуса характеризуется номером маршрута, названием начального и конечного пункта движения, временем начала и конца движения, интервалом движения и протяженностью в минутах (время движения от кольца до кольца). Характеристиками автобуса являются: номер государственной регистрации автобуса, его тип и вместимость, причем вместимость автобуса зависит от его типа. Каждый водитель закреплен за отдельным автобусом и работает на определенном маршруте, но в случае поломки своего автобуса или болезни другого водителя может пересесть на другую машину. В базе должен храниться график работы водителей. Необходимо предусмотреть возможность корректировки БД в случаях поступления на работу нового водителя, списания старого автобуса, введения нового маршрута или изменения старого и т.п.

Диспетчеру автопарка могут потребоваться следующие сведения:

  • Список водителей, работающих на определенном маршруте с указанием графика их работы?

  • Какие автобусы обслуживают данный маршрут?

  • Какие маршруты начинаются или заканчиваются в пункте с заданным названием?

  • Когда начинается и заканчивается движение автобусов на каждом маршруте?

  • Какова протяженность определенного маршрута?

  • Какова общая протяженность маршрутов, обслуживаемых автопарком?

  • Какие автобусы не вышли на линию, и по какой причине (неисправность, отсутствие водителя)?

  • Сколько водителей каждого класса работает в автопарке?

  • Водитель с самым большим стажем работы?

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

Итак, из задания имеем:

Водитель( Паспортные данные, класс, стаж, оклад)

Маршрут( №маршрута, назв_нач_пункта, назв_конечн_пункта, время_нач_движения, время_конца_движения, интервал, протяженность)

Автобус( №гос_регистрации, тип, вместимость)

Так как паспортные данные являются не одним атрибутом, а их списком, то составляем два отношения.

Водители( №паспорта, ФИО, Дата_рождения, прописка, гражданство, класс, стаж, оклад)

Так как оклад зависит от стажа и класса водителя, то составляем отдельное отношение, играющее роль справочника.

Оклад(класс, стаж, оклад)

Это отношение имеет составной ключ из полей «класс» и «стаж», так как каждому сочетанию класса и стажа будет ставиться в соответствие оклад. Поле «оклад» не может быть ключевым, так как его величина может меняться со временем.

Так как нам требуется определять вместимость автобуса в зависимости от типа, то целесообразнее создать отдельное отношение. Так как количество типов автобусов ограничено, поэтому такой шаг позволит исключить дублирование записей.

Тип_автобуса(Тип, вместимость)

Чтобы отслеживать состояние здоровья водителей и техническое состояние автобусов, вводим дополнительные отношения Неявки и Поломки. Тогда они будут иметь вид:

Неявки(№паспорта, причина)

Поломки(№гос_регистрации)

Так как база создается не на один день, и требуется вести график работ водителей, то вводим еще отношение Дата. Тогда появляется возможность хранить в базе сведения, какой водитель на каком автобусе и по какому маршруту отработал и когда.

А так же хранить данные о всех неявках водителей на работу и поломок автобусов.

Дата(число, месяц, год)

Отношение Дата имеет составной ключ, так как в нем не может находиться двух записей, соответствующих одному времени.

В результате получили схему:

Дата

Число

Месяц

Год

Неявки

Поломки

Водители:

№паспорта

ФИО

Дата_рождения

прописка

Автобус:

№гос_регистрации

Тип_автобуса:

Тип

вместимость

Оклад:

Стаж

Класс

оклад

Маршрут:

№маршрута

назв_нач_пункта

назв_конечн_пункта

время_нач_движения

время_конца_движения

интервал

протяженность

Рассмотрим отношения:

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

Соседние файлы в папке Автобусный парк