Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / отчет лабы бд 5 сем.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
2.84 Mб
Скачать

Лабораторная работа №4 формирование отчетных и выходных документов базы данных

Цель лабораторной работы:

Целью лабораторной работы является изучение методов и инструментов для формирования отчетных форм и выходных документов, а также построения графиков на основе данных БД.

Задание на выполнение и ход лабораторной работы:

В соответствии с вариантом на выполнение лабораторных работ №1-3 (разработанной логической схемой, наполненной базы данных, разработанными запросами, триггерами, процедурами и т.п.) выполнить следующее:

  1. Разработать форму выходных документов в соответствии с вариантом и реалиями предметной области;

  2. Сформировать выходные документы в соответствии с п.1 с учетом необходимости обеспечения подстановки данных;

В соответствии с вариантом было принято решение сделать три выходных документа:

  • Маршрут

  • Список свободного снаряжение

  • Чек на арендованное снаряжение, оповещение для туриста

Фрагмент файла с дополнительной информацией о маршрутах:

Фрагмент файла с дополнительной информацией об оборудовании:

Выходной PDF документ с чеком о покупке маршрута и аренде оборудования:

  1. Построить график для визуализации актуальной информации на основании любой таблицы по выбору студента.

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

Лабораторная работа №5

РЕАЛИЗАЦИЯ ТЕМПОРАЛЬНЫХ БАЗ ДАННЫХ В СУБД MYSQL 5.5

Цель лабораторной работы:

Целью лабораторной работы является изучение возможностей реализации темпоральных баз данных в СУБД MySQL и методов хранения агрегированных данных.

Задание на выполнение и цель лабораторной работы:

Для разработанной базы данных первого семестра:

  1. Выбрать (подобрать) не менее трех темпоральных компонент (возможно, добавить атрибут, а более правильно - сущность);

Варианты темпоральных компонент:

  • Стоимость,

  • Маршрут,

  • Чат (пользователи),

  • Стоимость аренды

  1. Спроектировать сущность для хранения агрегированных темпоральных данных и определить гранулярность времени;

Была создана таблица для хранения данных об изменении цены маршрута. В ней хранится айди маршрута route, дата начала цены date_of_begining и дата окончания date_of_ending. Если дата окончания равна NULL – значит цена актуальная.

Получившаяся таблица:

В таблицу с маршрутами добавляется атрибут date_of_ending, в котором будет записано время окончания проведения маршрута. Если значение NULL – значит маршрут действующий.

Получившаяся таблица:

В таблицу с чатами добавляется атрибут date_of_ending, в котором будет записано время окончания действия чата. Если значение NULL – значит чат действующий.

Получившаяся таблица:

Была создана таблица для хранения данных об изменении цены маршрута. В ней хранится айди аренды rent, дата начала цены date_of_begining и дата окончания date_of_ending. Если дата окончания равна NULL – значит цена актуальная.

Получившаяся таблица:

  1. Доработать базу данных и запросы (7-10 запросов) по выдаче моментальных снимков на заданный момент времени и актуальную информацию на заданном временном интервале.

  1. Вывести названия маршрутов, которые сейчас не осуществляются

SELECT title FROM routes WHERE IFNULL(date_of_ending, title)

  1. Вывести данные об аренде, которые были изменены в октябре

SELECT * FROM `temporal_rent_price` WHERE MONTH(date_of_ending) < 11

  1. Вывести данные об аренде, которые были изменены в ноябре

SELECT * FROM `temporal_rent_price` WHERE MONTH(date_of_ending) = 11

  1. Вывести данные о маршрутах, у которых не менялась цена, но сейчас они не обслуживаются

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)

  1. Вывести данные о маршрутах, у которых менялась цена, но сейчас они не обслуживаются

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)

  1. Вывести данные о маршрутах, цена которых была актуальна 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)

  1. Вывести данные о маршрутах, цена которых была изменена 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)

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