
1 / 6
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
Кафедра 41
ПРЕПОДАВАТЕЛЬ
Доцент, канд. техн. наук |
|
|
|
Е. Л. Турнецкая |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
Лабораторная работа №6
Программная реализация пользовательских функций
по курсу: Базы данных
СТУДЕНТКА ГР. № |
Z0411 |
|
13.05.23 |
|
М. В. Карелина |
|
|
номер группы |
|
подпись, дата |
|
инициалы, фамилия |
Номер студенческого билета: 2020/3477
Санкт-Петербург
2023
Цель работы:
программная реализация пользовательских функций на сервере.
Порядок выполнения работы
1. Создайте хранимую функцию, используя операторы ветвления с параметром (или параметрами).
2. Реализуйте хранимую функцию, используя циклы (для вашей предметной области).
3. Протестируйте каждую функцию методами позитивного и негативного тестирования: при вводе значений из допустимого диапазона значение и при использовании значений вне этого диапазона. Сделайте скриншоты.
4. Покажите список хранимых функций.
5. Выполните отчет в соответствие с требованиями ГОСТ 7.32-2017 и ГОСТ 2.105-2019: по оформлению отчетов (https://guap.ru/standart/doc).
Вариант 8
Обслуживание рейсов в аэропорту
Аэропорт обслуживает рейсы разных авиакомпаний. У каждой авиакомпании есть несколько рейсов. Авиакомпании предоставляют самолеты различного типа (вместимости). Самолеты характеризуются типом, годом выпуска, количеством мест и фирмой-производителем. В один город могут быть несколько рейсов в разное время, осуществляемых различными авиакомпаниями. Самолеты обслуживаются экипажем: 27 командир корабля, второй пилот, штурман, бортинженер и стюардессы. О сотрудниках хранится следующая информация: Ф.И.О., должность, квалификация, экипаж. Рейс имеет свой номер, пункт отправления, пункт прибытия, время вылета, время в пути, тип самолета, название авиакомпании, обслуживающей данный рейс. Билет на самолет имеет свой номер и № рейса, ФИО пассажира, № места, стоимость, дата продажи, дата бронирования. Пассажир, приобретая билет на самолет, сообщает о себе паспортные данные. Клиент может забронировать билет по Интернету и выкупить его за 3 часа до вылета.
В данной лабораторной работе будет использована модель данных, спроектированная в прошлых работах (Рис. 1).
Рисунок 1 - Модель данных в среде MySQL Workbench
Хранимая функция или пользовательская функция (stored function, userdefined function) – подпрограмма (возможно, параметризованная), расширяющая возможности языка SQL и работающая аналогично встроенным в СУБД функциям. Функция всегда возвращает значение.
Для начала создадим функцию, которая подсчитывает, количество проданных билетов и на какую сумму.
Листинг. Функция Amount.
use аэропорт;
drop function if exists amount;
delimiter $$
create function amount()
returns text
deterministic
begin
declare number_b, price int;
set number_b =
(select count(`билет`.`№ Билет`) from `билет`);
set price =
(select sum(`билет`.`Стоимость`) from `билет`);
return concat(number_b,' продано билетов, ', price, ' - общая стоимость');
end $$
Проверка (Рис. 2).
SELECT amount()
Рисунок 2 - Проверка функции Amount
Создадим функцию для вывода количества всех билетов, проданных на конкретный рейс. Входной параметр – № Рейса. Если введен неверный код рейса, то будет отображено сообщение об ошибке.
Листинг. Функция Rr.
use аэропорт;
drop function if exists rr;
delimiter $$
create function rr (s int)
returns text
deterministic
begin
declare number_deal int;
if s in (select `№ Рейс` FROM `рейс`) THEN
set number_deal =
(select count(`билет`.`№ Рейса`) from `билет`
where `билет`.`№ Рейса` = s);
set @name_r = (SELECT `№ Рейс`
FROM `рейс`
WHERE `рейс`.`№ Рейс` = s);
return concat(number_deal,' продано билетов по рейсу ', @name_r, '.');
ELSE
RETURN concat('Нет рейса ', s,'.');
END IF;
end $$
Проверка (Рис. 3-4).
SELECT rr (1);
SELECT rr (15);
Рисунок 3 - Проверка функции rr
Рисунок 4. Проверка функции rr при некорректных параметрах
Для просмотра реализованных в БД функций применяют команду (Рис. 5): SHOW function STATUS;
Рисунок 5 - Список реализованных функций
Вывод
В ходе выполнения данной лабораторной работы были изучены возможности хранимых функций, на сервере были реализованы функции, которые могут пригодиться при работе в этой предметной области – Аэропорт, например, функция, которая подсчитывает количество и общую сумму билетов, другая показывает количество билетов, проданных на определенный рейс.
Созданные функции были проверены как на «правильных», так и на «неправильных» параметрах.
Особых проблем при выполнении данных работ не возникло.