Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 / 6

.docx
Скачиваний:
1
Добавлен:
16.05.2025
Размер:
389.02 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

Кафедра 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 - Список реализованных функций

Вывод

В ходе выполнения данной лабораторной работы были изучены возможности хранимых функций, на сервере были реализованы функции, которые могут пригодиться при работе в этой предметной области – Аэропорт, например, функция, которая подсчитывает количество и общую сумму билетов, другая показывает количество билетов, проданных на определенный рейс.

Созданные функции были проверены как на «правильных», так и на «неправильных» параметрах.

Особых проблем при выполнении данных работ не возникло.

Соседние файлы в папке 1