Содержание
- Хранимые процедуры
- Операторы
- Составной и присваивания
- Ветвления
- Циклы
- Обработка ошибок
- Курсоры
- Хранимые функции
- Управление доступом
Экзаменационные вопросы
- Хранимые процедуры и функции. Сходства и различия
- Императивное подмножество SQL
- Data Control Language
Практические навыки
- Реализация хранимых процедур и функций
- Реализация сложных триггеров
- Управление правами доступа
Библиография
- Дейт К. Введение в системы баз данных (главы 4 и 7)
- Уидом Д., Ульман Д. Основы реляционных баз данных (раздел 7.4)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 25 – SQL-Invoked Routine)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 26 – PSM: Not Just Persistent Stored Modules)
- MySQL 8.0: CREATE PROCEDURE and CREATE FUNCTION Statements
Домашнее задание 9. Хранимые процедуры
В базе данных Airline
информация о рейсах
самолётов задана в виде таблиц
Flights( FlightId integer, FlightTime timestamp, PlaneId integer, -- Дополнительные столбцы, при необходимости ) Seats( PlaneId integer, SeatNo varchar(4), -- 123A -- Дополнительные столбцы, при необходимости )
Реализуйте запросы к базе данных Airline
с применением представлений, хранимых процедур и функций.
При необходимости, вы можете создать дополнительные
таблицы, представления и хранимые процедуры.
Возможность бронирования должна автоматически отключаться за трое суток до начала рейса. Продажа мест должна автоматически отключаться за три часа до начала рейса. Также должна быть предусмотрена возможность отключения бронирования и продаж вручную.
-
Администрирование.
RegisterUser(UserId, Pass)
— зарегистрировать нового пользователя. Возвращает истину, если удалось и ложь — в противном случае.ManageFlight(UserId, Pass, FlightId, SellAllowed, ReservationAllowed)
— изменить настройки рейса. Примечание: автоматические настройки имеют более высокий приоритет.
-
Покупка и бронирование.
FreeSeats(FlightId)
— список мест рейса, доступных для продажи и для бронирования.Reserve(UserId, Pass, FlightId, SeatNo)
— бронирует место на сутки начиная с момента бронирования. Возвращает истину, если удалось и ложь — в противном случае.ExtendReservation(UserId, Pass, FlightId, SeatNo)
— продлевает бронь места на сутки начиная с момента продления. Возвращает истину, если удалось и ложь — в противном случае.BuyFree(FlightId, SeatNo)
— покупает свободное место. Возвращает истину, если удалось и ложь — в противном случае.BuyReserved(UserId, Pass, FlightId, SeatNo)
— покупает забронированное место (пользователи должны совпадать). Возвращает истину, если удалось и ложь — в противном случае.
-
Статистика.
FlightsStatistics(UserId, Pass)
— статистика по рейсам: возможность бронирования и покупки, число свободных, забронированных и проданных мест.FlightStat(UserId, Pass, FlightId)
— статистика по рейсу: возможность бронирования и покупки, число свободных, забронированных и проданных мест.
CompressSeats(UserId, Pass, FlightId)
— оптимизирует занятость мест в самолете. В результате оптимизации, в начале самолета должны быть купленные места, затем — забронированные, а в конце — свободные. Примечание: клиенты, которые уже выкупили билеты, также должны быть пересажены.
В рамках проекта:
- Определите хранимые процедуры и функции, необходимые для работы проекта.
- Реализуйте хранимые процедуры (функции) на языке SQL.