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

Итоговый отчет

.docx
Скачиваний:
39
Добавлен:
30.07.2024
Размер:
3.07 Mб
Скачать

Листинг 10 — Функция счета количества учителей

CREATE DEFINER = 'root'@'localhost'

FUNCTION canteen.counteachers()

RETURNS INT(5)

DETERMINISTIC

READS SQL DATA

BEGIN

DECLARE COUNTCH int;

SET COUNTCH = (SELECT COUNT(*) FROM teachers);

RETURN countch;

END

Рисунок 69 — Функция счета количества учителей

  1. Функция, возвращающая свободный для записи id ученика. Код представлен в Листинге 11. Результат работы процедуры представлен на Рисунке 70.

Литстинг 11 — Функция счета количества сотрудников

CREATE DEFINER = 'root'@'localhost'

FUNCTION canteen.incrofun()

RETURNS INT(45)

DETERMINISTIC

READS SQL DATA

BEGIN

DECLARE AIDI int;

set AIDI = (SELECT MAX(id_student) + 1 FROM students);

RETURN AIDI;

END

Рисунок 70 — Функция свободного idСотрудника

  1. Функция подсчета общего количества школ, которые обслуживает комбинат. Код представлен в Листинге 12. Результат работы процедуры представлен на Рисунке 71.

Литстинг 12 — Функция счета количества комбинатов

CREATE DEFINER = 'root'@'localhost'

FUNCTION canteen.skolko_shkol()

RETURNS INT(11)

DETERMINISTIC

READS SQL DATA

BEGIN

DECLARE kombo int;

set kombo = (SELECT COUNT(DISTINCT school_name) AS kol_school FROM combine);

RETURN kombo;

END

Рисунок 71 — Функция счета количества комбинатов

  1. Функция, которая считает, сколько часов осталось до обеда учителя, id которого было введено. Код представлен в Листинге 13. Результат работы процедуры представлен на Рисунке 72.

Литстинг 13 — Функция счета количества спектаклей

CREATE DEFINER = 'root'@'localhost'

FUNCTION canteen.vremya(idt int)

RETURNS time

DETERMINISTIC

READS SQL DATA

BEGIN

DECLARE ts, tn time;

DECLARE OTVET time;

SET ts = (SELECT eat_time FROM school_table WHERE id_teacher = idt);

SET tn = (SELECT CURRENT_TIME());

SET OTVET = (SELECT ABS(TIMEDIFF(tn, ts)));

RETURN OTVET;

END

Рисунок 72 — Функция счета времени до обеда

Триггеры

  1. Оповещение об успешном добавлении. Код представлен в Листинге 14.

Листинг 14 — Триггер успешного добавления

CREATE DEFINER=`root`@`localhost` TRIGGER `Before_Insert_Last_Name` BEFORE INSERT ON students FOR EACH ROW BEGIN

SET MESSAGE_TEXT = 'Добавлена новая запись. Ура!';

END IF;

END

  1. Триггер, который считает кол-во после добавления новой записи. Код представлен в Листинге 15.

Листинг 15 — Триггер подсчета количества спектаклей

CREATE DEFINER=`root`@`localhost` TRIGGER `AFTER_INSERT` AFTER INSERT ON students FOR EACH ROW BEGIN

UPDATE students SET COUNT = (SELECT COUNT(*) FROM students);

END

  1. Триггер подсчета количества студентов после удаления записей. Код представлен в Листинге 16.

Листинг 16 — Триггер подсчета количества спектаклей

CREATE

DEFINER = 'root'@'localhost'

TRIGGER canteen.AFTER_DELETE

AFTER DELETE

ON canteen.students

FOR EACH ROW

BEGIN

UPDATE students SET COUNT = (SELECT COUNT(*) FROM students);

END

Заключение

В течение семестра была создана база данных для школьной столовой.

На основе диаграмм классов и DFD спроектированы логическая и физическая модель базы данных.

Выполнены практические задания, изучены команды создания базы данных, создания таблиц, заполнения таблиц.

Изучен оператор SELECT. Написано множество операций проекции, селекции, соединения, объединения. Изучены встроенные в sql функции, такие как sum(), count(), max(), min(). Current_date(), version() и так далее.

База данных перенесена в СУБД dbForge 2020 for MySQL.

Написано множество хранимых функций, процедур и триггеров, а также сложных запросов.

Получены практические навыки по использованию языка SQL для создания и работы с базами данных в дальнейшей жизни.

Список использованных источников

  1. Дейт, К. Дж. Введение в системы баз данных / учебное пособие / К. Дж. Дейт; — Москва: «Вильяме» 2005. — 1316 с.

  2. Дьяков И.А. Базы данных. Язык SQL: Учебное пособие. — Тамбов: ТГТУ, 2004. — 80 с.

  3. Шварц Б., Зайцев П., Ткаченко В., Заводны Дж., Ленц А., Бэллинг Д. MySQL. Оптимизация производительности, 2-е издание. — Пер. с англ. — Спб.: Символ-Плюс, 2010. — 832 с.: ил.

  4. Э.В. Сысоев, Е.В. Бурцева. Базы данных: лекции к курсу. — Тамбов : Изд-во Тамб. гос. техн. ун-та, 2007. — 48 с.

  5. Баженова И.Ю. Разработка распределенных приложений баз данных: Курс лекций. — М.: МГУ им. М.В. Ломоносова, 2006. — 203 с.

  6. Зиборов В.В. MS Visual C++ 2010 в среде .NET. Библиотека программиста. — Спб.: Питер, 2012. - 320 с.: ил.