Наименование поля
|
Формат поля
|
Содержимое поля
|
КодСотрудника
|
числовой, счетчик
|
уникальный код сотрудника
|
ФИО
|
текстовый
|
ФИО сотрудника
|
3.3 SQL-код по созданию таблиц и описания
ограничений
/*
Удаление связей
*/TABLE БилетFK_Билет_Покупатель, FK_Билет_Рейсы
goTABLE БагажFK_Багаж_БилетTABLE РейсыFK_Рейсы_Расписание,FK_Рейсы_Самолеты
goTABLE СамолетыFK_Самолеты_Марка,FK_Самолеты_АвиакомпанииTABLE ЭкипажFK_Экипаж_Рейсы,FK_Экипаж_Сотрудники
/*
Создание и удаление таблиц с помощью SQL-запросов.
*/table Авиакомпанииtable Багажtable Билетtable Покупательtable Маркаtable
Расписаниеtable Рейсыtable Самолетыtable Сотрудникиtable Экипажtable Покупатель
(
КодПокупателя int primary key identity,
ФИО
varchar(50) not null,
ДатаРождения datetime not null,
СерияПаспорта varchar(2) not null,
НомерПаспорта int not null
)table Билет
(
КодБилета int primary key identity,
КодПокупателя int not null,
КодРейса
int not null,
ДатаПродажи datetime not null,
Цена
money not null,
Место
int not null
)table Багаж
(
КодБагажа int primary key identity,
КодБилета int not null,
ТипБагажа nvarchar(25) not null,
Вес int
not null
)table Расписание
(
КодРасписания int primary key identity,
НомерМаршрута int not null,
ПунктВылета varchar(15) not null,
ВремяОтправления datetime not null
)table Рейсы
(
КодРейса
int primary key identity,
ДатаВылета datetime not null,
КодРасписания int not null,
КодСамолета int not null,
)table Самолеты
(
КодСамолета int primary key identity,
НомерСамолетаint not null,
КодМаркиint
not null,
ГодВыпуска datetime not null,
КодАвиакомпании int not null
)table Марка
(
КодМаркиint
primary key identity,
Названиеvarchar(20)
)table Сотрудники
(
КодСотрудникаint primary key identity,
ФИО
varchar(50),
)table Экипаж
(
КодЭкипажа int primary key identity,
КодРейсаint
not null,
КодСотрудникаint not null,
Должностьvarchar(20) not null
)table Авиакомпании
(
КодАвиакомпании int primary key identity,
Название
varchar(20) not null,
Страна
varchar(15) not null
)
/*
Определение связей между таблицами
*/
go
ALTER TABLE Билет ADD
CONSTRAINT FK_Билет_Покупатель
FOREIGN KEY(КодПокупателя)
REFERENCES Покупатель(КодПокупателя),
CONSTRAINT FK_Билет_Рейсы
FOREIGN KEY(КодРейса)Рейсы(КодРейса)TABLE Багаж ADDFK_Багаж_БилетKEY(Кодбилета)Билет(КодБилета)TABLE Рейсы ADDFK_Рейсы_Расписание KEY(КодРасписания)
REFERENCES Расписание(КодРасписания),
CONSTRAINT FK_Рейсы_СамолетыKEY(КодСамолета)Самолеты(КодСамолета)TABLE Самолеты ADDFK_Самолеты_МаркаKEY(КодМарки) Марка(КодМарки),
CONSTRAINT FK_Самолеты_Авиакомпании
FOREIGN KEY(КодАвиакомпании)
REFERENCES Авиакомпании(КодАвиакомпании)
goTABLE Экипаж
ADDFK_Экипаж_РейсыKEY(КодРейса)Рейсы(КодРейса),FK_Экипаж_СотрудникиKEY(КодСотрудника) Сотрудники(КодСотрудника)
4. Схема
диалога пользователя с разработанным приложением
4.1
Корректировка таблиц-справочников
Таблицы-справочники содержат в себе основную информацию аэропорта. В
данном приложении это информация о покупателях, расписание полетов, экипаж
самолета, авиакомпании и марка самолета.
Для просмотра таблиц справочников необходимо выбрать соответвующий пункт
меню справочников (рисунок 4.1).
Рисунок 4.1 - Пункты меню для выбора таблиц-справочников
Каждую таблицу можно открыть (рисунок 4.2).
Рисунок 4.2 - Открытие справочника
Все записи можно изменить или добавить новую (рисунок 4.3).
Рисунок 4.3 - Изменение и добавление записи
Помимо этого, запись из таблицы-справочника можно удалить (рисунок 4.5)
при отсутствия связанной записи в дочерней таблице. Перед удалением появится
информационное окно (рисунок 4.4).
Каскадное удаление не предусмотрено в данной БД для предотвращения потери
данных. Удалить запись можно при условии, если на эту запись не ссылаются
другие таблицы.
Рисунок 4.4 - Предупреждение об удалении записи
Рисунок 4.5 - Результат удаления записи
.2 Основная
функциональность приложения по ведению базы данных
Помимо таблиц-справочников существуют дочерние таблицы. В них содержится
дополнительная информация о таблицах-справочниках (рисунок 4.6).
Рисунок 4.6 - Дочерние таблицы
Дочерние таблицы хранят в себе данные о билетах покупателя, его багаже,
информацию о рейсах, самолетах и экипаже рейса.
Рисунок 4.7 - Выпадающий список
Любое поле можно изменить (рисунок 4.8).
Рисунок 4.8 - Изменение записи
В каждую таблицу можно добавить запись (рисунок 4.9).
Рисунок 4.9 - Добавление записи
.3 Построение
печатных форм
Для построения отчетов предназначен пункт меню (рисунок 4.10).
Рисунок 4.10 - Выбор печатной формы
В разработанной БД присутствует 5 отчетов:
1. Авиакомпании (рисунок 4.11);
. Информация о покупателе (рисунок 4.12);
. Годовой отчет продажи билетов (рисунок 4.13);
. Самолеты авиакомпаний (рисунок 4.14);
. Информация о покупателях (рисунок 4.15).
Рисунок 4.11- Отчет "Авиакомпании"
Для создания отчета Информация о покупателях используется запрос
Информация о покупателях. Текст отчета ниже:
ФИО,
ДатаПродажи,
ЦенаПокупатель, БилетПокупатель.кодпокупателя=Билет.кодпокупателя
and введите_год=Year(ДатаПродажи);
Рисунок 4.12 - Отчет "Покупатели"
Для создания отчета Годовой отчет о продажи билетов используются запрос
Годовой отчет по продажам. Текст запроса описан ниже:
ФИО,
ДатаПродажи,
ЦенаПокупатель, БилетПокупатель.кодпокупателя=Билет.кодпокупателя
and введите_год=Year(ДатаПродажи)
Рисунок 4.13 - Отчет "Годовой отчет продажи билетов"
Рисунок 4.14 - Отчет "Самолеты Авиакомпаний"
Для создания отчета был использован запрос:
ИнфоПокупатель Сидоров
Рисунок 4.15 - Отчет "Информация о покупателе"
Формирования запроса для отчета Годовой отчет продажи билетов:
ФИО,
ДатаПродажи,
ЦенаПокупатель, БилетПокупатель.кодпокупателя=Билет.кодпокупателя
and введите_год=Year(ДатаПродажи);
Формирования запроса для отчета Информация о покупателях:
Покупатель.ФИО,
Покупатель.СерияПаспорта,
Покупатель.НомерПаспорта,
Покупатель.ДатаРождения,
Билет.ДатаПродажи,
Билет.Цена,
Багаж.ВесБилет, Багаж,
Покупатель(((Покупатель.кодПокупателя)=[Билет].[КодПокупателя])((Билет.КодБилета)=[Багаж].[КодБилета]));
4.4
Дополнительная функциональность приложения
Использование отсортированных записей упрощает поиск и обработку данных.
В данном приложении используется собственная индексация в таблице Авиакомпании.
Сортировка происходит по Названию и страны авиакомпании.
При добавлении новой записи (рисунок 4.16).
Рисунок 4.16 - Добавление новой записи
Запись добавляется в конец списка, потому что данные не обновлены на
сервере. Для этого нужно нажать на кнопку обновить все (рисунок 4.17).
Рисунок 4.17 - Обновление записей
После обновления запись займет соответствующее место в списке (рисунок
4.18).
Рисунок 4.18 - Отсортированный список
5.
Использованные средства MS SQL Server
5.1
Использование представлений
Для вывода на экран монитора всех таблиц используются представления
приведенные в таблице 5.1.
Таблица 5.1 - Представления
Название
|
Назначение
|
Где используется
|
1 СамолетыИнфо
|
Выборка полей из таблиц
|
Просмотр таблицы самолеты, отчет самолетов авиакомпаний
|
Выборка полей из таблиц
|
Просмотр таблицы Багаж
|
3 БилетРейсы
|
Выборка полей из таблиц
|
Просмотр таблицы Билет,Экипаж
|
Ниже приведен текст SQL,
создающий представления:
/* представление для отображения самолетов без кодов родителей*/
goview СамолетыИнфоview СамолетыИнфо
asНомерСамолета,
Марка.Название as Марка,
ГодВыпуска,
Авиакомпании.Название as НазвАвиа,
СтранаСамолеты,Марка,АвиакомпанииСамолеты.КодМарки=Марка.КодМаркиСамолеты.КодАвиакомпании=
Авиакомпании.КодАвиакомпании
/*представление для таблицы Багаж*/
go
drop view
ОбладательБагажа
go
create view
ОбладательБагажа
asБагаж.КодБилета,
ФИО,
ДатаПродажи,
ТипБагажа,
Вес
from
Покупатель,Билет,Багаж
where
Покупатель.КодПокупателя=Билет.КодПокупателя
and
Билет.КодБилета=Багаж.КодБилета
/* представление для таблицы Билет,Экипаж*/
goview БилетРейсыview БилетРейсы
select
Рейсы.КодРейса,
Расписание.КодРасписания,
ПунктВылета,
ПунктПрилета,
ВремяОтправления,
ДатаВылета
from
Билет,Рейсы,Расписание
where
Билет.КодРейса=Рейсы.КодРейса
and
Рейсы.КодРасписания=Расписание.КодРасписания
5.2
Использование хранимых процедур
Таблица 5.2 - Хранимые процедуры
Название
|
Назначение
|
Где используется
|
1 ИнфоПокупатель
|
Поиск покупателя по ФИО
|
Для отчета информации о покупателе
|
Ниже приведен текст SQL,
создающий процедуры:
/*процедура для отображения информации о покупателе*/proc
ИнфоПокупательprocedure ИнфоПокупатель @ФИО varchar(40)ФИО,
ДатаРождения,
Цена,
Место,
ВесПокупатель,Билет,БагажПокупатель.КодПокупателя=Билет.КодПокупателяБилет.КодБилета=Багаж.КодБилетаФИО=@ФИО
Заключение
В результате было разработано база данных управлением аэропорта.
Приложение создано в среде MS Acces 2013 и MS SQL SERVER 2008.
В ходе выполнения создания приложения были выполнены следующие действия:
- База данных приведена к третьей нормальной форме;
- Разработаны процедуры, представления для выполнения действий
на сервере, чтобы снизить нагрузку на пользовательский компьютер;
- Сделан интуитивно понятливый интерфейс;
- Созданы печатные отчеты.
Данную базу данных можно легко изменять для выполнения самых разнообразных
задач.
Список
использованных источников
1 Винкоп, С. Использование Microsoft SQL Server 7.0 : специальное издание / С. Винкоп. - СПб. :
Издательский дом "Вильямс", 2001. - 816 с.
Хоторн, Р. Разработка баз данных Microsoft SQL Server 2000 на
примерах / Р. Хоторн. - М. : Бином, 2001. - 464 с.
Змитрович, А.И. Базы данных : учебное пособие для вузов /
А.И. Змитрович. - Мн. : Университетское, 1991. - 271 с.
Риордан, Р. Программирование в Microsoft SQL Server 2000. Шаг
за шагом / Р. Риордан. - М. : Эком, 2002. - 608 с.
Кренке, Д. Теория и практика построения баз данных / Д.
Кренке. - 8-е изд. - СПб. : Питер, 2003. - 800 с.