продажа авиабилетов. продаж авиабилетов. 1 Детально изучить и описать предметную область
Скачать 5.96 Mb.
|
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 . Была детально изучена и описана предметная область; . Разработана концептуальная схема базы данных; . Реализована база данных; . Реализованы запросы по извлечению информации из базы данных. Так как цели курсовой работы были достигнуты, курсовая работа выполнена. 1 8 |