====== Базы данных ====== ===== 🎓 Лабораторные работы ===== Лабораторные работы 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 топ-ит}}