Разработка модуля информационной системы для отдела по контролю полетов и личного состава и справочной службы аэропорта
Проектирование информационной системы: построение диаграммы потоков данных 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
Подобные документы
Проектирование информационной системы. Построение диаграммы потоков данных. Описание порядка построения DFD-диаграммы. Создание базы данных с помощью SQL сервера. Описание основных бизнес-правил и их физической реализации. Заполнение таблиц данными.
курсовая работа [1,5 M], добавлен 13.12.2011Автоматизация регистрации и хранения данных о самолетах и экипажах. Автоматизация получения справок о полетах потенциальными пассажирами. Анализ области применения и планирование требований. Проектирование базы данных. Формирование основных SQL запросов.
курсовая работа [625,8 K], добавлен 15.08.2010Описание особенностей функционирования магазина. Проектирование системы: инфологическое моделирование и построение диаграммы потоков данных. Моделирование и программная реализация информационной системы. Проектирование пользовательского интерфейса.
курсовая работа [1,6 M], добавлен 18.02.2013Выбор средств разработки базы данных для информационного функционирования аэропорта. Выделение и нормализация сущностей. Логическая схема и физическая структура базы данных. Спецификация и тестирование функций, процедур, триггеров, представлений.
курсовая работа [1,5 M], добавлен 07.06.2013- Разработка серверной части информационной системы для сопровождения процесса выдачи заработной платы
Построение диаграммы последовательности действий и диаграммы классов при автоматизации процесса выдачи заработной платы. Логическая и физическая реализация базы данных, заполнение таблиц и создание выборок. Мапирование реляционной модели в метамодель.
курсовая работа [1,6 M], добавлен 29.11.2011 Разработка базы данных для информационной поддержки деятельности аптеки с целью автоматизированного ведения данных о лекарствах аптеки. Проектирование схемы базы данных с помощью средства разработки структуры базы данных Microsoft SQL Server 2008.
курсовая работа [3,6 M], добавлен 18.06.2012- Анализ, разработка и реализация базы данных встраиваемого модуля информационной системы IP-телефонии
Анализ предметной области. Проектирование диаграммы "сущность-связь" в Enterprise Architect. Общие сведения о базовых запросах. Создание базы данных в MySQL. Выделение сущностей, атрибутов, ключей, связей. Применение табличных и скалярных функций.
курсовая работа [1,8 M], добавлен 28.01.2016 Инфологическое моделирование предметной области. Построение диаграммы потоков данных. Обоснование выбора СУБД. Проектирование пользовательского интерфейса. Комплект поставки и порядок установки системы. Описание функционирования приложения и таблиц.
курсовая работа [3,2 M], добавлен 23.08.2014Задачи, функции и структура филиала университета. Оценка информационных потоков и UML-моделирование. Анализ структуры информационной системы и системы навигации. Проектирование базы данных, физическая реализация и тестирование информационной системы.
дипломная работа [6,0 M], добавлен 21.01.2012Информационные задачи и круг пользователей системы. Выработка требований и ограничений. Разработка проекта базы данных. Программная реализация проекта базы данных. Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных.
курсовая работа [706,2 K], добавлен 17.06.2012