- •Введение
- •1. Концептуальное проектирование
- •1.1 Анализ предметной области
- •1.2 Выявление сущностей
- •1.3 Анализ информационных задач и круга пользователей системы
- •1.4 Выбор субд и других программных средств
- •2. Логическое проектирование
- •2.1 Преобразование концептуальной модели в схему базы данных
- •2.2 Описание групп пользователей и прав доступа
- •3. Физическое проектирование
- •4. Демонстрация приложения
- •Заключение
- •Список литературы
- •Приложение №1
- •Приложение №2
1.3 Анализ информационных задач и круга пользователей системы
В рамках данной курсовой работы будут автоматизированы процессы внесения, удаления и изменения данных о:
Пассажирах
Авиакомпаниях
Самолётах
Рейсах
Аэропортах
Билетах
Городах
Классах обслуживания
Способах оплаты
В системе будет существовать лишь один пользователь, который получит полный контроль как над базой данных, так и над приложением.
1.4 Выбор субд и других программных средств
Для реализации требуемых предметной областью функций необходимо: качественная защита информации, прямое редактирование данных в таблицах, быстрый поиск среди таблиц. Этим требованиям соответствует СУБД Oracle 19c. В качестве среды разработки приложения лучше всего подходит Oracle Application Express.
2. Логическое проектирование
2.1 Преобразование концептуальной модели в схему базы данных
Одним из этапов логического проектирования базы данных является этап проверки схемы БД на отсутствие аномалий преобразования данных. Для решения проблемы преобразований данных при проектировании реляционной БД проводится нормализация отношений.
В процессе преобразования концептуальной модели в логическую схему каждый объект предметной области предстаёт в виде взаимосвязанных таблиц, а также выполняется сопоставление связей.
Без нормализации:
R0[Общие данные] (ФИО, Телефон, Адрес электронной почты, Название авиакомпании, Модель, Количество мест, Часы налёта, Дата последнего техосмотра, Дата вылета, Время вылета, Время в пути, Стоимость билета, Название аэропорта, Количество ВПП, Название города, Место, Название класса обслуживания, Название способа оплаты)
Первая нормальная форма:
Таблица находится в первой нормальной форме, если она описывает одну сущность и нет повторяющихся и множественных атрибутов.
R1[Пассажиры] (ФИО, Телефон, Адрес электронной почты)
R2[Авиакомпании] (Название авиакомпании)
R3[Самолёты] (Модель, Количество мест, Часы налёта, Дата последнего техосмотра)
R4[Рейсы] (Дата вылета, Время вылета, Время в пути, Стоимость билета)
R5[Аэропорты] (Название аэропорта, количество ВПП)
R6[Билеты] (Место)
R7[Города] (Название города)
R8[Классы обслуживания] (Название класса обслуживания)
R9[Способы оплаты] (Название способа оплаты)
Вторая нормальная форма:
Таблица находится во второй нормальной форме, если она в первой нормальной форме и все неключевые атрибуты зависят только от ключа в целом.
R1[Пассажиры] (Код пассажира (PK), ФИО, Телефон, Адрес электронной почты)
R2[Авиакомпании] (Код авиакомпании (PK), Название авиакомпании)
R3[Самолёты] (Код самолёта (PK), Код авиакомпании (FK), Модель, Количество мест, Часы налёта, Дата последнего техосмотра)
R4[Рейсы] (Код рейса (PK), Код города отправления (FK), Код аэропорта вылета (FK), Код города назначения (FK), Код аэропорта прилёта (FK), Код авиакомпании (FK), Код самолёта (FK), Дата вылета, Время вылета, Время в пути, Код класса обслуживания (FK), Стоимость билета)
R5[Аэропорты] (Код аэропорта (PK), Код города (FK), Название аэропорта, количество ВПП)
R6[Билеты] (Код билета (PK), Код пассажира (FK), Код рейса (FK), Место, Код способа оплаты (FK))
R7[Города] (Код города (PK), Название города)
R8[Классы обслуживания] (Код класса обслуживания (PK), Название класса обслуживания)
R9[Способы оплаты] (Код способа оплаты (PK), Название способа оплаты)
Третья нормальная форма:
Таблица находится в третьей нормальной форме, если она находится во второй нормальной форме и все неключевые атрибуты не зависят друг от друга.
R1[Пассажиры] (Код пассажира (PK), ФИО, Телефон, Адрес электронной почты)
R2[Авиакомпании] (Код авиакомпании (PK), Название авиакомпании)
R3[Самолёты] (Код самолёта (PK), Код авиакомпании (FK), Модель, Количество мест, Часы налёта, Дата последнего техосмотра)
R4[Рейсы] (Код рейса (PK), Код города отправления (FK), Код аэропорта вылета (FK), Код города назначения (FK), Код аэропорта прилёта (FK), Код авиакомпании (FK), Код самолёта (FK), Дата вылета, Время вылета, Время в пути, Код класса обслуживания (FK), Стоимость билета)
R5[Аэропорты] (Код аэропорта (PK), Код города (FK), Название аэропорта, количество ВПП)
R6[Билеты] (Код билета (PK), Код пассажира (FK), Код рейса (FK), Место, Код способа оплаты (FK))
R7[Города] (Код города (PK), Название города)
R8[Классы обслуживания] (Код класса обслуживания (PK), Название класса обслуживания)
R9[Способы оплаты] (Код способа оплаты (PK), Название способа оплаты)
После нормализации необходимо составить словарь данных, в котором будет указано:
Названия полей в базе данных
Тип данных и размер полей
Поле первичного ключа
Поле внешнего ключа
Таблица 1. Пассажиры (Passenger)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Pas_id |
Код пассажира |
Number(5) |
PK |
FIO |
ФИО |
Varchar(80) |
|
Phone |
Телефон |
Varchar(11) |
|
Адрес электронной почты |
Varchar(50) |
|
Таблица 2. Авиакомпании (Airline)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Airl_id |
Код авиакомпании |
Number(5) |
PK |
Airl_name |
Название авиакомпании |
Varchar(50) |
|
Таблица 3. Самолёты (Plane)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Pla_id |
Код самолёта |
Number(5) |
PK |
Airl_id |
Код авиакомпании |
Number(5) |
FK |
Model |
Модель |
Varchar(20) |
|
Seats |
Количество мест |
Number(5) |
|
Fly_time |
Часы налёта |
Number(5) |
|
Last_to |
Дата последнего техосмотра |
Date |
|
Таблица 4. Рейсы (Flight)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Fli_id |
Код рейса |
Number(5) |
PK |
Departure_id |
Код города отправления |
Number(5) |
FK |
Dep_air_id |
Код аэропорта вылета |
Number(5) |
FK |
Destination_id |
Код города назначения |
Number(5) |
FK |
Des_air_id |
Код аэропорта прилёта |
Number(5) |
FK |
Airl_id |
Код авиакомпании |
Number(5) |
FK |
Pla_id |
Код самолёта |
Number(5) |
FK |
Departure_date |
Дата вылета |
Date |
|
Departure_time |
Время вылета |
Varchar(10) |
|
Way_time |
Время в пути |
Varchar(10) |
|
Class_id |
Код класса обслуживания |
Number(5) |
FK |
Price |
Стоимость билета |
Number(7) |
|
Таблица 5. Аэропорты (Airport)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Airp_id |
Код аэропорта |
Number(5) |
PK |
City_id |
Код города |
Number(5) |
FK |
Airp_name |
Название аэропорта |
Varchar(30) |
|
Runway_kol |
Количество ВПП |
Number(2) |
|
Таблица 6. Билеты (Ticket)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Tic_id |
Код билета |
Number(5) |
PK |
Pas_id |
Код пассажира |
Number(5) |
FK |
Fli_id |
Код рейса |
Number(5) |
FK |
Seat |
Место |
Varchar(3) |
|
Pay_id |
Код способа оплаты |
Number(2) |
FK |
Таблица 7. Города (City)
Название поля |
Перевод |
Тип(длина) |
Ключ |
City_id |
Код города |
Number(5) |
PK |
City_name |
Название города |
Varchar(40) |
|
Таблица 8. Классы обслуживания (Class)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Class_id |
Код класса обслуживания |
Number(5) |
PK |
Class_name |
Название класса обслуживания |
Varchar(20) |
|
Таблица 9. Способы оплаты (Payment)
Название поля |
Перевод |
Тип(длина) |
Ключ |
Pay_id |
Код способа оплаты |
Number(5) |
PK |
Pay_name |
Название способа оплаты |
Varchar(30) |
|
