This commit is contained in:
2026-02-18 11:23:14 +03:00
commit 6ce8a15a08
3 changed files with 286 additions and 0 deletions

215
регламент.md Normal file
View File

@ -0,0 +1,215 @@
# Регламент выполнения лабораторных работ
### **Общие требования**
1. Все решения должны быть **логически согласованы между лабораторными работами**.
2. Изменение модели данных допускается, но должно быть аргументировано.
3. Запрещается:
1. копирование чужих схем и SQL-кода;
2. использование ORM и автоматических генераторов схем;
3. подмена логики БД логикой приложения;
4. использование языковых моделей для выполнения пунктов ЛР.
4. Все SQL-решения должны быть читаемыми, воспроизводимыми, корректно работающими на тестовых данных.
5. Названия таблиц, полей и сущностей должны отражать их семантику.
6. Разрешается использование языковых моделей для генерации массива тестовых данных.
7. Незнание какого-либо метода в коде вашей лабораторной работы будет приравнено к нарушению пункта 3.4. Сдача работы в таком случае останавливается.
Баллы за лабораторные работы:
* Сложность 2 из 5: Коэффициент 1.0
* Сложность 3 из 5: Коэффициент 1.1
* Сложность 4 из 5: Коэффициент 1.2
* Сложность 5 из 5: Коэффициент 1.3
Бонусные баллы, полученные от коэффициентов, могу быть добавлены к ответу на экзамене или баллам за КР *по усмотрению преподавателя*.
### **Формат сдачи**
Каждая лабораторная работа сдается в формате:
* ссылка на Git-репозиторий со всеми материалами ЛР;
* создание отчета о выполнение ЛР в формате pdf, который может включать в себя:
* ссылку на git
* диаграммы
* таблицы
* входные данные (например, запросы)
* выходные данные (таблицы с выводом по вашим данным)
* **Текстовое описание работы не подразумевается, только фиксация результата**
* устная защита на лабораторной работе.
## Лабораторная работа 2
**Концептуальное проектирование базы данных**
### **Цель**
Построить логически корректную модель данных.
### **Содержание работы**
Студент разрабатывает:
* ER-диаграмму;
* KB-диаграмму (ключи, ограничения, связи);
* описание атрибутов и доменов;
Студент должен понимать:
* семантику удаления и обновления данных.
### **Отчетные материалы**
* ER-диаграмма;
* KB-диаграмма;
* таблица атрибутов и доменов;
## Лабораторная работа 3
**Функциональная модель системы**
### **Цель**
Понять, как данные используются в бизнес-процессах.
### **Содержание работы**
* Студент строит FA-диаграмму
### **Отчетные материалы**
* FA-диаграмма;
## Лабораторная работа 4
**Физическая реализация базы данных**
**Срок выполнения: 2 недели**
### **Цель**
Перевести логическую модель в реальную базу данных.
### **Содержание работы**
Студент должен:
* разработать физическую схему БД (DDL);
* определить ограничения целостности;
* подготовить тестовые данные;
* автоматизировать пересоздание базы данных.
### **Отчетные материалы**
* SQL-скрипт создания схемы;
* SQL-скрипт начального наполнения;
* скрипт генерации тестовых данных (Python или другой удобный вам язык);
* инструкция по запуску.
## Лабораторная работа 5
**Аналитические SQL-запросы**
**Срок выполнения: 2 недели**
### **Цель**
Освоить сложные запросы и аналитические возможности SQL.
### **Обязательные требования к запросам**
Все запросы должны:
* использовать CTE;
* возвращать расширенный набор данных (не менее 7 строк вывода).
### **Необходимо реализовать 5 запросов, среди которые должны использоваться:**
1. Сложный JOIN (3+ таблиц) с фильтрами и HAVING.
2. Поиск отсутствующих данных (LEFT JOIN \+ IS NULL).
3. Оконная функция с `ROWS BETWEEN`.
4. Оконная функция смещения (`LAG` / `LEAD`).
### **Отчетные материалы**
* SQL-код запросов;
* примеры выполнения;
краткое описание логики каждого запроса.
## Лабораторная работа 6
**Триггеры и хранимые процедуры**
**Срок выполнения: 4 недели**
### **Цель**
Реализовать бизнес-логику на уровне базы данных.
### **Требования**
Необходимо реализовать:
* 2 триггера;
* 2 хранимые процедуры.
Триггеры и процедуры должны:
* реализовывать реальные бизнес-правила;
* обрабатывать негативные сценарии;
* корректно работать при множественных вставках.
### **Отчетные материалы**
* SQL-код триггеров;
* SQL-код процедур;
* тестовые сценарии (позитивные и негативные);
* примеры выполнения.
## Лабораторная работа 7
**Оптимизация и анализ выполнения запросов**
### **Цель**
Изучить влияние индексов и структуры запросов на производительность.
### **Содержание работы**
* согласовать с преподавателем 2 “сложных” запроса;
* снять планы выполнения `EXPLAIN (ANALYZE, BUFFERS)` до индексов;
* спроектировать индексы:
* составной,
* частичный,
* покрывающий;
* повторно снять планы;
* сравнить результаты.
### **Отчетные материалы**
* планы выполнения до и после;
* таблица сравнения показателей;
* пояснение выбора индексов и join-стратегий.
## Лабораторная работа 8 (дополнительная)
**Транзакции и уровни изоляции**
### **Цель**
Понять принципы ACID и конкурентного доступа.
### **Содержание работы**
Студент демонстрирует:
* non-repeatable read;
* phantom read;
* write skew;
* использование SAVEPOINT и ROLLBACK TO.
### **Отчетные материалы**
* сценарии для нескольких сессий;
* пошаговое описание воспроизведения;
* выводы.