Лабораторная работа №4 формирование отчетных и выходных документов базы данных
Цель лабораторной работы:
Целью лабораторной работы является изучение методов и инструментов для формирования отчетных форм и выходных документов, а также построения графиков на основе данных БД.
Задание на выполнение и ход лабораторной работы:
В соответствии с вариантом на выполнение лабораторных работ №1-3 (разработанной логической схемой, наполненной базы данных, разработанными запросами, триггерами, процедурами и т.п.) выполнить следующее:
Разработать форму выходных документов в соответствии с вариантом и реалиями предметной области;
Сформировать выходные документы в соответствии с п.1 с учетом необходимости обеспечения подстановки данных;
В соответствии с вариантом было принято решение сделать три выходных документа:
Маршрут
Список свободного снаряжение
Чек на арендованное снаряжение, оповещение для туриста
Фрагмент файла с дополнительной информацией о маршрутах:
Фрагмент файла с дополнительной информацией об оборудовании:
Выходной PDF документ с чеком о покупке маршрута и аренде оборудования:
Построить график для визуализации актуальной информации на основании любой таблицы по выбору студента.
Визуализация проводится на основе таблицы с маршрутами. График отображает все маршруты и количество людей, которые были на этих маршрутах.
Лабораторная работа №5
РЕАЛИЗАЦИЯ ТЕМПОРАЛЬНЫХ БАЗ ДАННЫХ В СУБД MYSQL 5.5
Цель лабораторной работы:
Целью лабораторной работы является изучение возможностей реализации темпоральных баз данных в СУБД MySQL и методов хранения агрегированных данных.
Задание на выполнение и цель лабораторной работы:
Для разработанной базы данных первого семестра:
Выбрать (подобрать) не менее трех темпоральных компонент (возможно, добавить атрибут, а более правильно - сущность);
Варианты темпоральных компонент:
Стоимость,
Маршрут,
Чат (пользователи),
Стоимость аренды
Спроектировать сущность для хранения агрегированных темпоральных данных и определить гранулярность времени;
Была создана таблица для хранения данных об изменении цены маршрута. В ней хранится айди маршрута route, дата начала цены date_of_begining и дата окончания date_of_ending. Если дата окончания равна NULL – значит цена актуальная.
Получившаяся таблица:
В таблицу с маршрутами добавляется атрибут date_of_ending, в котором будет записано время окончания проведения маршрута. Если значение NULL – значит маршрут действующий.
Получившаяся таблица:
В таблицу с чатами добавляется атрибут date_of_ending, в котором будет записано время окончания действия чата. Если значение NULL – значит чат действующий.
Получившаяся таблица:
Была создана таблица для хранения данных об изменении цены маршрута. В ней хранится айди аренды rent, дата начала цены date_of_begining и дата окончания date_of_ending. Если дата окончания равна NULL – значит цена актуальная.
Получившаяся таблица:
Доработать базу данных и запросы (7-10 запросов) по выдаче моментальных снимков на заданный момент времени и актуальную информацию на заданном временном интервале.
Вывести названия маршрутов, которые сейчас не осуществляются
SELECT title FROM routes WHERE IFNULL(date_of_ending, title)
Вывести данные об аренде, которые были изменены в октябре
SELECT * FROM `temporal_rent_price` WHERE MONTH(date_of_ending) < 11
Вывести данные об аренде, которые были изменены в ноябре
SELECT * FROM `temporal_rent_price` WHERE MONTH(date_of_ending) = 11
Вывести данные о маршрутах, у которых не менялась цена, но сейчас они не обслуживаются
SELECT * FROM `temporal_routes_price` INNER JOIN routes ON routes.route_id = `temporal_routes_price`.`route` WHERE IFNULL(routes.date_of_ending, 0) AND NOT IFNULL(`temporal_routes_price`.date_of_ending, 0)
Вывести данные о маршрутах, у которых менялась цена, но сейчас они не обслуживаются
SELECT * FROM `temporal_routes_price` INNER JOIN routes ON routes.route_id = `temporal_routes_price`.`route` WHERE IFNULL(routes.date_of_ending, 0) AND IFNULL(`temporal_routes_price`.date_of_ending, 0)
Вывести данные о маршрутах, цена которых была актуальна 25 августа 2024 года
SELECT title, duration_in_hours, point_of_departure, price FROM routes JOIN `temporal_routes_price` ON routes.route_id = `temporal_routes_price`.route WHERE '2024-08-25' BETWEEN DATE(`temporal_routes_price`.date_of_begining) AND DATE(`temporal_routes_price`.date_of_ending)
Вывести данные о маршрутах, цена которых была изменена 30 июля 2024 года
SELECT title, duration_in_hours, point_of_departure, price FROM routes JOIN `temporal_routes_price` ON routes.route_id = `temporal_routes_price`.route WHERE '2024-11-15' BETWEEN DATE(`temporal_routes_price`.date_of_begining) AND DATE(`temporal_routes_price`.date_of_ending)
