отчет лабы РПП 1-3
.docxЛабораторная работа №1
ФОРМАТ ОБМЕНА ДАННЫМИ JSON
Цель лабораторной работы.
Целью лабораторной работы является изучение простого формата обмена данными и их использование при работе с базами данных.
Задание на выполнение лабораторной работы.
На основе ДАННЫХ базы данных, разработанной в рамках выполнения курсовой работы по дисциплине «Базы данных», выполнить:
Представление данных 3-4 связанных сущностей (одну основную и остальные зависимые/определяюшие/дополняющие) в формате JSON создать файл с данными;
Визуализацию данных в среде программирования (среда разработки СУБД MongoDB или язык программирования Python с подключением любой СУБД, в том числе реляционной);
Создание базы данных документов JSON или использовать JSON файлы как базу данных на основе сущностей, выбранных в п.1;
Операции по управлению базой данных (вставка, удаление, корректировка - минимум по команде на каждую операцию);
Запросы (5-7 запросов) на выборку данных в соответствии логикой предметной области (при этом не менее двух запросов должны касаться сразу всех сущностей).
Требования к выполнению
При создании базы данных создать не менее 5 записей с основной сущностью.
db.equipment.insertMany([
{ title: 'Extra clothes', amount: '6' },
{ title: 'Extra shoes', amount: '8' }
]);
db.routes.insertMany([
{ route_id: null, title: 'Muranovo Manor Day Hike', duration_in_hours: '24', point_of_departure: 'Ashukinskaya station', price: '2520' },
{ route_id: null, title: 'Smolenskoye Poozerye National Park', duration_in_hours: '48', point_of_departure: 'Smolensk railway Station', price: '15100' }
]);
db.qualification_of_instructor.insertOne({
qualification_id: '5',
instructor: '5',
document: 'Hiking school "The Merry Way"',
date_of_receipt: '2023-09-15'
});
db.routes.deleteOne({ title: "One-day winter kayaking trip on the Istra River" });
db.routes.deleteOne({ title: "The Vyatichi Trail" });
db.routes.deleteOne({ title: "Hiking - The Zombie Trail" });
До:
После:
db.routes.updateOne(
{ title: "The magical paths of Kirzhach" },
{ $set: { price: 6000 } }
);
До:
После:
db.routes.updateOne(
{ title: "Following the merchants" },
{ $set: { price: 2700 } }
);
До:
После:
Находим туриста с айди = 26:
db.costumers.find({user_id: 26})
Вывести вещи со склада, количество которых больше 10:
db.equipment.find({amount: {$gt: 10} })
Вывести список аренды, стоимость которой больше 4800:
db.rent.find({price: {$gt: 4800} })
Найти максимальное количество привалов на всех маршрутах:
db.route_halt.aggregate([
{
$group: {
_id: "$route",
halt_count: { $sum: 1 }
}
},
{
$group: {
_id: null,
max_halts: { $max: "$halt_count" }
}
},
{
$project: {
_id: 0,
max_halts: 1
}
}
]);
Вывести название и цену самого дорогого и самого дешевого маршрута:
db.routes.aggregate([
{
$group: {
_id: null,
maxPrice: { $max: "$price" },
minPrice: { $min: "$price" }
}
},
{
$lookup: {
from: "routes",
let: { maxPrice: "$maxPrice", minPrice: "$minPrice" },
pipeline: [
{
$match: {
$expr: {
$or: [
{ $eq: ["$price", "$$maxPrice"] },
{ $eq: ["$price", "$$minPrice"] }
]
}
}
},
{
$project: {
title: 1,
price: 1
}
}
],
as: "results"
}
},
{
$unwind: "$results"
},
{
$replaceRoot: { newRoot: "$results" }
}
])
Лабораторная работа №2
ПРОЕКТИРОВАНИЕ OLAP
Цель лабораторной работы.
Целью лабораторной работы является изучение функционального подхода к построению реляционной OLAP и возможностей по ее разработке и получения информации средствами реляционной СУБД.
Задание на выполнение лабораторной работы.
На основе данных базы данных, разработанной в курсовой работе по дисциплине «Базы данных», создать реляционную OLAP.
При этом:
Хранилище должно соответствовать схеме снежинка или звезда (по выбору студента);
Хранилище может содержать только информацию, необходимую для анализа; при этом содержать не менее 4 таблиц измерений, НЕ включая таблицы справочники;
На хранилище не накладываются требования нормализации (денормализацией можно добиться более понятной схемы для построения куба, а также скорости загрузки данных в куб).
Таблиц фактов может быть одна или две (записей в них не менее 20);
Анализ должен давать ответ на 5-7 вопросов (запросов); вопросы формулируются самостоятельно;
Измерение времени (нужные для анализа атрибуты времени - значения и названия) выбирается студентом самостоятельно.
Примечание.
Среда разработки выбирается студентом.
Запросы:
Маршрут, на который ходили чаще всего
SELECT COUNT(*) AS kolvo, title FROM routes INNER JOIN hiking_tours ON routes.route_id = hiking_tours.route_pk
GROUP BY routes.title
ORDER BY kolvo DESC LIMIT 1;
Маршрут, на который ходили реже всего
SELECT COUNT(*) AS kolvo, title FROM routes INNER JOIN hiking_tours ON routes.route_id = hiking_tours.route_pk
GROUP BY routes.title
ORDER BY kolvo ASC LIMIT 1;
Средний возраст туристов
SELECT AVG(age) AS avg_age FROM client;
Маршруты, пройденные за лето 2024 год
SELECT DISTINCT route_pk FROM hiking_tours WHERE date_of_departure BETWEEN '2024-06-01' AND '2024-08-31';
Категория маршрута, на который ходили реже всего
SELECT category, COUNT(*) AS количество FROM price_category INNER JOIN routes ON price_category.route_pk = routes.route_id GROUP BY category ORDER BY количество ASC LIMIT 1;
Самый дорогой маршрут за осень 2024
SELECT title, MAX(price) AS самая_дорогая_цена
FROM routes
INNER JOIN `groups` ON `groups`.`route_pk` = routes.route_id
WHERE `groups`.`date_of_beginning` BETWEEN '2024-09-01' AND '2024-11-30'
GROUP BY title
ORDER BY самая_дорогая_цена DESC
LIMIT 1;
Лабораторная работа №4
ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ПРИЛОЖЕНИЯ
Интеллект карта
Листинг:
mindmap root((**Десктопное приложение для инструктора по пешим походам**)) ::icon(fa fa-desktop) **1. Планирование походов** ::icon(fa fa-calendar-alt) 1.1. База маршрутов ::icon(fa fa-route) - Создание/Редактирование маршрутов - Категории сложности - Протяженность, примерное время - Достопримечательности на маршруте - Привалы, места для ночлега 1.2. Календарь походов ::icon(fa fa-calendar-check) - Создание события "Поход" - Привязка маршрута, даты, времени - Назначение инструктора - Максимальное/Минимальное количество участников 1.3. Шаблоны снаряжения ::icon(fa fa-list-alt) - Создание списка арендованного снаряжения - Создание списка поврежденного снаряжения
**2. Управление участниками** ::icon(fa fa-users) 2.1. Профили участников ::icon(fa fa-user-circle) - Контактные данные - Дата рождения - Логин и пароль от учетной записи 2.2. Формирование групп ::icon(fa fa-user-friends) - Добавление участников в запланированный поход - Учет оплаты - Рассылка информации участникам
**3. Управление снаряжением инструктора** ::icon(fa fa-campground) 3.1. Имеющийся инвентарь - Список прокатного снаряжения - Состояние - Дата покупки, стоимость - Привязка прокатного снаряжения к участникам/походам
**4. Безопасность и ЧС** ::icon(fa fa-shield-alt) 4.1. Протоколы безопасности - Чек-листы инструктажа перед походом - Памятки по ТБ для участников - Шаблоны действий в ЧС 4.2. Экстренные контакты - База телефонов МЧС, ПСО по регионам - Контакты других инструкторов/групп 4.3. Информация о первой помощи - Встроенный справочник - Ссылки на актуальные ресурсы
**5. Финансы и отчетность** ::icon(fa fa-file-invoice-dollar) 5.1. Учет расходов на поход 5.2. Учет взносов участников 5.3. Простая отчетность по походу
**6. Информационные ресурсы** ::icon(fa fa-book-open) 6.1. База знаний - Статьи/заметки по снаряжению, техникам, ориентированию - Полезные ссылки - Законодательство
**7. Общие функции приложения** ::icon(fa fa-cogs) 7.1. Пользовательский интерфейс - Интуитивно понятный, удобный - Возможность настройки 7.2. Поиск и фильтрация - Поиск по маршрутам, участникам, походам - Фильтры по датам, сложности, статусу 7.3. Резервное копирование и восстановление данных - Локальное сохранение - Возможность экспорта/импорта данных 7.4. Безопасность данных - Защита личных данных участников 7.5. Помощь и документация - Встроенная справка - Руководство пользователя
|
