{"id":22783592,"url":"https://github.com/dmitryvasilkovw/itmo-database-design-labs-4-sem","last_synced_at":"2026-04-11T13:09:08.849Z","repository":{"id":224840284,"uuid":"749855126","full_name":"DmitryVasilkovW/ITMO-Database-design-labs-4-sem","owner":"DmitryVasilkovW","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-02T23:03:03.000Z","size":1004,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-05T16:46:52.386Z","etag":null,"topics":["database","database-management","docker","dockerfile","itmo","mongodb","postgres","postgresql-database","sql"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DmitryVasilkovW.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-29T14:32:58.000Z","updated_at":"2024-07-02T23:03:06.000Z","dependencies_parsed_at":"2024-03-03T19:28:15.551Z","dependency_job_id":"e75b8e8d-ee86-41b1-b33b-3eaeb5e4d12a","html_url":"https://github.com/DmitryVasilkovW/ITMO-Database-design-labs-4-sem","commit_stats":null,"previous_names":["dmitryvasilkovw/itmo-database-design-labs-4-sem"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitryVasilkovW%2FITMO-Database-design-labs-4-sem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitryVasilkovW%2FITMO-Database-design-labs-4-sem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitryVasilkovW%2FITMO-Database-design-labs-4-sem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitryVasilkovW%2FITMO-Database-design-labs-4-sem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DmitryVasilkovW","download_url":"https://codeload.github.com/DmitryVasilkovW/ITMO-Database-design-labs-4-sem/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246334456,"owners_count":20760646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","database-management","docker","dockerfile","itmo","mongodb","postgres","postgresql-database","sql"],"created_at":"2024-12-11T22:08:49.552Z","updated_at":"2025-12-30T23:16:44.430Z","avatar_url":"https://github.com/DmitryVasilkovW.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ITMO-Database-design-labs-4-sem\n\n# Лабораторная работа 1. Проектирование архитектуры БД\n\n## Задачи:\n1. Провести анализ функционала сайта или портала в выбранной предметной области с позиции работы с данными, выделить сущности, их атрибуты и связи между сущностями.\n2. Спроектировать архитектуру БД для выбранной темы в виде ER-diagram в нотации IDEF1X или UML.\n\n## Порядок выполнения работы:\n1. Выбрать один из предложенных ниже вариантов предметных областей или согласовать с преподавателем другой вариант.\n2. Провести анализ функционала сайта или портала в выбранной предметной области с позиции работы с данными, выделить сущности, их атрибуты и связи между сущностями.\n3. Спроектировать архитектуру БД для выбранной темы в виде ER-diagram в нотации IDEF1X или UML.\n4. Предоставить отчёт, включить в него следующие данные:\n   - краткое описание предметной области и портала, в том числе пояснение, охватывает ли моделирование все данные или только те, которые относятся к некоторым бизнес-процессам (указать к каким);\n   - модель данных, построенная с учетом заданных требований;\n   - обоснование нахождения модели данных в 3НФ (или выше по желанию).\n\n## Требования к архитектуре БД:\n1. Минимум 3 НФ.\n2. Минимум 6 таблиц, максимум 12 таблиц.\n3. Должны быть указаны ключи.\n4. Должны быть разные связи, в том числе многие ко многим и один ко многим.\n5. Типы атрибутов должны быть указаны.\n6. Должна существовать таблица пользователей.\n\n## Вариант:\n17 Аренда автомобилей (например, https://www.sixt.ru/)\n\n---\n\n# Лабораторная работа 2. Создание таблиц в PostgreSQL\n\n## Задачи:\n1. На основе спроектированной ER-diagram из 1 лабораторной создать таблицы.\n2. Заполнить таблицы данными, минимум по 15 записей в основных таблицах.\n\n## Порядок выполнения работы:\n1. Скачайте и установите PostgreSQL (также установите pgAdmin, pgBouncer)\n2. Выполнение:\n   1. Создать схему и таблицы, принадлежащие этой схеме.\n   2. Заполнить созданные таблицы данными (минимум по 15 записей в основных таблицах). Часть таблиц должна быть заполнена SQL-запросами, другая часть таблиц должна быть заполнена из csv файлов.\n3. Предоставить отчёт, включив в него код для создания и заполнения таблиц.\n\nНа защите лабораторной необходимо будет продемонстрировать как были созданы схема, таблицы, а также сами SQL-запросы, csv файлы и заполненные таблицы.\n\n---\n\n# Лабораторная работа 3. Создание представления и индексов в PostgreSQL\n\n## Задача:\nСоздать представление и индексы к нескольким таблицам (минимум к двум).\n\n## Требования к представлению:\n1. Должны быть задействованы минимум 2 таблицы.\n2. Должно быть задействовано минимум 4 поля.\n\n## Требования к индексу:\n1. Должны использоваться минимум 2 поля для создания индекса.\n2. Должно быть создано минимум 2 индекса к разным таблицам.\n\n## Порядок выполнения работы:\n1. Выбрать таблицы и поля для представления и создать само представление.\n2. Выбрать поля, по которым будет создан индекс и создать индексы (минимум к двум таблицам).\n3. Сделать выборку из таблиц, используя созданные индексы.\n4. Предоставить отчет, включить в него следующие данные:\n   - перечень таблиц и полей, задействованных в представлении;\n   - представлении и его назначение для ваших данных;\n   - данные из представления;\n   - индексы и по каким полям они строились;\n   - query plan для разбора запросов select, по которому будет видно, что ваши созданные индексы используются.\n\nНа защите лабораторной необходимо будет продемонстрировать созданное представление, индексы, select и query plan.\n\n---\n\n# Лабораторная работа 4. Маскировка и анонимизация данных\n\n## Задачи:\n1. Замаскировать поля с конфиденциальными данными.\n2. Провести анонимизацию данных.\n\n## Порядок выполнения работы:\n1. Установите расширение PostgreSQL Anonymizer.\n2. Выберите поля, которые необходимо замаскировать и модифицируйте уже существующие таблицы или представления.\n   - Динамическая маскировка данных\n3. Выберите данные, которые можно анализировать, скрыв, обобщив конфиденциальные данные. Создайте три Materialized Views используя:\n   1. Generalization – заменяет данные более широкими и менее точными значениями, диапазонами.\n   2. Используйте 2 стратегии анонимизации из списка:\n      - Destruction\n      - Adding Noise\n      - Randomization\n      - Faking\n      - Advanced Faking\n      - Pseudonymization\n      - Generic Hashing\n      - Partial scrambling\n4. Предоставить отчёт, включить в него следующие данные:\n   - перечень таблиц и полей, задействованных в Materialized Views;\n   - данные из Materialized Views;\n   - код по маскировке и анонимизации.\n\nНа защите лабораторной необходимо будет продемонстрировать, как работает маскировка на ваших данных, Materialized Views, сами данные из БД, а так же код.\n\n---\n\n# Лабораторная работа 5. Партицирование в PostgreSQL\n\n## Задача:\nСделать партицирование одной таблицы через наследование.\n\n## Требования:\n1. Таблица должна быть разбита на не менее, чем 3 партиции.\n2. В каждой партиции должно быть не менее 5 записей.\n\n## Порядок выполнения работы:\n1. Выберите таблицу, которую можно разбить на партиции. Определите условия разбиения таблицы на партиции.\n2. Создайте таблицы-партиции.\n3. Создайте функцию, обеспечивающую партицирование.\n4. Подключите функцию к мастер-таблице.\n5. Перенесите данные из мастер-таблицы в партиции.\n6. Очистите мастер-таблицу и добавьте в нее новые данные.\n\nНа защите лабораторной необходимо будет продемонстрировать мастер-таблицу, таблицы-партиции, функцию, обеспечивающую партицирование, результаты выполнения запросов для добавления новых записей и чтения таблиц.\n\n---\n\n# Лабораторная работа 6. Создание базы данных в MongoDB\n\n## Задача:\nСоздать базу данных в MongoDB на примере схемы, сделанной в первой лабораторной работе.\n\n## Требования:\n1. Необходимо взять за основу схему БД из первой лабораторной работы.\n2. В основных коллекциях должно быть не менее 10 записей.\n\n## Порядок выполнения работы:\n1. Проанализируйте, как будет выглядеть NoSQL база данных, содержащая те же сущности, что и реляционная модель в первой лабораторной работе.\n2. Модифицируйте структуры для хранения данных, если необходимо.\n3. Создайте коллекции.\n4. Создайте индекс, содержащий как минимум два поля для одной из коллекций.\n5. Заполните БД данными.\n6. Создайте представление, которое будет в себя включать данные как минимум из двух таблиц.\n\nНа защите лабораторной необходимо будет продемонстрировать базу данных, выборки данных, индекс, представление, запросы.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitryvasilkovw%2Fitmo-database-design-labs-4-sem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmitryvasilkovw%2Fitmo-database-design-labs-4-sem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitryvasilkovw%2Fitmo-database-design-labs-4-sem/lists"}