====== Базы данных ======
===== 🎓 Лабораторные работы =====
Лабораторные работы 6-10 🚀 [[db:new|ТОП-ИТ уровня]] 8-).
==== 🎯 Лабораторная работа 1. Проектирование структуры БД ====
**Важно!** Согласовать модель с преподавателем до продолжения работы
**Цель**: Спроектировать структуру базы данных, соответствующую бизнес-требованиям и нормализованную до 3NF.
**📋 Требования:**
^ Требование ^ Описание ^
| **Требование 1** | Соответствие всем частям задания (структура + выходные документы) |
| **Требование 2** | 3-5 таблиц в базе данных |
| **Требование 3** | Нормализация до третьей нормальной формы |
**🚀 Шаги выполнения:**
- **Выбор задачи** из учебных пособий:
* {{db:варианты_заданий_по_уд.pdf| Варианты заданий к.т.н. Сосинской С.С.}}
* Задачи, сгенерированные [[db:nn_tasks|нейронной сетью]]
- **Проектирование ER-диаграммы** в современных инструментах:
* [[https://dbdiagram.io|DBDiagram]] (рекомендуется)
* [[https://draw.io|Draw.io]]
* [[https://plantuml.com|PlantUML]]
- **Валидация модели** через [[https://github.com/eugeneai/lab-db-2025-1|Deepseek]]
- **Согласование** полученной модели с преподавателем
**📊 Пример проекта:** [[https://github.com/eugeneai/lab-db-2025-1|Github репозиторий]]
==== 🎯 Лабораторная работа 2. Инсталляция БД на сервере ====
**Цель**: Практическое развертывание базы данных и работа с SQL.
**🔧 Инструменты:**
* **Клиент БД**: [[https://sql.iscnet.ru/pgadmin4|pgAdmin 4]] или [[https://dbeaver.io|DBeaver]]
* **СУБД**: PostgreSQL 15+
**📋 Задачи:**
- Преобразование ER-диаграммы в логическую модель
- Проектирование физической модели
- Создание DDL-запросов для PostgreSQL
- Заполнение таблиц данными (минимум 4 строки)
- Проверка при помощи Deepseek 4 и 5 нормальных форм (по желанию) 8-)
- Делаете дамп вашей схемы данных (для командной строки пример - 'pg_dump -n eugeneai --insert study') в клиенте
- Отдаете в ваш чат Deepseek с запросом на проверку
- Добавляете результат в отчет
- Выполнение содержательных SELECT-запросов с JOIN 2-3 таблиц (**Выходные документы по заданию**, их **два**!)
-- Пример запроса с JOIN
SELECT u.name, o.order_date, p.product_name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id;
==== 🎯 Лабораторная работа 3. Представления и процедуры ====
**Цель**: Освоение механизмов абстракции данных и программных модулей.
**📋 Задачи:**
- Создание представлений для выходных документов
- Разработка хранимых процедур с параметрами
- Представление сложных запросов при помощи представления
-- Пример создания представления
CREATE VIEW sales_report AS
SELECT c.name, SUM(o.amount) as total_sales
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.name;
==== 🎯 Лабораторная работа 4. Анализ производительности ====
**Цель**: Освоение методов анализа и оптимизации производительности БД.
**📋 Задачи:**
- Создание генератора данных (20 000 записей в каждой таблице)
- Анализ планов выполнения запросов (EXPLAIN ANALYZE)
- Оптимизация БД через индексы и настройки
- Сравнение производительности до/после оптимизации
**🔧 Инструменты:**
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM large_table WHERE condition;
==== 🎯 Лабораторная работа 5. Триггеры и аудит ====
**Цель**: Реализация бизнес-логики на уровне БД и системы аудита.
**📋 Задачи:**
- Триггеры каскадного удаления для связей "один-ко-многим"
- Триггеры аудита изменений (INSERT, UPDATE, DELETE)
- Создание таблицы-журнала для отслеживания изменений
-- Пример триггера аудита
CREATE TRIGGER audit_customer_changes
AFTER INSERT OR UPDATE OR DELETE ON customers
FOR EACH ROW EXECUTE FUNCTION log_customer_changes();
===== 🚀 ТОП-ИТ УРОВЕНЬ =====
Лабораторные работы 6-10 🚀 [[db:new|ТОП-ИТ уровня]] 8-).
===== 📈 Система оценивания =====
**🎓 Базовый уровень (лабы 1-5):**
^ Лабораторная ^ Макс. балл ^ Срок сдачи ^
| Лаб 1. Проектирование | 20 | 3 недели |
| Лаб 2. Инсталляция | 25 | 2 недели |
| Лаб 3. Представления | 20 | 2 недели |
| Лаб 4. Производительность | 20 | 2 недели |
| Лаб 5. Триггеры | 15 | 2 недели |
| **Итого** | **100** | |
**🚀 ТОП-ИТ уровень (лабы 6-10):**
^ Лабораторная ^ Макс. балл ^ Бонусы ^
| Лаб 6. Репликация | 25 | +5 к итогу |
| Лаб 7. CI/CD | 25 | +5 к итогу |
| Лаб 8. Оптимизация | 25 | +5 к итогу |
| Лаб 9. Безопасность | 25 | +5 к итогу |
| Лаб 10. NoSQL | 25 | +5 к итогу |
**Примечание:** Лабораторные 6-10 являются дополнительными и выполняются по желанию для повышения оценки
===== 🔗 Ресурсы и контакты =====
**📚 Учебные материалы:**
* {{db:варианты_заданий_по_уд.pdf|Базовые задания}}
* [[db:nn_tasks|Задания от нейросети]]
* [[https://github.com/eugeneai/lab-db-2025-1|Пример проекта на GitHub]]
**💼 Платформы для сдачи:**
* [[https://github.com|GitHub]]
* [[https://gitverse.ru|GitVerse]] (российский аналог)
**📞 Контакты:**
* **Telegram**: @eugeneai
* **Пример организации проекта**: [[https://github.com/eugeneai/lab-db-2025-1|GitHub]]
**Совет:** Начните работу заранее - сложные лабораторные требуют глубокого понимания и времени на отладку!
{{tag>базы_данных лабораторные_работы postgresql топ-ит}}