User Tools

Site Tools


db:main

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
db:main [2025/10/08 08:11] – [Лабораторная работа 1. Проектирование структуры БД] eugeneaidb:main [2025/12/09 12:56] (current) – [🎯 Лабораторная работа 3. Представления и процедуры] eugeneai
Line 1: Line 1:
 ====== Базы данных ====== ====== Базы данных ======
  
-===== Лабораторные работы =====+<!-- {{topic>базыанных&navbar}} -->
  
-Пример проекта находится [[https://github.com/eugeneai/lab-db-2025-1|здесь]]. +===== 🎓 Лабораторные работы =====
-==== Лабораторная работа 1. Проектирование структуры БД ====+
  
-**Цель** лабораторной работы - спроектировать структуру базы данных (БД), исходя из постановки задачи И **консультации с преподавателем**, если это необходимо.+Лабораторные работы 6-10 🚀 [[db:new|ТОПТ уровня]] 8-).
  
-**Требование 1**: Спроектированная структура должна соответствовать всем частям задания (и структурной, и возможности получить выходные документы). +==== 🎯 Лабораторная работа 1. Проектирование структуры БД ====
  
-**Требование 2**: База данных должна содержать от трех до пяти таблиц. Если при проектировании получается слишком много, то надо упрощать постановку задачи.+**Важно!** Согласовать модель с преподавателем до продолжения работы
  
-**Требование 3**: База данных должна быть в третьей нормальной форме+**Цель**: Спроектировать структуру базы данных, соответствующую бизнес-требованиям и нормализованную до 3NF.
  
-  - Выбрать задачу из одного из учебных пособий+**📋 Требования:** 
-    * Список задач к.т.н. Сосинской С.С. {{db:варианты_заданий_по_уд.pdf| Варианты заданий}} +^ Требование ^ Описание ^ 
-    Задачи, сгенерированные [[db:nn_tasks нейронной сетью]].  +**Требование 1** Соответствие всем частям задания труктура + выходные документы) | 
-  - Спроектировать ER-диаграмму (рисовать модель можно в любом виде и в любой нотации: UMLET, листок (фото) бумаги, онлайн-приложения и т.п.) +| **Требование 2** | 3-5 таблиц в базе данных | 
-  - Проверить и [[https://github.com/eugeneai/lab-db-2025-1|отработать результат]] с нейронной сетью Deepseek (требуется учетная запись Google Gmail), чтобы выполнились требования. 8-) +**Требование 3** | Нормализация до третьей нормальной формы |
-  - **Согласовать ПОЛУЧЕННУЮ модель с преподавателем** (по факту, сдать лабораторную работу 1 преподавателю): если этот этап не пройти, то потом все остальное надо будет переделывать, это включая оставшуюся часть данной лабораторной и остальные лабораторные+
  
-Отчет по лабораторным работам представляется **один общий** в виде файла README.md на сайте https://github.com или https://gitverse.ru в виде [[https://github.com/stud-labs/DATA-BASE-THEORY-LAB-1|открытого проекта]] (прошлогодний проект). Настоящий 8-) [[https://github.com/eugeneai/lab-db-2025-1|здесь]].+**🚀 Шаги выполнения:** 
 +  - **Выбор задачи** из учебных пособий
 +     {{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]] 
 +  - **Согласование** полученной модели с преподавателем
  
-==== Лабораторная работа 2Инсталляция БД на сервере ====+**📊 Пример проекта:** [[https://github.com/eugeneai/lab-db-2025-1|Github репозиторий]]
  
-  - По правилам преобразования сформировать из ER-диаграммы **Логическую модель** +==== 🎯 Лабораторная работа 2Инсталляция БД на сервере ====
-  - Спроектировать **Физическую модель** +
-  - Физическую модель преобразовать в DDL-запросы, формирующие БД PostgreSQL при помощи клиента https://sql.iscnet.ru/pgadmin4 +
-  - Заполнить таблицы в БД данными (минимум 4 строки). +
-  - Выполнить **содержательный** запрос SELECT с JOIN-нами (2-3) подчиненные таблицы.+
  
-==== Лабораторная работа 3. Представление (View) ====+**Цель**: Практическое развертывание базы данных и работа с SQL.
  
-  - Реализовать представление для выходных документов (см. вариант задания) +**🔧 Инструменты:** 
-  - Реализовать встроенную процедуры с параметрами запроса к представлениям, обрамляющую представления+  * **Клиент БД**: [[https://sql.iscnet.ru/pgadmin4|pgAdmin 4]] или [[https://dbeaver.io|DBeaver]] 
 +  * **СУБД**: PostgreSQL 15+
  
-==== Лабораторная работа 4. Анализ производительности исполнения запросов ====+**📋 Задачи:** 
 +  - Преобразование ER-диаграммы в логическую модель 
 +  - Проектирование физической модели 
 +  - Создание DDL-запросов для PostgreSQL 
 +  - Заполнение таблиц данными (минимум 4 строки) 
 +  - Проверка при помощи Deepseek 4 и 5 нормальных форм (по желанию) 8-) 
 +    - Делаете дамп вашей схемы данных (для командной строки пример - 'pg_dump -n eugeneai --insert study') в клиенте 
 +    - Отдаете в ваш чат Deepseek с запросом на проверку 
 +    - Добавляете результат в отчет 
 +  - Выполнение содержательных SELECT-запросов с JOIN 2-3 таблиц (**Выходные документы по заданию**, их **два**!)
  
-  Создать генератор данных для вашей БД, такой, чтобы в каждой таблице было по 20 000 записей +<code sql> 
-  - Проанализировать порядок выполнения этапов запросов для запросов выходных документов +-- Пример запроса с 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; 
 +</code>
  
-**Требование**: Понимать последовательность выполнения операций, способы соединения таблиц и т. д. 
  
-==== Лабораторная работа 5. Триггеры ==== 
  
-  - Реализовать триггеры для удаления записей в подчиненных таблицах ("многие") при удалении записи в основной ("один"+==== 🎯 Лабораторная работа 3Представления и процедуры ====
-  - Реализовать триггер фиксации изменения таблиц в виде таблицы-журналаТриггер записывает в таблицу информацию о том, какая команда (INSERT, UPDATE, DELETE) выполнена на вашей таблице и в какое время.+
  
-Telegram: @eugeneai +**Цель**Освоение механизмов абстракции данных и программных модулей.
-Пример [[https://github.com/eugeneai/lab-db-2025-1|организации проекта]](Github). Можно использовать [[https://gitverse.ru/home/|Gitverse.ru]], который требует регистрации через российские облачные сервисы.+
  
 +**📋 Задачи:**
 +  - Создание представлений для выходных документов
 +  - Разработка хранимых процедур с параметрами
 +  - Представление сложных запросов при помощи представления
  
 +<code sql>
 +-- Пример создания представления
 +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;
 +</code>
 +
 +==== 🎯 Лабораторная работа 4. Анализ производительности ====
 +
 +**Цель**: Освоение методов анализа и оптимизации производительности БД.
 +
 +**📋 Задачи:**
 +  - Создание генератора данных (20 000 записей в каждой таблице)
 +  - Анализ планов выполнения запросов (EXPLAIN ANALYZE)
 +  - Оптимизация БД через индексы и настройки
 +  - Сравнение производительности до/после оптимизации
 +
 +**🔧 Инструменты:**
 +<code sql>
 +EXPLAIN (ANALYZE, BUFFERS) 
 +SELECT * FROM large_table WHERE condition;
 +</code>
 +
 +==== 🎯 Лабораторная работа 5. Триггеры и аудит ====
 +
 +**Цель**: Реализация бизнес-логики на уровне БД и системы аудита.
 +
 +**📋 Задачи:**
 +  - Триггеры каскадного удаления для связей "один-ко-многим"
 +  - Триггеры аудита изменений (INSERT, UPDATE, DELETE)
 +  - Создание таблицы-журнала для отслеживания изменений
 +
 +<code sql>
 +-- Пример триггера аудита
 +CREATE TRIGGER audit_customer_changes
 +    AFTER INSERT OR UPDATE OR DELETE ON customers
 +    FOR EACH ROW EXECUTE FUNCTION log_customer_changes();
 +</code>
 +
 +===== 🚀 ТОП-ИТ УРОВЕНЬ =====
 +
 +Лабораторные работы 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 топ-ит}}
db/main.1759882274.txt.gz · Last modified: by eugeneai