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

отчет лабы РПП 1-3

.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
781.47 Кб
Скачать

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

ФОРМАТ ОБМЕНА ДАННЫМИ JSON

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

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

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

На основе ДАННЫХ базы данных, разработанной в рамках выполнения курсовой работы по дисциплине «Базы данных», выполнить:

  1. Представление данных 3-4 связанных сущностей (одну основную и остальные зависимые/определяюшие/дополняющие) в формате JSON создать файл с данными;

  2. Визуализацию данных в среде программирования (среда разработки СУБД MongoDB или язык программирования Python с подключением любой СУБД, в том числе реляционной);

  3. Создание базы данных документов JSON или использовать JSON файлы как базу данных на основе сущностей, выбранных в п.1;

  4. Операции по управлению базой данных (вставка, удаление, корректировка - минимум по команде на каждую операцию);

  5. Запросы (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.

При этом:

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

  2. Хранилище может содержать только информацию, необходимую для анализа; при этом содержать не менее 4 таблиц измерений, НЕ включая таблицы справочники;

  3. На хранилище не накладываются требования нормализации (денормализацией можно добиться более понятной схемы для построения куба, а также скорости загрузки данных в куб).

  4. Таблиц фактов может быть одна или две (записей в них не менее 20);

  5. Анализ должен давать ответ на 5-7 вопросов (запросов); вопросы формулируются самостоятельно;

  6. Измерение времени (нужные для анализа атрибуты времени - значения и названия) выбирается студентом самостоятельно.

Примечание.

Среда разработки выбирается студентом.

Запросы:

  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 DESC LIMIT 1;

  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;

  1. Средний возраст туристов

SELECT AVG(age) AS avg_age FROM client;

  1. Маршруты, пройденные за лето 2024 год

SELECT DISTINCT route_pk FROM hiking_tours WHERE date_of_departure BETWEEN '2024-06-01' AND '2024-08-31';

  1. Категория маршрута, на который ходили реже всего

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;

  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. Помощь и документация

        - Встроенная справка

        - Руководство пользователя