ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.02.2024
Просмотров: 40
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
2
.3 Разработка физической схемы базы данных по учету продаж
авиабилетов
Для проектирования физической модели базы данных, представленной
на концептуальной схеме, следует учитывать особенности выбранного языка
и СУБД, которые могут отличаться типами данных. В данном случае, были
выбрана СУБД MySQL, которая отличается простотой и интуитивной
понятностью. Как говорилось выше, для осуществления связей «много ко
многим» необходимы вспомогательные таблицы. В нашем случае
была введена сущность: «border_has_class». Для связи таблиц типа «один ко
многим» были введены внешние ключи. Так как названия сущностей и
атрибутов кириллицей при проектировании физической схемы базы данных
является плохим тоном, а также такие наименования могут повлечь за собой
проблемы совместимости кодировок на этапе реализации, то все
наименования были переведены на английский язык и записаны с помощью
латиницы. Для работы с данными были выбраны следующие типы данных
СУБД:
Varchar(X) – символьные данные переменной длины. Под
X
обозначается количество символов. Используется для хранения записей,
например, название, имя, адрес.
Integer – длинное целое число. Используется для первичных ключей
каждой таблицы, а также для хранения регистрационных номеров и цены
услуг.
Date - Дата. Поддерживается интервал от '1000-01-01' до '9999-12-31'.
Time – Время. Поддерживается интервал от '00:00:00' до '23:59:59'
1
3
Рисунок 3 – Физическая схема базы данных по продаже авиабилетов
2
.4 Бизнес правила
) В самолете не может быть суммарно мест больше, чем максимально
1
установленное кол-во производителем
2
3
4
5
6
7
8
) Билет можно оформить только на совершеннолетнее лицо
) Нельзя оформить билет на место, которого нет
) Нельзя оформить билет в класс, которого в самолете нет
) Нельзя оформить билет на уже занятое место
) Билеты на ребёнка покупаются вместе со взрослым
) При вылете заграницу необходимо указать визу
) Цена билета известна заранее
1
4
3
Реализация базы данных по учету продаж авиабилетов
3
.1 Реализация и заполнение базы демо-информацией
SQL (англ. structured query language — «язык структурированных
запросов») – декларативный язык программирования, применяемый для
создания, модификации и управления данными в реляционной базе данных,
управляемой соответствующей системой управления базами данных. SQL
очень мощный инструмент. Хоть у каждой СУБД есть свои особенности,
скрипты основных операций не отличаются, что делает SQL независимым от
конкретной СУБД. Как было упомянуто в определении, SQL – декларативный
язык, это значит, что программист описывает только то, какие данные
необходимо извлечь или модифицировать, а СУБД при обработке SQL-
запроса самостоятельно решит, как его выполнить.
Создание таблицы «airlainer»
create table airlainer(
airlainer_code int primary key,
aircraft_model varchar (70) not null,
allowed_places int not null
);
Заполнениетаблицы «airlainer»
insert into airlainer
values (737, 'Boeing 737', 750)
(320, 'Airbus 320', 550)
(777, 'Boeing 777', 320)
1
5
3
.2 Триггеры
Процедуры в базах данных представляют собой наборы SQL-
инструкций, которые компилируются один раз и хранятся на сервере.
Процедуры позволяют повысить производительность, обеспечить
безопасность данных, а также расширить возможности программирования.
Повышения производительности можно добиться путем создания
одной процедуры, и вызова ее вместо часто используемого запроса.
Процедуры позволяют ограничить или исключить непосредственный доступ
пользователей к таблицам базы данных, оставляя только разрешения
выполнять процедуры, обеспечивающие косвенный доступ к данным.
Триггер – процедура, которая вызывается не пользователем, а каким-
либо провоцирующим событием в базе данных.
Скрипт триггера проверки пересечения времени работы над одним и
тем же объектом представлен ниже. (Остальные скрипты приведены в
приложении В).
Триггер, проверяющий, что в самолете не может быть больше мест, чем
максимально установленное кол-во производителем
create exception places_sum_e 'Превышено максимально разрешенное
кол-во мест!'
create trigger places_sum_t for board_has_class
active after insert or update
as
declare variable al_plac int;
declare variable aircrft int;
declare variable plac_sum int;
begin
aircrft = (select board.airlainer_code from board where new.board_number
=
board.board_number);
1
6
al_plac = (select allowed_places from airlainerwhere :aircrft =
airlainer_code);
plac_sum = (select SUM(board_has_class.places_in_class)
from board_has_class where board_has_class.board_number
new.board_number);
=
if(:plac_sum> :al_plac) then exception places_sum_e;
end
3
.3 Запросы
Задача базы данных – хранить и выдавать информацию пользователю
или приложению, взаимодействующему с ней. При выборке данных
используют тот же инструмент, что и при создании таблиц – запросы. Только
в этот раз нам понадобятся не DDL или DML запросы, а DQL запросы, точнее
единственная относящая к этому виду запросов команда SELECT.
Скрипт для вывода всех билетов и данных пассажиров, оформивших
билет.
select
ticket.ticket_id,
ticket.flight_number,
class.class_name,
ticket.sit_place,
passanger.surname, passanger.name from ticket left join passanger
on ticket.pasport = passanger.pasport left join class
on class.class_id = ticket.class_id
1
7
Заключение
В ходе выполнения курсовой работы были решены следующие задачи:
1
2
3
4
. Была детально изучена и описана предметная область;
. Разработана концептуальная схема базы данных;
. Реализована база данных;