Итоговый отчет
.docxЛистинг 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 — Функция счета количества учителей
Функция, возвращающая свободный для записи 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Сотрудника
Функция подсчета общего количества школ, которые обслуживает комбинат. Код представлен в Листинге 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 — Функция счета количества комбинатов
Функция, которая считает, сколько часов осталось до обеда учителя, 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 — Функция счета времени до обеда
Триггеры
Оповещение об успешном добавлении. Код представлен в Листинге 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 |
Триггер, который считает кол-во после добавления новой записи. Код представлен в Листинге 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 |
Триггер подсчета количества студентов после удаления записей. Код представлен в Листинге 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 для создания и работы с базами данных в дальнейшей жизни.
Список использованных источников
Дейт, К. Дж. Введение в системы баз данных / учебное пособие / К. Дж. Дейт; — Москва: «Вильяме» 2005. — 1316 с.
Дьяков И.А. Базы данных. Язык SQL: Учебное пособие. — Тамбов: ТГТУ, 2004. — 80 с.
Шварц Б., Зайцев П., Ткаченко В., Заводны Дж., Ленц А., Бэллинг Д. MySQL. Оптимизация производительности, 2-е издание. — Пер. с англ. — Спб.: Символ-Плюс, 2010. — 832 с.: ил.
Э.В. Сысоев, Е.В. Бурцева. Базы данных: лекции к курсу. — Тамбов : Изд-во Тамб. гос. техн. ун-та, 2007. — 48 с.
Баженова И.Ю. Разработка распределенных приложений баз данных: Курс лекций. — М.: МГУ им. М.В. Ломоносова, 2006. — 203 с.
Зиборов В.В. MS Visual C++ 2010 в среде .NET. Библиотека программиста. — Спб.: Питер, 2012. - 320 с.: ил.
