Государственный университет – Высшая школа экономики
Факультет бизнес - информатики
Отчет по курсовой работе на тему:
"База данных ГИБДД"
Выполнил студент
2 курса 273(0) группы
Нестеров Сергей Викторович
Преподаватель:
Щербинин Олег Павлович
Москва 2010
Содержание
1. Описание прикладной области
2. Описание структуры
3. Описание базы данных
4. Запросы
Список литературы
1. Описание прикладной области
Прикладной областью данного курсового проекта является база ГИБДД.
Я выбрал эту тему, потому что сам являюсь водителем и зачастую общаюсь с сотрудниками ГИБДД и слышу множество историй о них и их системе работы.
Для полноценной работы базы данных, необходимы следующие сущности:
· Водитель
· Владелец
· Транспортное средство
· VIN
· Протоколы нарушений
Формулирование основной цели разработки.
Основной целью данной базы данных является удобное, быстрое и качественное обращение с информацией об участниках дорожного движения и их нарушениях.
Такая база может найти применение в хранении информации о неуклонно растущих автолюбителях.
Помимо хранения информации, пользователь базы данных может осуществлять запросы на выборку и поиск информации.
Основные запросы, на которые ориентирована база данных:
1. Запрос о выводе владельца по номеру ПТС
2. Запрос о выводе информации о нарушении и его участнике
3. Запрос о выводе информации об участнике нарушения и сумма штрафа
4. Запрос по VIN коду информации о владельце и страховке
5. Запрос по государственному номеру информации о машине
6. Запрос по поиску владельцев определенных марок машин и моделей
7. Запрос о наличии ОСАГО и КАСКО
Описание источников и форм исходных данных
Источниками разработанной базы данных являются данные из Интернета.
Поэтому нельзя полностью доверять данной информации.
Требование к программному обеспечению.
Использовались следующие программы:
- Microsoft SQL Server 2005 Standart ver.9.0.1
- Computer Associated ERWin 4.0.
2. Описание структуры
Таблица находится в первой нормальной форма, тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.
Отношение находится во второй нормальной форме, если оно соответствует первой нормальной форме и все не ключевые атрибуты функционально полно зависят от первичного ключа.
Отношение находится в третьей нормальной форме, если оно соответствует второй нормальной форме, и в нем нет транзитивных связей.
На практике в большинстве случаев третья форма нормализации является необходимой и достаточной.
3.Описание базы данных
Схема данных в SQL Server 2005.
ER-модель в Erwin.
Logical
Physical
Таблица основных сущностей
Основных сущностей для моей базы данных необходимо три:
· Сущность с информацией о водителе
· Сущность с информацией о владельце
· Сущность с информацией о VIN
· Сущность с информацией о ТС
· Сущность с информацией о нарушениях
Водитель
Владелец
VIN
Протокол
Транспортное средство
4. Запросы
Разработка SQL-запросов
1. Запрос о выводе владельца по номеру ПТС
SELECT Владелец_ПТС.Номер_ПТС, Владелец.Фамилия, Владелец.Имя, Владелец.Отчество, Владелец.Дата_Рождения
FROM Владелец_ПТС INNER JOIN
Владелец ON Владелец_ПТС.ID_Владелец = Владелец.ID_Владелец
2. Запрос о выводе информации о нарушении и его участнике
SELECT Владелец.Фамилия, Владелец.Имя, Владелец.Отчество, Номер_Прав.Номер_Прав, Протокол.ID_Протокол, Протокол.Дата_Нарушения,
Протокол.Место_Нарушения, Протокол.Сущность_Нарушения, Протокол.Сумма_Штрафа, Протокол.Лишение, Протокол.Дата_Оплаты
FROM Номер_Прав INNER JOIN
Штраф_Протокол ON Номер_Прав.ID_Штраф = Штраф_Протокол.ID_Штраф INNER JOIN
Протокол ON Штраф_Протокол.ID_Протокол = Протокол.ID_Протокол INNER JOIN
Водитель ON Номер_Прав.Номер_Прав = Водитель.Номер_Прав INNER JOIN
Владелец ON Водитель.ID_Владелец = Владелец.ID_Владелец
3. Запрос о выводе информации об участнике нарушения и сумма штрафа
SELECT Владелец.Фамилия, Владелец.Имя, Владелец.Отчество, Номер_Прав.Номер_Прав, Протокол.ID_Протокол, Протокол.Дата_Нарушения,
Протокол.Место_Нарушения, Протокол.Сущность_Нарушения, Протокол.Сумма_Штрафа, Протокол.Лишение, Протокол.Дата_Оплаты
FROM Номер_Прав INNER JOIN
Штраф_Протокол ON Номер_Прав.ID_Штраф = Штраф_Протокол.ID_Штраф INNER JOIN
Протокол ON Штраф_Протокол.ID_Протокол = Протокол.ID_Протокол INNER JOIN
Водитель ON Номер_Прав.Номер_Прав = Водитель.Номер_Прав INNER JOIN
Владелец ON Водитель.ID_Владелец = Владелец.ID_Владелец
WHERE Протокол.Сумма_Штрафа >1500
4. Запрос по VIN коду информации о владельце и страховке
SELECT ПТС_VIN.VIN, Владелец.Фамилия, Владелец.Отчество, Страховка.ID_Страховка, Страховка.С, Страховка.По, Страховка.КАСКО, Страховка.ОСАГО
FROM ПТС_VIN INNER JOIN
Владелец_ПТС ON ПТС_VIN.Номер_ПТС = Владелец_ПТС.Номер_ПТС INNER JOIN
Владелец ON Владелец_ПТС.ID_Владелец = Владелец.ID_Владелец INNER JOIN
Водитель ON Владелец.ID_Владелец = Водитель.ID_Владелец INNER JOIN
Страховка ON Водитель.ID_Страховка = Страховка.ID_Страховка
5. Запрос по государственному номеру информации о машине
SELECT Номер_Двигателя.Номер_Двигателя, Номер_Двигателя.Мощность_л_с, Номер_Двигателя.Объем, Номер_Двигателя.Марка, Номер_Двигателя.Модель,
Номер_Двигателя.Год_Выпуска, ПТС_Гос_Знак.Гос_знак, VIN.VIN
FROM Номер_Двигателя INNER JOIN
VIN ON Номер_Двигателя.Номер_Двигателя = VIN.Номер_Двигателя INNER JOIN
ПТС_VIN ON VIN.VIN = ПТС_VIN.VIN INNER JOIN
ПТС_Гос_Знак ON ПТС_VIN.Номер_ПТС = ПТС_Гос_Знак.Номер_ПТС
6. Запрос по поиску владельцев определенных марок машин и моделей
SELECT Владелец.Фамилия, Владелец.Имя, Владелец.Отчество, Номер_Двигателя.Марка, Номер_Двигателя.Модель, Номер_Двигателя.Год_Выпуска
FROM Номер_Двигателя INNER JOIN
VIN ON Номер_Двигателя.Номер_Двигателя = VIN.Номер_Двигателя INNER JOIN
ПТС_VIN ON VIN.VIN = ПТС_VIN.VIN INNER JOIN
Владелец_ПТС ON ПТС_VIN.Номер_ПТС = Владелец_ПТС.Номер_ПТС INNER JOIN
Владелец ON Владелец_ПТС.ID_Владелец = Владелец.ID_Владелец
WHERE ((Номер_Двигателя.Марка = 'Saab') OR (Номер_Двигателя.Марка = 'Volvo'))
7. Запрос о наличии ОСАГО и КАСКО
SELECT Владелец.Фамилия, Владелец.Имя, Владелец.Отчество, Водитель.Номер_Прав, Страховка.КАСКО
FROM Владелец INNER JOIN
Водитель ON Владелец.ID_Владелец = Водитель.ID_Владелец INNER JOIN
Страховка ON Водитель.ID_Страховка = Страховка.ID_Страховка
WHERE (Страховка.КАСКО = N'да')
Список литературы
1. С.М. Диго "Базы данных: проектирование и использование" Москва 2005
2. Лекционные материалы по курсу БД