Реализация базы данных и серверной части информационной системы "ГАИ" средствами СУБД Microsoft SQL Server

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?гут начинаться с 1 и не должны превышать число 9999, угнанный автомобиль не может быть незарегистрированным, ввиду чего все требования для отношения зарегистрированных автомобилей справедливы для данного отношения.

 

1.4. Разработка проекта базы данных

 

Разработанная структура базы данных может быть представлена в следующем виде:

Рис.1. Структура БД

 

Таблица 1. Автомобили

Имя столбцаСодержательное описаниеТип данныхРаз-мер- ностьОбласть допустимых значенийВозможность значения NullРольПримерAM_CODEКод автомобиляЦелый40001-9999НетPK1234AM_DRIVER_CODEКод водителяЦелый40001-9999НетFK1234AM_MARK_CODEКод маркиЦелый40001-9999НетFK1234AM_REG_NUMBERГосномерСимвольный8А-Я, 0-9НетА001АА01AM_BODY_NUMBERНомер кузоваЦелый9000000001-999999999Нет123456789AM_ENGINE_NUMBERНомер двигателяЦелый9000000001-999999999Нет123456789AM_TECHPASSPORT_NUMBERНомер техпаспортаЦелый9000000001-999999999Нет123456789AM_BIRTHDATEДата выпускаДата10Нет01.01.2000AM_REGISTRATION_DATEДата регистрацииДата10Нет01.01.2000AM_COLORцветСимвольный7А-Я, 0-9НетБелый

Таблица 2. Автомобили в угоне

Имя столбцаСодержательное описаниеТип данныхРаз-мер- ностьОбласть допустимых значенийВозможность значения NullРольПримерJC_CODEКод угонаЦелый40001-9999НетPK1234JC_JACKDATEДата угонаЦелый10Нет01.01.2000JC_REPORT_DATEДата подачи заявкиДата10Нет01.01.2000JC_AM_CODEКод угнанного а/мЦелый40001-9999НетFK1234JC_DRIVER_CODEКод владельцаЦелый40001-9999НетFK1234JC_ADDITIONALДоп. СведенияСимвольный30А-Я, 0-9ДаНочьюJC_FOUNDОтметка о нахожденииЛогический10-1Да1JC_FOUND_DATEДата нахожденияДата10Да01.01.2000

Таблица 3. Водители (владельцы а/м)

Имя столбцаСодержательное описаниеТип ДанныхРаз-мер- ностьОбласть допустимых значенийВозможность значения NullРольПримерDRIVER_CODEКод водителяЦелый40001-9999НетPK1234DRIVER_FIOФИОСимвольный33А-Я, 0-9НетБанников Денис ПавловичDRIVER_BIRTHDATEДата рожденияДата10Нет06.11.1991DRIVER_ADRESSАдресСимвольный30А-Я, 0-9НетОтцовский пер. 1-1DRIVER_PASSPORTНомер паспортаЦелый101111111111-9999999999Нет5602123456DRIVER_RULESНомер вод. удостовер.Символьный12Нет123А4569Р1DRIVER_RULES_DATEДата выдачи правДата10Нет06.11.2009DRIVER_CATEGORYКатегория правСимвольный1А-ЯНетВ

Таблица 4. Марки автомобилей

Имя столбцаСодержательное описаниеТип ДанныхРаз-мер- ностьОбласть допустимых значенийВозможность значения NullРольПримерMARK_CODEКод маркиЦелый40001-9999НетPK1234MARK_NAMEНазвание маркиСимвольный30А-ЯНетЛадаFIRM_CODEКод фирмыЦелый40001-9999НетFK1234COUNTRY_CODEКод страныЦелый40001-9999НетFK1234

Таблица 5. Фирмы

Имя столбцаСодержательное описаниеТип ДанныхРаз-мер- ностьОбласть допустимых значенийВозможность значения NullРольПримерFIRM_CODEКод фирмыЦелый40001-9999НетPK1234FIRM_NAMEНазвание фирмыСимвольный30А-ЯНетAudi

Таблица 6. Страны

Имя столбцаСодержательное описаниеТип ДанныхРаз-мер- ностьОбласть допустимых значенийВозможность значения NullРольПримерCOUNTRY_CODEКод страныЦелый40001-9999НетPK1234COUNTRY_NAMEНазвание страныСимвольный30А-ЯНетРоссия

1.5 Программная реализация проекта базы данных

 

Программная реализация проекта базы данных выполнена с помощью операторов языка SQL CREATE, DROP, UPDATE, INSERT

Текст программы создания базы данных приведен в приложении А.

Для спроектированной базы данных средствами СУБД Microsoft SQL Server 2008 R2 построена диаграмма, которая приведена в приложении Б.

Текст программы ввода тестовых данных приведен в приложении В.

 

1.6 Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных

 

Для облегчения работы с БД и реализации сложных ограничений были разработаны следующие процедуры:

1.Процедура просмотра кодов белых автомобилей.

Данная процедура выводит коды всех белых автомобилей.PROC PROC1AM.AM_CODE AS "KOD"AMAM.AM_COLOR=WHITE

Выполнение и результат:

Имеем:

SELECT * FROM AM

 

Рис. 2

 

EXEC PROC1

Получим:

 

Рис. 3

 

. Процедура поиска автомобиля по номеру

Данная процедура выводит цвет и дату выпуска автомобиля с указанным номером

CREATE PROC PROC2

@NOMER char(40)AM.AM_REG_NUMBER AS "HOMEP", AM.AM_BIRTHDATE AS DATA BbIIIYSKA, AM.AM_COLOR AS LI,BETAMAM.AM_REG_NUMBER=@NOMER

Выполнение и результат:

EXEC PROC2 A001AA01

Получим:

 

Рис. 4

 

.Процедура удаления строки автомобиля по коду.

Данная процедура удаляет автомобиль по его коду.

CREATE PROC PROC3

@CODE_AM INTAMAM.AM_CODE=@CODE_AM

Выполнение и результат:

 

Рис. 5

PROC3 7;* FROM AM;

Получим:

 

Рис. 6

 

1.7 Разработка триггеров для поддержки сложных ограничений целостности в базе данных

 

Для поддержания логической целостности базы данных и реализации сложных ограничений был разработан следующие триггеры:

1)Данный триггер производит удаление всех связей из таблиц автомобилей и угнанных автомобилей при удалении владельца.

Событие: в базе данных производится удаление строки владельца.

Предусмотренные действия: строка будет удалена из таблицы владельцев, будут удалены соответствующие строки из таблиц угона и автомобилей.

CREATE TRIGGER TRIGGERINSERTDRIVERS FOR DELETE@id = DRIVER_CODE FROM DELETEDFROM JACKED_CARS WHERE JC_DRIVER_CODE = @idFROM AM WHERE AM_DRIVER_CODE = @idDRIVER AND DATA DELETED

)Данный триггер не позволяет внести в таблицу владельцев повторяющуюся запись.

Событие: в базу данных добавляется запись о водителе с ФИО, которые уже имеются в таблице БД.

Предусмотренные действия: SQL выдаёт сообщение, что такая запись уже есть.TRIGGER TRIGGERINSERTDRIVERS FOR INSERT@FIO CHAR(33), @FIO1 CHAR(33)@FIO=DRIVER_FIO FROM INSERTED@FIO1=DRIVER_FIO FROM DRIVERS WHERE DRIVER_FIO=@FIO@FIO=@FIO1TRANSACTIONTHIS DRIVER ALREADY EXISTSDRIVER ADDED

 

1.8 Запросы

 

Все запросы на получение практически любого количества данных из одной и