Разработка приложения баз данных для информационных систем
Рисунок 2.1 — Диаграмма базы данных Данные таблицы соответствуют требованиям нормализации реляционных БД. Таблицы находятся в 1НФ, т. к. все их поля являются простыми (неделимыми), нет повторяющихся полей и каждый столбец таблиц хранит одно-единственное значение и не является ни списком, ни множеством значений. Таблицы находятся во 2НФ, т. к. они находятся в 1НФ, имеют простые первичные ключи… Читать ещё >
Разработка приложения баз данных для информационных систем (реферат, курсовая, диплом, контрольная)
1. Логическая структура базы данных
Изучив заданную предметную область можно выделить 9 основных сущностей: автомобили, автомобили в угоне, владельцы, должности сотрудников, звания сотрудников ГАИ, марки автомобилей, послужной список сотрудников, регистрация и сотрудники. Каждая из них содержит свои атрибуты определённого типа данных.
Описание всех сущностей и их атрибутов приведено в таблице 1.1.
Таблица 1.1 — Описание сущностей
Название сущности | Название атрибута | Тип данных | Наличие ключа | |
Автомобили | Марка | Текстовый | Внешний ключ | |
Фото | Текстовый | ; | ||
Номер_кузова | Числовой | ; | ||
Номер_двигателя | Числовой | ; | ||
Номер_тех_паспорта | Числовой | Первичный ключ | ||
Дата_выпуска | Дата | ; | ||
Дата_регистрации | Дата | ; | ||
Дата_последнего_ТО | Дата | ; | ||
Цвет | Текстовый | ; | ||
Описание | Текстовый | ; | ||
Автомобили в угоне | Регистрационный_номер | Числовой | ; | |
Дата_угона | Дата | ; | ||
Дата_заявления_об_угоне | Дата | ; | ||
Вид_страховки | Текстовый | ; | ||
Обстоятельства_угона | Текстовый | ; | ||
Отметка_о_нахождении | Текстовый | ; | ||
Дата_нахождения | Дата | ; | ||
Марка | Текстовый | ; | ||
Номер_двигателя | Числовой | ; | ||
Ф.И.О._владельца | Текстовый | ; | ||
Код_сотрудника_ведущего_дело | Числовой | Внешний ключ | ||
Специальное | Счётчик | Первичный ключ | ||
Дело_номер | Счётчик | ; | ||
Владельцы | Дата_рождения | Дата | ; | |
Адрес | Текстовый | ; | ||
Ф.И.О._владельца | Текстовый | Первичный ключ | ||
Паспортные_данные | Текстовый | ; | ||
Номер_водит_удостоверения | Числовой | ; | ||
Дата_выдачи_удостоврения | Дата | ; | ||
Срок_действия_удостоверения | Дата | ; | ||
Категория | Текстовый | ; | ||
Доп_информация | Текстовый | ; | ||
Должности сотрудников | Код_должности | Числовой | Первичный ключ | |
Наименование_должности | Текстовый | ; | ||
Оклад | Денежный | ; | ||
Обязанности | Текстовый | ; | ||
Требования | Тестовый | ; | ||
Звания сотрудников ГАИ | Звание | Текстовый | Первичный ключ | |
Надбавка | Денежный | ; | ||
Обязанности | Текстовый | ; | ||
Требования | Текстовый | ; | ||
Марки автомобилей | Марка | Текстовый | Первичный ключ | |
Фирма_производитель | Текстовый | ; | ||
Страна_производитель | Текстовый | ; | ||
Дата_начала_производства | Дата | ; | ||
Дата_окончания_производства | Дата | ; | ||
Характеристики | Текстовый | ; | ||
Категория | Текстовый | ; | ||
Описание | Текстовый | ; | ||
Послужной список сотрудников | Код_сотрудника | Числовой | Внешний ключ | |
Код_должности | Числовой | ; | ||
Дата_занятия_должности | Дата | ; | ||
Краткая_характ_работы | Текстовый | ; | ||
Специальное | Счётчик | Первичный ключ | ||
Название сущности | Название атрибута | Тип данных | Наличие ключа | |
Регистрация | Код_регистрации | Числовой | ; | |
Регистрационный_номер | Числовой | ; | ||
Дата_регистрации | Дата | ; | ||
Ф.И.О._владельца | Текстовый | Внешний ключ | ||
Код_сотрудника_выполн_регистрацию | Числовой | Внешний ключ | ||
Марка | Текстовый | ; | ||
Номер_тех_паспорта | Числовой | ; | ||
Номер_кузова | Числовой | ; | ||
Номер_двигателя | Числовой | ; | ||
Специальное | Счётчик | Первичный ключ | ||
Сотрудники | Код_сотрудника | Числовой | Первичный ключ | |
Ф.И.О._сотрудника | Текстовый | ; | ||
Фото | Текстовый | ; | ||
Дата_рождения | Дата | ; | ||
Пол | Текстовый | ; | ||
Адрес | Текстовый | ; | ||
Паспортные_данные | Текстовый | ; | ||
Телефон | Числовой | ; | ||
Образование | Текстовый | ; | ||
Код_должности | Числовой | Внешний ключ | ||
Звание | Текстовый | Внешний ключ | ||
Между сущностями определяются связи. Все связи типа один ко многим:
— связь между сущностями «Сотрудники» (на стороне один) и «Послужной список сотрудников» (на стороне многие) по полю «Код_сотрудника»;
— связь между сущностями «Сотрудники» (на стороне один) и «Автомобили в угоне» (на стороне многие) по полю «Код_сотрудника»;
— связь между сущностями «Сотрудники» (на стороне один) и «Регистрация» (на стороне многие) по полю «Код_сотрудника»;
— связь между сущностями «Звания сотрудников ГАИ» (на стороне один) и «Сотрудники» (на стороне многие) по полю «Звание»;
— связь между сущностями «Должности сотрудников» (на стороне один) и «Сотрудники» (на стороне многие) по полю «Код должности»;
— связь между сущностями «Владельцы» (на стороне один) и «Регистрация» (на стороне многие) по полю «Ф.И.О._владельца»;
— связь между сущностями «Марки автомобилей» (на стороне один) и «Автомобили» (на стороне многие) по полю «Марка»;
— связь между сущностями «Автомобили» (на стороне один) и «Доп таблица» (на стороне многие) по полю «Номер_тех_паспорта»;
связь между сущностями «Владельцы» (на стороне один) и «Доп таблица» (на стороне многие) по полю «Ф.И.О._владельца»;
Так же связи могут быть идентифицирующими или не идентифицирующими. Если задана идентифицирующая связь, то это значит, что каждому экземпляру дочерней сущности должен соответствовать хотя бы один экземпляр родительской[3]. Не идентифицирующая связь, означает, что экземпляр дочерней сущности может быть идентифицирован без использования экземпляра родительской сущности[3]. Все первичные ключи в сущностях являются простыми — состоят из одного поля и однозначно идентифицируют запись.
Логическая структура базы данных приведена на рисунке 1.1.
Рисунок 1.1 — Логическая структура базы данных
2. Физическая структура базы данных. Аппаратное и программное обеспечение системы
2.1 Физическая структура базы данных
По созданной логической структуре была разработана база данных средствами СУБД MS SQL Server. В неё входят 10 таблиц: автомобили, автомобили в угоне, владельцы, должности сотрудников, доп. таблица, звания сотрудников ГАИ, марки автомобилей, послужной список сотрудников, регистрация и сотрудники. В свою очередь таблицы содержат столбцы.
В таблицу «Автомобили» входят поля: «Марка» типа varchar (20)," Фото" типа varchar (MAX), «Номер_кузова» типа int, «Номер_двигателя» типа int, «Номер_тех_паспорта» типа int, «Дата_выпуска» типа datetime, «Дата_регистрации» типа datetime, «Дата_последнего_ТО» типа datetime, «Цвет» типа varchar (20), «Описание» типа text. Пустые значения разрешены только в столбцах «Фото» и «Описание».
В таблицу «Автомобили в угоне» — «Регистрационный_номер» типа int, «Дата_угона» типа datetime, «Дата_заявления_об_угоне» типа datetime, «Вид_страховки» типа varchar (20), «Обстоятельства_угона» типа text, «Отметка_о_нахождении» типа varchar (20), «Дата_нахождения» типа datetime, «Марка» типа varchar (20), «Номер_двигателя» типа int, «Ф.И.О._владельца» типа varchar (50), «Код_сотрудника_ведущего_дело» типа int, «Специальное» типа int, «Дело_номер» типа int. В столбце «Дата_нахождения» разрешены пустые значения.
В таблицу «Владельцы» — «Дата_рождения» типа datetime, «Адрес» типа varchar (20), «Ф.И.О._владельца» типа varchar (50), «Паспортные_данные» типа varchar (20), «Номер_водит_удостоверения» типа int, «Дата_выдачи_удостоврения» типа datetime, «Срок_действия_удостоверения» типа datetime, «Категория» типа varchar (20), «Доп_информация» типа text. В столбце «Доп_информация» разрешены пустые значения.
В таблицу «Должности сотрудников» — «Код_должности» типа int, «Наименование_должности» типа varchar (20), «Оклад» типа money, «Обязанности» типа text, «Требования» типа text. Пустые значения разрешены только в столбцах «Обязанности» и «Требования».
В таблицу «Доп таблица» — «Ф.И.О._владельца» типа varchar (50), «Номер_тех_паспорта» типа int, «Специальное» типа int.
В таблицу «Звания сотрудников ГАИ» — «Звание» типа varchar (20), «Надбавка» типа money, «Обязанности» типа text, «Требования» типа text.
Пустые значения разрешены только в столбцах «Обязанности» и «Требования».
В таблицу «Марки автомобилей» — «Марка» типа varchar (20), «Фирма_производитель» типа varchar (20), «Страна_производитель» типа varchar (20), «Дата_начала_производства» типа datetime, «Дата_окончания_производства» типа datetime, «Характеристики» типа text, «Категория» типа varchar (20), «Описание» типа text. Пустые значения разрешены только в столбцах «Характеристики» и «Описание».
В таблицу «Послужной список сотрудников» — «Код_сотрудника» типа int, «Код_должности» типа int, «Дата_занятия_должности» типа datetime, «Краткая_характ_работы» типа text, «Специальное» типа int. В столбце «Краткая_характ_работы» разрешены пустые значения.
В таблицу «Регистрация» — «Код_регистрации» типа int, «Регистрационный_номер» типа int, «Дата_регистрации» типа datetime, «Ф.И.О._владельца» типа varchar (50), «Код_сотрудника_выполн_регистрацию» типа int, «Марка» типа varchar (20), «Номер_тех_паспорта» типа int, «Номер_кузова» типа int, «Номер_двигателя» типа int, «Специальное» типа int.
В таблицу «Сотрудники» — «Код_сотрудника» типа int, «Ф.И.О._сотрудника» типа varchar (50), «Фото» типа varchar (MAX), «Дата_рождения» типа datetime, «Пол» типа varchar (20), «Адрес» типа varchar (20), «Паспортные_данные» типа varchar (20), «Телефон» типа int, «Образование» типа varchar (20), «Код_должности» типа int, «Звание» типа varchar (20). Пустые значения разрешены только в столбцах «Фото» и «Звание».
Диаграмма созданной базы данных приведена на рисунке 2.1.
Рисунок 2.1 — Диаграмма базы данных Данные таблицы соответствуют требованиям нормализации реляционных БД. Таблицы находятся в 1НФ, т. к. все их поля являются простыми (неделимыми), нет повторяющихся полей и каждый столбец таблиц хранит одно-единственное значение и не является ни списком, ни множеством значений. Таблицы находятся во 2НФ, т. к. они находятся в 1НФ, имеют простые первичные ключи и каждое неключевое поле функционально зависит от первичного ключа. Таблицы находится в 3НФ, т. к. они находятся во 2НФ и все не ключевые поля являются взаимно-независимыми.
2.2 Создание представлений, хранимых процедур, пользовательских функций, триггеров
Сведения о всех сотрудниках и их должностях:
SELECT Сотрудники.Ф.И.О._сотрудника, Сотрудники. Дата_рождения, Сотрудники. Пол, Сотрудники. Адрес, Сотрудники. Паспортные_данные, Сотрудники. Телефон, Сотрудники. Образование, Сотрудники. Звание, Должности_сотрудников. Наименование_должности FROM Сотрудники INNER JOIN Должности_сотрудников ON Сотрудники. Код_должности = Должности_сотрудников. Код_должности
Сведения о сотрудниках ведущих текущие дела об угоне:
SELECT Автомобили_в_угоне. Дело_номер, Сотрудники.Ф.И.О._сотрудника FROM Автомобили_в_угоне INNER JOIN Сотрудники ON Автомобили_в_угоне. Код_сотрудника_ведущего_дело = Сотрудники. Код_сотрудника
Сведений обо всех зарегистрированных автомобилях:
SELECT Регистрационный_номер, Дата_регистрации, Ф.И.О._владельца, Марка, Номер_тех_паспорта, Номер_кузова, Номер_двигателя FROM Регистрация
Сведения об автомобиле определённого владельца:
SELECT Регистрационный_номер, Дата_регистрации, Ф.И.О._владельца, Марка, Номер_тех_паспорта, Номер_кузова, Номер_двигателя FROM Регистрация WHERE (Ф.И.О._владельца = @Ф.И.О._владельца)
Сведения об автомобилях с определённой маркой:
SELECT Регистрационный_номер, Дата_регистрации, Ф.И.О._владельца, Марка, Номер_тех_паспорта, Номер_кузова, Номер_двигателя FROM Регистрация WHERE (Марка = @Марка)
Сведения об автомобилях с определённым номером двигателя:
SELECT Регистрационный_номер, Дата_регистрации, Ф.И.О._владельца, Марка, Номер_тех_паспорта, Номер_кузова, Номер_двигателя FROM Регистрация WHERE (Номер_двигателя = @Номер_двигателя)
Сведения об автомобилях зарегистрированных в заданный промежуток времени:
SELECT Регистрационный_номер, Дата_регистрации, Ф.И.О._владельца, Марка, Номер_тех_паспорта, Номер_кузова, Номер_двигателя FROM Регистрация WHERE (Дата_регистрации BETWEEN @Param1 AND @Param2)
Сведения обо всех угнанных автомобилях:
SELECT Регистрационный_номер, Дата_угона, Дата_заявления_об_угоне, Вид_страховки, Обстоятельства_угона, Отметка_о_нахождении, Дата_нахождения, Марка, Номер_двигателя, Ф.И.О._владельца FROM Автомобили_в_угоне
Сведения о автомобиле угнанном у определённого владельца:
SELECT Ф.И.О._владельца, Марка, Регистрационный_номер, Номер_двигателя, Дата_угона, Дата_заявления_об_угоне, Вид_страховки, Обстоятельства_угона FROM Автомобили_в_угоне WHERE (Ф.И.О._владельца = @Ф.И.О._владельца)
Сведения о угнанном автомобиле с определённой маркой:
SELECT Ф.И.О._владельца, Марка, Регистрационный_номер, Номер_двигателя, Дата_угона, Дата_заявления_об_угоне, Вид_страховки, Обстоятельства_угона FROM Автомобили_в_угоне WHERE (Марка = @Марка)
Сведения о автомобилях угнанных в определённую дату:
SELECT Ф.И.О._владельца, Марка, Регистрационный_номер, Номер_двигателя, Дата_угона, Дата_заявления_об_угоне, Вид_страховки, Обстоятельства_угона FROM Автомобили_в_угоне WHERE (Дата_угона = @Дата_угона)
Сведения о автомобилях угнанных с определённым номером двигателя:
SELECT Ф.И.О._владельца, Марка, Регистрационный_номер, Номер_двигателя, Дата_угона, Дата_заявления_об_угоне, Вид_страховки, Обстоятельства_угона FROM Автомобили_в_угоне WHERE (Номер_двигателя = @Номер_двигателя)
Сведения о автомобилях угнанных в заданный промежуток времени:
SELECT Ф.И.О._владельца, Марка, Регистрационный_номер, Номер_двигателя, Дата_угона, Дата_заявления_об_угоне, Вид_страховки, Обстоятельства_угона FROM Автомобили_в_угоне WHERE (Дата_угона BETWEEN @Param1 AND @Param2)
Список владельцев не имеющих водительских удостоверений:
SELECT Ф.И.О._владельца, Дата_выдачи_удостоврения, Срок_действия_удостоверения FROM Владельцы WHERE (Срок_действия_удостоверения < @Срок_действия_удостоверения) Также в данной базе данных были разработаны функции, возвращающие табличные значения:
— выводит сведения о сотрудниках с определённым званием. SQL-код функции приведен на рисунке 2.2;
— выводит сведения о сотрудниках с определённым образованием. SQL-код функции приведен на рисунке 2.3.
Рисунок 2.2 — SQL-код табличной функции Inline
Рисунок 2.3 — SQL-код табличной функции Multi-statement
2.3 Аппаратное и программное обеспечение системы
Разработанная база данных содержит одну файловую PRIMARY, которая создаётся по умолчанию и состоит из двух основных файлов:
— kursa4. mdf — файл самой базы данных. В нём хранятся непосредственно данные и структура базы данных. Размер данного файла 3МБ, рост файла неограничен;
— kursa4_log.ldf — журнал транзакций. Размер журнала 1 МБ, рост ограничивается лишь свободной памятью на жёстком диске.
Перечислим минимальные программные и аппаратные требования серверной части для работы с ИС [4]:
— процессор: IntelP4 — 1GHz;
— память (ОЗУ): 512 MB;
— операционная система: Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Vista; Windows Vista Service Pack 1; Windows 7; Windows XP Service Pack 2; Windows XP Service Pack 3.
Перечислим минимальные программные и аппаратные требования клиентской части для работы с ИС:
— процессор: Pentium III — совместимый процессор с тактовой частотой 1 GHz;
— оперативная память (RAM): 256 MB;
— объём жёсткого диска (HDD): 500 MB;
— монитор: видеоадаптер SuperVGA с разрешением 800×600 или выше
— операционная система: Windows XP; Windows Server 2003; Windows Vista; Windows Server 2008.
3. Реализация интерфейса пользователя
3.1 Описание основной структуры ASP.NET документов
Интерфейс пользователя был разработан с помощью технологии ASP.NET [5], предоставляемой Microsoft. Она позволяет быстро, эффективно и просто создать полноценное и многофункциональное Web — приложение. Структура приложений разрабатываемых с помощью данной технологии позволяет разграничивать логику и содержимое страниц, что является очень удобной возможностью.
Приложение состоит из набора ASP.NET страниц и условно делится на 2 части, а именно вывод обработанных данных и редактирование данных из таблиц. Все страницы имеют единый стиль оформления. Это достигается путём использования ещё одной удобной возможностью технологии ASP.NET-MasterPage. Она позволяет создать страницу-шаблон, которая впоследствии может быть унаследована другими страницами. Это означает, что у страницы-шаблона есть специальный тег — ContentPlaceHolder, в который помещается содержимое страниц с наполнением, в результате чего страница отображается как единое целое. Здесь можно провести некую аналогию с фреймами в HTML. Для разметки MasterPage страницы использовались обычные HTML таблицы и CSS (каскадные таблицы стилей). Пример такой страницы приведен в приложении А.
Все созданные страницы связанны между собой серверными элементами управления, таковыми являются компоненты LinkButton и Button (приложение Б)
3.2 Создание ASP.NET документов
Любая ASP.NET страница состоит из двух частей. Первая часть — Design, представляет собой пустое пространство, на котором можно разместить элементы управления. Вторая часть — Source, представляет собой код языка ASP.NET. Добавление нового кода, происходит при добавлении нового объекта в окне Design, либо при ручном заполнении. Для того чтобы добавить новый элемент в окно Design, его необходимо выбрать из вкладки Toolbox, и перетащить на форму. По аналогии с C#, имеется окно Properties, в котором можно задать те или иные параметры для элементов управления, или задать те или иные события.
Каждая страница начинается со следующего кода: «<% Page Language=» текущий язык программирования»%>». Где тег «