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

Проектирование информационной системы: построение диаграммы потоков данных DFD, ER-диаграммы, нормализация базы данных. Создание базы данных с помощью SQL-сервера, обеспечение целостности данных: описание бизнес-правил и их физическая реализация.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 12.12.2011
Размер файла 540,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Курсовая работа

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

Введение. Основные задачи согласно полученному варианту работы

база данные информационный система аэропорт

Во время разработки базы данных аэропорта в предпроектном исследовании составлено описание событий, происходящих во время запроса пассажирами либо администрацией данных о полетах. Для визуального создания диаграммы отношения сущностей (ERD(entity relationship diagram)) в курсовой работе использовалось профессиональное средство дизайна баз данных CASE Studio 2.

В процессе проектирования базы данных аэропорта был использован SQL - Structured Query Language (Структурированный язык запросов). Язык SQL - наиболее распространённый язык управления базами данных типа клиент - сервер. Существует несколько разновидностей SQL. Между ними есть небольшие различия, но основа одна и та же. В SQL определены два подмножества языка:

SQL-DDL (Data Definition Language) - язык определения структур и ограничений целостности баз данных. Сюда относятся команды создания и удаления баз данных; создания, изменения и удаления таблиц; управления пользователями и т.д.

SQL-DML (Data Manipulation Language) - язык манипулирования данными: добавление, изменение, удаление и извлечение данных, управления транзакциями

Задание №6

Спроектируйте базу данных аэропорта так, чтобы она позволяла реализовать следующее запросы:

список моделей самолетов летающих по рейсу Z;

номер экипажа и фамиля командира самолета с номером N;

наличие свободных мест на рейс в город Х с временем отправления Y.

1. Проектирование информационной системы

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

· Сотруднику администрации аэропорта необходимо узнать список моделей самолетов летающих по рейсу Z, то есть характеристики самолетов (модель, бортовой номер и дальность возможного перелета.) Он делает запрос по конкретному рейсу Z и получает результат в виде списка всех моделей самолетов, летающих по этому рейсу, а так же их бортовых номеров и летных характеристик (дальность полета).

· При получении информации о номере экипажа и фамилии командира самолета с номером N сотрудник администрации аэропорта делает запрос по конкретному бортовому номеру самолета (с учетом его летных характеристик) и получает информацию: Фамилия имя отчество командира самолета, информацию об экипаже (номер экипажа, фамилии, имена и отчества пилотов и обслуживающего персонала). Дальность полета самолета используется для систематизации данных об экипажах самолетов, так как каждый экипаж, включая командира самолетов и пилота, обучен работать только на определенном типе самолетов.

· Потенциальный пассажир делает запрос о наличии свободных мест на рейс в город X с временем отправления Y. Пассажир делает запрос и получает сведенья о наличии свободных мест на рейс Z в город X с временем отправления Y, а также борт номер каждого самолета, который соответствует запросу потенциального пассажира. Далее потенциальный пассажир (пли условии получения подходящей ему информации о свободных местах) имеет возможность бронировать место в самолете на определенное время при условии оплаты стоимости проезда.

1.1 Построение диаграммы потоков данных DFD

Построение 0-уровня. (Описание построения)

В ходе выполнения курсовой работы при реализации запросов была построена DFD диаграммы 0 уровня (рис. 1) и составлено следующее описание хода событий:

Рис. 1. DFD диаграммы 0 уровня.

1. Запускаем Запустить среду построения DFD диаграм («CASEStudio»).

2. Исходя из условия поставленной задачи создаем 2 внешних сущности: одну из них называем «Администрация аэропорта», а вторую - «Потенциальный пассажир».

3. Добавляем 2 процесса, переименовываем их так: первый называем «Выборка самолетов рейса Z» (внешняя сущность по средствам потока данных обращается к процессу с запросом о списке моделей самолетов летающих по рейсу Z, то есть характеристики самолетов (модель, бортовой номер и дальность возможного перелета.) а так же о номере экипажа и фамилии командира самолета с номером N). Второй же процесс называем «Поиск Билетов».

4. Создаем поток данных от внешней сущности «Администрация аэропорта» к процессу «Выборка самолетов рейса», и изменяем его имя на «Характеристики самолетов рейса Z» в Edit Data Flow на вкладке Data Flow.

5. Создаем поток данных от процесса «Выборка самолетов рейса» к внешней сущности «Администрация аэропорта», и изменяем его имя на «Отчет», т.е. результат в виде списка всех моделей самолетов, летающих по этому рейсу, а так же их бортовых номеров и летных характеристик (дальность полета).

6. Создаем поток данных от внешней сущности «Потенциальный пассажир» к процессу «поиск билетов», и изменяем его имя на «Свободные места рейса Z направления Y.»

7. Создаем поток данных от процесса «поиск билетов» к внешней сущности «Потенциальный пассажир», и изменяем его имя на «свободные места».

8. Добавляем новое хранилище данных «Данные аэропорта» на нашу диаграмму, соединяем хранилище данных парами потоков данных с процессами.

9. Изменяем цвет внешних сущностей (светло-синий), процессов(желтый) а так же хранилища данных(серый).

10. На вкладке «Edit Process» на каждом из двух процессов, задействованных в нашей DFD диаграмме 0 - уровня снимаем флажок с пункта Lowest level и нажимаем OK.

Первая часть DFD диаграммы 0 уровня (Описание построения, рис. 2)

Рис. 2. Первая часть DFD диаграммы 0 уровня

1. Добавим процесс в нашу DFD диаграмму 1 уровня, процесс называем «Выборка характеристик самолетов» (номер экипажа и фамилия командира самолета с номером N, характеристики самолетов (модель, бортовой номер и дальность возможного перелета)).

2. Создаем поток данных от внешней сущности «Администрация аэропорта» к процессу «Выборка характеристик самолетов», и изменяем его имя на «Характеристики самолетов рейса Z» в Edit Data Flow на вкладке Data Flow.

3. Добавляем новое хранилище данных «Данные аэропорта» на нашу диаграмму, соединяем хранилище данных парой потоков данных с процессом.

4. Изменяем цвет внешних сущностей (светло-синий), процессов(желтый) а так же хранилища данных(серый).

5. На вкладке «Edit Process» на процессе, задействованном в нашей DFD диаграмме 1 - уровня снимаем флажок с пункта Lowest level и нажимаем OK.

Вторая часть DFD диаграммы 0 уровня (Описание построения, рис. 3)

Рис. 3. Вторая часть DFD диаграммы 0 уровня

1. Добавим процесс в нашу DFD диаграмму 1 уровня, процесс называем «Сведенья о билетах» (сведенья о наличии свободных мест на рейс Z направления Y)).

2. Создаем поток данных от внешней сущности «потенциальный пассажир» к процессу «Сведенья о билетах», и изменяем его имя на «свободные места рейса Z направления Y» в Edit Data Flow на вкладке Data Flow.

3. Добавляем новое хранилище данных «Данные аэропорта» на нашу диаграмму, соединяем хранилище данных парой потоков данных с процессом.

4. Изменяем цвет внешних сущностей (светло-синий), процессов(желтый) а так же хранилища данных(серый).

Семантика построения DFD диаграммы 0 уровня

q Сотруднику администрации аэропорта необходимо узнать список моделей самолетов летающих по рейсу Z. Он делает запрос по рейсу Z и получает результат в виде списка всех моделей самолетов, летающих по этому рейсу.

q Сотруднику администрации аэропорта необходимо узнать номер экипажа и фамилию командира самолета с номером N. Он делает запрос по конкретному бортовому номеру самолета и получает интересующую его информацию.

q Потенциальный пассажир делает запрос о наличии свободных мест на рейс в город X с временем отправления Y. Пассажир делает запрос и получает сведенья о наличии свободных мест на рейс Z в город X с временем отправления Y.

Построение 1 уровня. (Описание построения, рис. 4)

Рис. 4. DFD диаграмма 1 уровня.

1. Добавим 2 процесса в нашу DFD диаграмму 2 уровня, разделив процесс «Выборка характеристик самолетов» на 2 процесса согласно поступающим запросам. Первый процесс называем «выборка моделей и дальности полетов» (модель, бортовой номер и дальность возможного перелета). Второй же процесс называем «Выборка характеристик экипажа» (характеристики самолетов (номер экипажа и фамилия командира самолета с номером N)). Соединяем полученные процессы парой противоположно направленных потоков данных.

2. Создаем поток данных от внешней сущности «Администрация аэропорта» к процессу « «выборка моделей и дальности полетов», и изменяем его имя на «Характеристики самолетов рейса Z» в Edit Data Flow на вкладке Data Flow.

3. Создаем поток данных от процесса «выборка моделей и дальности полетов» к внешней сущности «Администрация аэропорта», и изменяем его имя на «Отчет», т.е. результат в виде списка всех моделей самолетов, летающих по этому рейсу, а так же их бортовых номеров и летных характеристик (дальность полета), номер экипажа и фамилия командира самолета с номером N.

4. Добавляем новое хранилище данных «Данные аэропорта» на нашу диаграмму, соединяем хранилище данных парами потоков данных с процессом выборка характеристик экипажа.

5. Изменяем цвет внешних сущностей (светло-синий), процессов (желтый) а так же хранилища данных (серый).

Построение 1 уровня. (Семантика построения)

q Сотруднику администрации аэропорта необходимо узнать список моделей самолетов летающих по рейсу Z. Он делает запрос по рейсу Z и получает результат в виде списка всех моделей самолетов, летающих по этому рейсу.

q Сотруднику администрации аэропорта необходимо узнать номер экипажа и фамилию командира самолета с номером N. Он делает запрос по конкретному бортовому номеру самолета и получает интересующую его информацию.

1.2 Построение ER-диаграммы (рис. 5)

Описание порядка построения ER-диаграммы. Проверка правильности построения ER-диаграммы

Рис. 5. Построение ER-диаграммы

1. Запустим среду построения ER-диаграмм.

2. Начнем создавать модель, используя команду меню File / New Model.

3. В появившемся окне «Target database selection» выберем формат базы данных MS SQL, в нашем случае выбираем формат Firebird, и нажимаем ОК.

4. Теперь мы можем добавлять сущности в нашу модель. Просто кликаем по иконке с названием Entity и затем снова кликаем по рабочей области. Создаем 4 сущности. (в действительности их будет 5 (см. пункт №10 (10.1 - 10.3) построения ER диаграммы)).

5. В окне Entity Name изменяем логическое и физическое имя созданных 4 сущностей на «Plane» (Самолет), «Flight direction» (Рейс), «Schedule» (Расписание полетов), «Plane stuff» (экипаж самолета) соответственно и добавляем новые атрибуты в каждую сущность.

6. Далее есть два метода добавления атрибутов в сущность. Можно кликнуть по большой кнопке Add и детально корректировать все настройки добавляемых атрибутов, также можно определить имя атрибута и нажать на маленькую кнопку Add. Во втором случае мы можем быстрее добавлять атрибуты в нашу сущность, но тип данных и настройки будут применены к атрибуту по умолчанию.

В следующем пункте описания построения диаграммы опишем добавление атрибутов в каждую из 4 сущностей.

8.1 Кликаем на большую кнопку Add и в меню настроек сущности, изменяем имя атрибута на «Plane number» (номер самолета). Затем изменяем тип данных на Integer. Отмечаем пункты Key и Not Null. Затем нажимаем ОК - тем самым мы добавили атрибут в нашу сущность «Plane» (самолет) и изменили его настройки. Далее добавим еще один атрибут «Plane model» (модель самолета) в сущность «Plane» вторым способом, описанным в пункте №7, и зададим тип данных атрибута - Char(20), отметив пункт Not Null в меню «Edit» редактирования настроек атрибута.

8.2 Кликаем на большую кнопку Add и в меню настроек сущности «Flight direction» (Рейс) изменяем имя атрибута на «Flight direction number» (номер рейса). Затем изменяем тип данных на Integer. Отмечаем пункты Key и Not Null. Затем нажимаем ОК - тем самым мы добавили атрибут в нашу сущность «Flight direction» и изменили его настройки. Добавим атрибут «Direction name (arrival point)» (пункт назначения) в сущность «Flight direction» (Рейс) вторым способом, описанным в пункте №7, и зададим тип данных атрибута - Char(20). Атрибут «Plane number NN (FK)» в сущности «Flight direction» на изображении диаграммы образуется посредствам установления идентифицирующей связи, построение которой описывается в пункте №10 (10.1 - 10.3). Далее добавим атрибут «Departure time» (время вылета) в сущность «Flight direction» (Рейс) вторым способом, описанным в пункте №7, и зададим тип данных атрибута - Time.

8.3 Кликаем на большую кнопку Add и в меню настроек сущности «Tickets» (Билеты) изменяем имя атрибута на «Datа» (дата). Затем изменяем тип данных на date. Отмечаем пункты Key и Not Null. Затем нажимаем ОК - тем самым мы добавили атрибут в нашу сущность «Tickets» и изменили его настройки. Атрибут «Flight direction number NN (PFK)» в сущности «Tickets» на изображении диаграммы образуется посредствам установления идентифицирующей связи, построение которой описывается в пункте №10 (10.1 - 10.3).

Далее добавим еще атрибут: «Tickets available» (наличие билетов, или свободных мест)) в сущность «Tickets» вторым способом, описанным в пункте №7, и зададим тип данных атрибутов - Char(20).

8.4 Кликаем на большую кнопку Add и в меню настроек сущности «Plane stuff» (экипаж) изменяем имя атрибута на «Chief name/surname» (имя и фамилия командира). Затем изменяем тип данных на Char(60). Затем нажимаем ОК - тем самым мы добавили атрибут в нашу сущность «Plane stuff» и изменили его настройки. Далее кликаем на большую кнопку Add и в меню настроек сущности «Plane stuff», изменяем имя атрибута на «Plane stuff number» (номер экипажа). Затем изменяем тип данных на integer, отмечаем пункты Key и Not Null. Затем нажимаем ОК - атрибут добавлен.

9. Мы можем выбрать, какие свойства сущности отображать. Display all attributes - функция отображения всех атрибутов - лучшим образом подходит для маленьких моделей. для больших сущностей диаграммы можем переключиться к уровню сущностей, primary ключей, или ключей.

Выбираем пункт attributes для визуального отображения всех атрибутов на внешней сущности.

10. Теперь рассмотрим добавление отношений между сущностями в нашей ER - диаграмме. В Toad Data Modeler можно создавать «Non-identifying relationship» (неидентифицируемые отношения), «Identifying relationship» (идентифицирующие связи), Self-relationship (самосвязи), «M:N relationship» (связь многие ко многим) и другие.

10.1 Щелкаем левой кнопкой мыши по значку «Non-identifying relationship», зажимаем левую кнопку мыши на родительской сущности «Plane» и переносим курсор на дочернюю сущность «Flight direction», затем отпускаем левую кнопку мыши для создания связи. Далее щелкаем правой кнопкой мыши по установившейся между сущностями связи и из появившегося меню выбираем пункт Edit Relationship (редактировать связь). На вкладке под названием «Relationship type» (тип связи) изменяем значение с «Identifying relationship» (идентифицирующие связи) на «Non-identifying relationship» (неидентифицируемая связь). Далее на вкладке Referential integrity (референтное интегрирование) в меню опций дочерней сущности изменяем значение пунктов Insert (вставка) и Update (обновление) с None на Restrict. Нажимаем ОК.

10.2 Щелкаем левой кнопкой мыши по значку «Non-identifying relationship», зажимаем левую кнопку мыши на сущности «Flight direction» (Рейс) и переносим курсор на дочернюю сущность «Tickets» (Билеты), затем отпускаем левую кнопку мыши для создания связи.

10.3 Щелкаем левой кнопкой мыши по значку «Relationship M:N» (отношение многие ко многим), зажимаем левую кнопку мыши на сущности «Plane» (Самолет) и переносим курсор на дочернюю сущность «Plane stuff» (Экипаж), затем отпускаем левую кнопку мыши для создания связи. Сущность «Plane stuff id» была образована в результате выбора типа связи (Relationship M: N) («связь многие ко многим») между двумя сущностями - Plane(Самолет) и Plane stuff (экипаж самолета).

17. Total data modeler работает и с физической моделью, то есть мы можем переключаться между Физическим и Логическим видами.

18. Делаем правый клик по рабочей поверхности и в меню настроек рабочей поверхности пункта «background color» (цвет фона) выбираем синий.

19. Далее нажмем на кнопку Model verification (рис. 6) (верификация модели) и в появившемся меню кликнем по кнопке Run. Это даст нам возможность проверить, нет ли ошибок, либо замечаний к работе нашей модели, нет ли подсказок. (рис. 7)

Рис. 6. Проверка ER-диаграммы на наличие ошибок

Рис. 7. Проверка ER-диаграммы, обнаружение ошибок и заметаний

Как видно, диаграмма построена правильно. Ошибок, замечаний и подсказок не выявлено.

Письменное обоснование физической организации данных.

Всю нашу информацию о самолетах, экипажах, командирах самолетов и графике полетов в 5-ти таблицах:

· Plane(Самолет)

· Flight_direction (Рейс)

· Tickets (Билеты)

· Plane_stuff (Экипаж)

· Plane_stuff_id (Экипаж id)

В таблице Plane мы будем хранить всю интересующую нас информацию о самолете, а именно:

· Номер самолета (Plane_number)

· Модель самолета (plane_model)

В таблице Flight_direction мы будем хранить всю интересующую нас информацию о рейсе, а именно:

· Номер рейса (Flight_direction_number)

· Номер самолета (Plane_number)

· Время отправления (Departure_time)

· Конечный пункт следования (пункт назначения или город) (Direction_name_arrival_point_)

Таблица Plane_stuff_id образована посредствам установления между двумя сущностями отношения «моногое ко многим», сдесь мы храним информацию о самолете и экипаже, а именно:

· Номер самолета (Plane_number)

· Номер экипажа (plane_stuff_number)

В таблице Plane_stuff мы будем хранить всю интересующую нас информацию об экипаже, а именно:

· Имя и фамилия командира самолета (Chief_name_surname)

· Номер экипажа (Plane_stuff_number)

В таблице Tickets мы будем хранить всю интересующую нас информацию о билетах, а именно:

· Номер рейса (Fflight_direction_number)

· Дата (Data)

· Наличие билетов на места определенного класса (Tickets_available)

Хранение данных именно в таком виде наиболее удобно, так как оно позволяет нам очень легко находить и манипулировать необходимой нам информацией

Таблица 1.

Сущность

Атрибут

Столбец

Мотивация

Тип данных

Примечание

Plane (самолет)

Plane number

Plane number

Номер самолета

integer

Primary Key UNN

Plane

Plane model

Plane model

Модель самолета

Char(20)

Flight direction

(Рейс)

Flight direction number

Flight direction number

Номер рейса

Integer

Primary Key NN

Flight direction

Plane number

Plane number

Номер cамолета

integer

FK NN

Flight direction

Direction name (arrival point)

Direction Name (Arrival point)

Пункт назначения

Char(20)

Flight direction

departure time

departure time

Время вылета

integer

Tickets(билеты)

Flight direction number

Flight direction number

Номер рейса

integer

PFK NN

Tickets

Data

Date

Дата

DateTime

PK NN

Tickets

Tickets available

Tickets available

Свободные места (наличие билетов)

Char(20)

Plane stuff (экипаж самолета)

Chief name/surname

Chief name/surname

Имя и фамилия командира

Char(60)

Plane stuff

Plane stuff number

Plane stuff number

Номер экипажа

Integer

PK NN

Plane stuff id *

Plane stuff number

Plane stuff number

Номер экипажа

Integer

PFK NN

Plane stuff id*

Plane number

Plane number

Номер cамолета

integer

PFK NN

Нормализация базы данных

Преобразуем ER-диаграмму (рис. 8) в отношения:

Рис. 8. Диаграмма базы данных в нотации IDEF1X

Самолет (Номер самолета, Модель самолета), Рейс (Номер рейса, Время вылета, Пункт назначения, Номер самолета), Билеты (Дата вылета, Номер рейса, Наличие билетов) и Экипаж (Номер экипажа, Имя и фамилия командира).

Определим ФЗ, которые соответствуют отношениям. Отношению Самолет соответствует полная ФЗ Номер самолета > Модель самолета, отношению Экипаж - полная ФЗ Номер экипажа > Имя и фамилия командира, отношению Билеты - Дата, Номер рейса > Наличие билетов, а отношению Рейс - полная ФЗ Номер рейса, Номер самолета > Время вылета > Пункт назначения.

Ввиду отсутствия транзитивных функциональных зависимостей можно сделать вывод, что данная ER - диаграмма не нуждается в нормализации.

2. Создание базы данных с помощью SQL-сервера

2.1 Создание базы данных и таблиц

1. Запустим SQL Server Enterprise Manager.

2. Подключаемся к нужному серверу.

3. Нажимаем кнопку New Database, где в появившемся окне вводим имя базы данных и её параметры.

4. При выбранной базе данных, выбираем меню Tools-SQL Query Analyzer, где пишем наш SQL код и запускаем его на выполнение.

Код:

Create Table «Plane» (

«Plane_number» Integer NOT NULL,

«Plane_model» Char(20) NOT NULL,

Primary Key («Plane_number»)

);

Create Table «Plane_stuff» (

«Chief_name_surname» Char(60),

«Plane_stuff_number» Integer NOT NULL,

Primary Key («Plane_stuff_number»)

);

Create Table «Flight_direction» (

«Flight_direction_number» Integer NOT NULL,

«Plane_number» Integer NOT NULL,

«departure_time» integer,

«Direction_name_arrival_point_» Char(20),

Primary Key («Flight_direction_number»)

);

Create Table «Tickets» (

«Flight_direction_number» Integer NOT NULL,

«Data» DatеTime NOT NULL,

«Tickets_available» Char(20),

Primary Key («Flight_direction_number», «Data»)

);

Create Table «Plane_stuff_id» (

«Plane_number» Integer NOT NULL,

«Plane_stuff_number» Integer NOT NULL,

Primary Key («Plane_number», «Plane_stuff_number»)

);

Alter Table «Flight_direction» add Foreign Key («Plane_number») references «Plane» («Plane_number») on update no action on delete no action;

Alter Table «Plane_stuff_id» add Foreign Key («Plane_number») references «Plane» («Plane_number») on update no action on delete no action;

Alter Table «Plane_stuff_id» add Foreign Key («Plane_stuff_number») references «Plane_stuff» («Plane_stuff_number») on update no action on delete no action;

Alter Table «Tickets» add Foreign Key («Flight_direction_number») references «Flight_direction» («Flight_direction_number») on update no action on delete no action;

2.2 Обеспечение целостности данных: описание бизнесс-правил и их физическая реализация

Бизнесс - правила

1. В таблице Plane

· Значение поля Plane_number должно быть

ь Всегда заполнено

ь Целым числом

ь Больше нуля

ь Уникальным

· Значение поля Plane_model должно быть

ь Всегда заполнено

ь Должно не превышать 20 символов

ь Уникальным

2. В таблице Plane_stuff

· Значение поля Chief_name_surname должно быть

ь Должно не превышать 60 символов

· Значение поля Plane_stuff_number должно быть

ь Всегда заполнено

ь Уникальным

ь Целым числом

ь Больше нуля

3. В таблице Fflight_direction

· Значение поля Fflight_direction_number должно быть

ь Всегда заполнено

ь Уникальным

ь Целым числом

ь Больше нуля

· Значение поля Plane_number должно быть

ь Всегда заполнено

ь Уникальным

ь Целым числом

ь Больше нуля

· Значение поля Departure_time должно быть

ь Целым числом

· Значение поля Direction name arrival point должно быть

ь Должно не превышать 20 символов

4. В таблице Tickets

· Значение поля Flight_direction_number должно быть

ь Всегда заполнено

ь Уникальным

ь Целым числом

ь Больше нуля

· Значение поля Data должно быть

ь Всегда заполнено

· Значение поля Tickets_avaliable должно быть

ь Должно не превышать 20 символов

5. В таблице Plane_stuff_id

· Значение поля plane_number должно быть

ь Всегда заполнено

ь Уникальным

ь Целым числом

ь Больше нуля

· Значение поля plane_stuff_number должно быть

ь Всегда заполнено

ь Уникальным

ь Целым числом

ь Больше нуля

Физическая реализация бизнес - правил.

Alter table Plane

Add Constraint Plane1

unique (Plane_number)

Alter table Plane

Add Constraint Plane2

check (Plane_number > 0)

Рис. 9. Таблица Plane - колонки и бизнес - правила

Alter table Plane_stuff

Add Constraint stuff1

check («Plane_stuff_number»>0)

Alter table Plane_stuff

Add Constraint stuff2

unique (Plane_stuff_number)

Рис. 10. Таблица Plane_stuff - колонки и бизнес - правила

Alter Table Flight_direction

Add Constraint fdnum1

check («Flight_direction_number» >0)

Alter Table Flight_direction

Add Constraint planenumber1

unique («Plane_number»)

Alter Table Flight_direction

Add Constraint planenumber2

check («Plane_number»>0)

Рис. 11. Таблица Flight_direction - колонки и бизнес - правила

Alter Table Tickets

Add Constraint fdnum1

check («Flight_direction_number» >0)

Alter Table Tickets

Add Constraint fdnum2

unique («Flight_direction_number»)

Рис. 12. Таблица Tickets - колонки и бизнес - правила

Alter table Plane_stuff_id

Add Constraint Plane1

unique (Plane_number)

Alter table Plane_stuff_id

Add Constraint Plane2

check (Plane_number > 0)

Alter table Plane_stuff_id

Add Constraint stuff1

check («Plane_stuff_number»>0)

Alter table Plane_stuff_id

Add Constraint stuff2

unique (Plane_stuff_number)

Рис. 13. Таблица Plane_stuff_id - колонки и бизнес - правила

2.3 Заполнение таблиц данными

Заполнение данными таблицы Plane. (рис. 14)

Insert into Plane Values (1, 'tu-144')

Insert into Plane Values (2, 'an-11')

Insert into Plane Values (3, 'tu-144')

Insert into Plane Values (4, 'boieng - 727 ')

Insert into Plane Values (5, 'boieng - 737 ')

Insert into Plane Values (6, 'boieng - 727 ')

Insert into Plane Values (7, 'AIRBUS - 652 ')

Insert into Plane Values (8, 'tu-144')

Insert into Plane Values (9, 'MIG - 12 ')

Insert into Plane Values (10, 'boieng - 737 ')

Рис. 14. Заполнение данными таблицы Plane

Заполнение данными таблицы Fkight_direction. (Рис. 15)

Insert into Flight_direction Values (1,1, 1336,'TOKIO')

Insert into Flight_direction Values (2,2, 1536,'Washington')

Insert into Flight_direction Values (3,3, 1936,'SUMY')

Insert into Flight_direction Values (4,4, 2000,'KIEV')

Insert into Flight_direction Values (5,5, 1836,'lOS-ANGELES')

Insert into Flight_direction Values (6,6, 0032,'MOSCOW')

Insert into Flight_direction Values (7,7, 1936,'SUMY')

Insert into Flight_direction Values (8,8, 2200,'KIEV')

Insert into Flight_direction Values (9,9, 1122,'TOKIO')

Insert into Flight_direction Values (10,10, 2359,'KIEV')

Рис. 15. Заполнение данными таблицы flight_direction

Заполнение данными таблицы Plane_stuff. (Рис. 16)

Insert into Plane_stuff Values ('Bilak Nikolay', 5485)

Insert into Plane_stuff Values ('Rudenko Sasha', 4589651)

Insert into Plane_stuff Values ('Ivanov Ivan', 42135)

Insert into Plane_stuff Values ('Petrov Vadim', 12547)

Insert into Plane_stuff Values ('Peternko Roman', 14256)

Insert into Plane_stuff Values ('BORODAI YRIY', 254658)

Insert into Plane_stuff Values ('DUBAS SASHA', 4458561)

Insert into Plane_stuff Values ('VETALI OLINYK', 125475)

Insert into Plane_stuff Values ('MARINA GONCHARENKO', 200365)

Insert into Plane_stuff Values ('CHALAYA ALENA', 14200506)

Рис. 16. Заполнение данными таблицы Plane_stuff

Заполнение данными таблицы Plane_stuff_id. (Рис. 17)

Insert into Plane_stuff_id Values (1,5485)

Insert into Plane_stuff_id Values (2,4589651)

Insert into Plane_stuff_id Values (3,42135)

Insert into Plane_stuff_id Values (4,12547)

Insert into Plane_stuff_id Values (5,14256)

Insert into Plane_stuff_id Values (6,254658)

Insert into Plane_stuff_id Values (7,4458561)

Insert into Plane_stuff_id Values (8,125475)

Insert into Plane_stuff_id Values (9,200365)

Insert into Plane_stuff_id Values (10,14200506)

Рис. 17. Заполнение данными таблицы Plane_stuff_id

Заполнение данными таблицы Tickets. (Рис. 18)

Insert into Tickets Values (1,071125, '5 tickets 1 class')

Insert into Tickets Values (2,071126, '56 tickets 2 class')

Insert into Tickets Values (3,071127, '3 tickets 1 BS class')

Insert into Tickets Values (4,071128, '53 tickets EC class')

Insert into Tickets Values (5,071129, '15 tickets 1 class')

Insert into Tickets Values (6,071130, '54 tickets 1 class')

Insert into Tickets Values (7,071131, '75 tickets 3 class')

Insert into Tickets Values (8,071201, '56 tickets 2 class')

Insert into Tickets Values (9,071202, '5 tickets 1 class')

Insert into Tickets Values (10,071203, '53 tickets BS class')

Рис. 18. Заполнение данными таблицы Tickets

Работа с данными таблиц базы данных

а) Создание запросов

1. Операция проекция

Выбираем из таблицы Tickets столбцы Tickets_available и Data

Select Distinct Tickets_available, Data

from Tickets

Рис. 19. Результат запроса

2. Операция выборка

Выбираем из таблицы Flight direction номера тех самолетов, которые летят в Киев

Select Plane_number

from Flight_direction

where Direction_name_arrival_point_='KIEV'

Рис. 20. Результат запроса

3. Операция соединение

Выводим таблицу с полями Plane_model и Direction_name_arrival_point

Select Distinct a. Direction_name_arrival_point_, b.plane_model

From «Flight_direction» a, «Plane» b

where a. Plane_number = b.plane_number

Рис. 21. Результат запроса

4. Выводим таблицу с названиями пунктов назначения и количеством одинаковых маршрутов

Select Direction_name_arrival_point_, count (Direction_name_arrival_point_)

from Flight_direction

group by Direction_name_arrival_point_

Рис. 22. Результат запроса

5. Операция пересечение

Выбираем из таблицы Flight_direction номера тех рейсов по которым летают самолеты с определенными номерами (из таблицы Plane)

Select Flight_direction_number

from Flight_direction

where Plane_number in (select Plane_number from plane)

Рис. 23. Результат запроса

6. Операция разность

Выбираем из таблицы Flight_direction номера тех рейсов по которым не летает ни один самолет (неблагоприятные погодные условия на пути следования, например)

Select Flight_direction_number

from Flight_direction

where Plane_number not in (select Plane_number from plane)

Рис. 24. Результат запроса - как видим по результату запроса рейсов, по которым не летает ни один самолет нету.

7. Выводим количество самолетов относительно их моделей

Select plane_model, count (plane_model)

from plane

group by plane_model

Рис. 25. Результат запроса

б) Представления

1) Выводим максимальное количество самолетов одинаковой модели, а так же саму модель.

Create view V2222 as Select plane_model, (count (plane_model)) as col

from plane

group by plane_model

go

Select plane_model, col

from V2222

where col = (select max(col) from V2222)

Рис. 26. Результат работы представления

в) Хранимые процедуры

1) Выводим модель самолета по его номеру

Create Procedure get_plane_model_by_plane_number2

@plane_number integer

As

Select plane_number, plane_model

From Plane

where

@plane_number=Plane.plane_number

execute get_plane_model_by_plane_number2

'1'

Рис. 27. Результат работы процедуры

2) По номеру рейса смотрим куда летят самолеты и есть ли билеты

Create Procedure get_Direction_name_by_FDnumber2

@flight_direction_number integer

As

Select Direction_name_arrival_point_, tickets_available

From Flight_direction, Tickets

where

tickets. Flight_direction_number = Flight_direction. Flight_direction_number

and

@flight_direction_number=Flight_direction. Flight_direction_number

execute get_Direction_name_by_FDnumber2

'1'

Рис. 28. Результат работы процедуры

3) По названию города (пункт назначения) получаем информацию о модели самолета, времени вылета и наличии билетов.

Create Procedure get_model_data_tickets_by_town

@dir char(20)

As

Select @dir as Direction, plane_model, data, tickets_available

From plane, Tickets, flight_direction

where @dir = Flight_direction.direction_name_arrival_point_

and

Flight_direction. Flight_direction_number =

tickets. Flight_direction_number

and

Flight_direction. Plane_number =

Plane.plane_number

exec get_model_data_tickets_by_town 'Tokio'

Рис. 29. Результат работы процедуры

4) Получаем информацию о времени вылета и билетах по городу, куда нужно лететь (пункт назначения).

Create Procedure get_data_and_tickets_available_by_dir

@dir char(20)

As

Select @dir as Direction_name_arrival_point_, data, tickets_available

From Tickets, flight_direction

where @dir = Flight_direction.direction_name_arrival_point_

and

Flight_direction. Flight_direction_number =

tickets. Flight_direction_number

execute get_data_and_tickets_available_by_dir

'TOKIO'

Рис. 30. Результат работы процедуры

5) Выводим определенное количество билетов на самолет с заданным именем командира экипажа

Create procedure execute get_56_tickets_1_class_by_FIO_using_FDnumber

@FIO char(60)

As

Select @FIO as chief_name_surname, tickets_available

From Tickets, Plane_stuff

where @FIO = Plane_stuff.chief_name_surname

and

tickets.tickets_available = '56 tickets 1 class '

execute get_56_tickets_1_class_by_FIO_using_FDnumber

'BORODAI YRIY'

Рис. 31. Результат работы процедуры

6) Выводим количество самолетов заданной модели

create procedure Get_model_count2

@model char(20)

as

Select Plane_model, Count (Plane_model)

From Plane

Where (Plane_model=@model)

Group by Plane_model

Execute Get_model_count2

'tu-144'

Рис. 32. Результат работы процедуры

г) Создание триггеров

1) Руководство аэропорта решило докупить самолетов разных моделей, но аэропорту экономически невыгодно содержание более 5 самолетов одной модели. Вводим новый номер нового самолета и его модель. Если в аэропорту больше 5 самолетов, выводим ответ: «Слишком много самолетов модели «заданная модель» «Если же самолетов данной модели меньше 5, добавляем новый номер самолета и модель в базу данных, получаем сообщение «Самолет добавлен «заданная модель»».

Create Trigger NEW_plane_models_adding

On Plane

Instead of Insert

As

Declare @plane_number integer

Declare @plane_model char(20)

Set @plane_number = (select plane_number From Inserted)

Set @plane_model = (select plane_model From Inserted)

If (Select Count (plane_model)

From (Select plane_model, plane_number

From Plane

Where (Plane.plane_model = @plane_model)) a

Group by plane_model) < 5

Begin

Insert Into Plane Values

(@plane_number,@plane_model)

select 'Samoliot dobavlen', @plane_model

end

else Select 'slishkom mnogo samoliotov modeli ',@plane_model

insert into plane values

(30,'an-11')

Рис. 33. Результат работы триггера

insert into plane values

(31,'tu-144')

Рис. 34. Результат работы триггера

Выводы

Администрация аэропорта заказала разработку модуля информационной системы для отдела по контролю полетов и личного состава и справочной службы аэропорта. Была создана система, которая предназначена для автоматизации процесса регистрации и хранения данных о самолетах и их экипажах, а так же для автоматизации получения справок о полетах потенциальными пассажирами, позволяющая реализовать следующие запросы:

· по номеру самолета выводить его модель

· по номеру рейса выводить информацию о пути следования и наличии билетов

· по названию города выводить информацию о модели самолета, времени вылета и наличии билетов

· Выводить определенное количество билетов на самолет с заданным именем командира экипажа

· по названию города, куда нужно лететь выводить информацию о времени вылета и билетах.

· выводить количество самолетов заданной модели

· регистрировать модели и номера самолетов, если только их число не превышает допустимый максимум на заданном рейсе

Список используемой литературы, ресурсов

1. Чекалов А.П. Базы данных от проектирования доразработки приложений СПб.: БХВ-Петербург, 2003.

2. http://casestudio.com/

3. http://www.sqlmag.com/

4. http://www.microsoft.com/isapi/redir.dll? Prd=SQL&ar=home

5. Учебные материалы http://www.chekalov.sumdu.edu.ua/db

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.