1
This commit is contained in:
71
1/report.md
Normal file
71
1/report.md
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# Лабораторная работа 1. Литвинов Б23-503
|
||||||
|
|
||||||
|
## **Анализ предметной области**
|
||||||
|
|
||||||
|
### **Цель**
|
||||||
|
|
||||||
|
Научиться извлекать бизнес-логику из текстового технического задания.
|
||||||
|
|
||||||
|
### **Содержание работы**
|
||||||
|
|
||||||
|
Студент должен:
|
||||||
|
|
||||||
|
* проанализировать текст варианта;
|
||||||
|
* выявить бизнес-правила;
|
||||||
|
* определить связи между сущностями предметной области.
|
||||||
|
|
||||||
|
### **Отчетные материалы**
|
||||||
|
|
||||||
|
* список бизнес-правил (нумерованный);
|
||||||
|
* матрица связей сущностей.
|
||||||
|
|
||||||
|
# список бизнес-правил (нумерованный)
|
||||||
|
|
||||||
|
1. `Курс` состоит из `занятий`, проводимых последовательно. `Клиенты` создают `запись` на `курс`
|
||||||
|
1. Для практических и части теоретических `занятий`, требуются `продукты`, `оборудование` в зависимости от количества `клиентов`
|
||||||
|
1. `В помещении` может находится `оборудование`, которое будет использовано на `занятии`, остальное нужно докупить
|
||||||
|
1. Набор `клиентов` ограничен вместимостью `помещения`. `Клиенты`, которым не хватило места, попадают на следующий `курс`
|
||||||
|
1. Сначала `клиенты` записываются, потом арендуем `помещение` и `оборудование`, либо наоборот
|
||||||
|
1. Мастера ведут или `курс` целиком, или `занятия`. Оплата за каждое `занятие` отдельно
|
||||||
|
1. Не менее двух `мастеров` на `занятие`
|
||||||
|
1. Аптечка на каждом `курсе`, имеет доступ `мастер`
|
||||||
|
1. Непереносимость `лекарств` `мастером` или `клиентом`
|
||||||
|
1. Действия по изменению сущностей записываются в `логах действий`
|
||||||
|
|
||||||
|
# матрица связей сущностей
|
||||||
|
|
||||||
|
E1 клиент
|
||||||
|
E2 мастер
|
||||||
|
E3 студия
|
||||||
|
E4 занятие
|
||||||
|
E5 курс
|
||||||
|
E6 запись
|
||||||
|
E7 продукты
|
||||||
|
E8 оборудование
|
||||||
|
E9 аптечка
|
||||||
|
E10 лекарство
|
||||||
|
E11 непереносимость
|
||||||
|
|
||||||
|
`дополнительные`
|
||||||
|
E12 лекарство как категория
|
||||||
|
E13 продукт как категория
|
||||||
|
E14 логи действий
|
||||||
|
|
||||||
|
|
||||||
|
| x | E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10| E11| E12| E13| E14|
|
||||||
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
|
||||||
|
| E1 | x | | | | | M | | | | | M | | | |
|
||||||
|
| E2 | | x | | M | M | | | | | | M | | | |
|
||||||
|
| E3 | | | x | M | | | | M | | | | | | |
|
||||||
|
| E4 | | M | O | x | O | | M | M | | | | | | |
|
||||||
|
| E5 | | O | | M | x | M | | | O | | | | | |
|
||||||
|
| E6 | O | | | | O | x | | | | | | | | |
|
||||||
|
| E7 | | | | O | | | x | | | | | | O | |
|
||||||
|
| E8 | | | O | M | | | | x | | | | | | |
|
||||||
|
| E9 | | | | | O | | | | x | M | | | | |
|
||||||
|
| E10| | | | | | | | | O | x | | O | | |
|
||||||
|
| E11| O | O | | | | | | | | | x | M | | |
|
||||||
|
| E12| | | | | | | | | | | | x | | |
|
||||||
|
| E13| | | | | | | | | | | | | x | |
|
||||||
|
| E14| O | O | O | O | O | | O | O | O | O | O | O | O | x |
|
||||||
|
|
||||||
BIN
задание.jpg
Normal file
BIN
задание.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.5 MiB |
215
регламент.md
Normal file
215
регламент.md
Normal 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.
|
||||||
|
|
||||||
|
### **Отчетные материалы**
|
||||||
|
|
||||||
|
* сценарии для нескольких сессий;
|
||||||
|
* пошаговое описание воспроизведения;
|
||||||
|
* выводы.
|
||||||
|
|
||||||
Reference in New Issue
Block a user