An open API service indexing awesome lists of open source software.

https://github.com/dmitryvasilkovw/itmo-database-design-labs-4-sem


https://github.com/dmitryvasilkovw/itmo-database-design-labs-4-sem

database database-management docker dockerfile itmo mongodb postgres postgresql-database sql

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

          

# ITMO-Database-design-labs-4-sem

# Лабораторная работа 1. Проектирование архитектуры БД

## Задачи:
1. Провести анализ функционала сайта или портала в выбранной предметной области с позиции работы с данными, выделить сущности, их атрибуты и связи между сущностями.
2. Спроектировать архитектуру БД для выбранной темы в виде ER-diagram в нотации IDEF1X или UML.

## Порядок выполнения работы:
1. Выбрать один из предложенных ниже вариантов предметных областей или согласовать с преподавателем другой вариант.
2. Провести анализ функционала сайта или портала в выбранной предметной области с позиции работы с данными, выделить сущности, их атрибуты и связи между сущностями.
3. Спроектировать архитектуру БД для выбранной темы в виде ER-diagram в нотации IDEF1X или UML.
4. Предоставить отчёт, включить в него следующие данные:
- краткое описание предметной области и портала, в том числе пояснение, охватывает ли моделирование все данные или только те, которые относятся к некоторым бизнес-процессам (указать к каким);
- модель данных, построенная с учетом заданных требований;
- обоснование нахождения модели данных в 3НФ (или выше по желанию).

## Требования к архитектуре БД:
1. Минимум 3 НФ.
2. Минимум 6 таблиц, максимум 12 таблиц.
3. Должны быть указаны ключи.
4. Должны быть разные связи, в том числе многие ко многим и один ко многим.
5. Типы атрибутов должны быть указаны.
6. Должна существовать таблица пользователей.

## Вариант:
17 Аренда автомобилей (например, https://www.sixt.ru/)

---

# Лабораторная работа 2. Создание таблиц в PostgreSQL

## Задачи:
1. На основе спроектированной ER-diagram из 1 лабораторной создать таблицы.
2. Заполнить таблицы данными, минимум по 15 записей в основных таблицах.

## Порядок выполнения работы:
1. Скачайте и установите PostgreSQL (также установите pgAdmin, pgBouncer)
2. Выполнение:
1. Создать схему и таблицы, принадлежащие этой схеме.
2. Заполнить созданные таблицы данными (минимум по 15 записей в основных таблицах). Часть таблиц должна быть заполнена SQL-запросами, другая часть таблиц должна быть заполнена из csv файлов.
3. Предоставить отчёт, включив в него код для создания и заполнения таблиц.

На защите лабораторной необходимо будет продемонстрировать как были созданы схема, таблицы, а также сами SQL-запросы, csv файлы и заполненные таблицы.

---

# Лабораторная работа 3. Создание представления и индексов в PostgreSQL

## Задача:
Создать представление и индексы к нескольким таблицам (минимум к двум).

## Требования к представлению:
1. Должны быть задействованы минимум 2 таблицы.
2. Должно быть задействовано минимум 4 поля.

## Требования к индексу:
1. Должны использоваться минимум 2 поля для создания индекса.
2. Должно быть создано минимум 2 индекса к разным таблицам.

## Порядок выполнения работы:
1. Выбрать таблицы и поля для представления и создать само представление.
2. Выбрать поля, по которым будет создан индекс и создать индексы (минимум к двум таблицам).
3. Сделать выборку из таблиц, используя созданные индексы.
4. Предоставить отчет, включить в него следующие данные:
- перечень таблиц и полей, задействованных в представлении;
- представлении и его назначение для ваших данных;
- данные из представления;
- индексы и по каким полям они строились;
- query plan для разбора запросов select, по которому будет видно, что ваши созданные индексы используются.

На защите лабораторной необходимо будет продемонстрировать созданное представление, индексы, select и query plan.

---

# Лабораторная работа 4. Маскировка и анонимизация данных

## Задачи:
1. Замаскировать поля с конфиденциальными данными.
2. Провести анонимизацию данных.

## Порядок выполнения работы:
1. Установите расширение PostgreSQL Anonymizer.
2. Выберите поля, которые необходимо замаскировать и модифицируйте уже существующие таблицы или представления.
- Динамическая маскировка данных
3. Выберите данные, которые можно анализировать, скрыв, обобщив конфиденциальные данные. Создайте три Materialized Views используя:
1. Generalization – заменяет данные более широкими и менее точными значениями, диапазонами.
2. Используйте 2 стратегии анонимизации из списка:
- Destruction
- Adding Noise
- Randomization
- Faking
- Advanced Faking
- Pseudonymization
- Generic Hashing
- Partial scrambling
4. Предоставить отчёт, включить в него следующие данные:
- перечень таблиц и полей, задействованных в Materialized Views;
- данные из Materialized Views;
- код по маскировке и анонимизации.

На защите лабораторной необходимо будет продемонстрировать, как работает маскировка на ваших данных, Materialized Views, сами данные из БД, а так же код.

---

# Лабораторная работа 5. Партицирование в PostgreSQL

## Задача:
Сделать партицирование одной таблицы через наследование.

## Требования:
1. Таблица должна быть разбита на не менее, чем 3 партиции.
2. В каждой партиции должно быть не менее 5 записей.

## Порядок выполнения работы:
1. Выберите таблицу, которую можно разбить на партиции. Определите условия разбиения таблицы на партиции.
2. Создайте таблицы-партиции.
3. Создайте функцию, обеспечивающую партицирование.
4. Подключите функцию к мастер-таблице.
5. Перенесите данные из мастер-таблицы в партиции.
6. Очистите мастер-таблицу и добавьте в нее новые данные.

На защите лабораторной необходимо будет продемонстрировать мастер-таблицу, таблицы-партиции, функцию, обеспечивающую партицирование, результаты выполнения запросов для добавления новых записей и чтения таблиц.

---

# Лабораторная работа 6. Создание базы данных в MongoDB

## Задача:
Создать базу данных в MongoDB на примере схемы, сделанной в первой лабораторной работе.

## Требования:
1. Необходимо взять за основу схему БД из первой лабораторной работы.
2. В основных коллекциях должно быть не менее 10 записей.

## Порядок выполнения работы:
1. Проанализируйте, как будет выглядеть NoSQL база данных, содержащая те же сущности, что и реляционная модель в первой лабораторной работе.
2. Модифицируйте структуры для хранения данных, если необходимо.
3. Создайте коллекции.
4. Создайте индекс, содержащий как минимум два поля для одной из коллекций.
5. Заполните БД данными.
6. Создайте представление, которое будет в себя включать данные как минимум из двух таблиц.

На защите лабораторной необходимо будет продемонстрировать базу данных, выборки данных, индекс, представление, запросы.