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:01] – [Лабораторная работа 5. Триггеры] eugeneaidb:main [2025/12/09 12:56] (current) – [🎯 Лабораторная работа 3. Представления и процедуры] eugeneai
Line 1: Line 1:
 ====== Базы данных ====== ====== Базы данных ======
  
-===== Лабораторные работы =====+<!-- {{topic>базыанных&navbar}} -->
  
-==== Лабораторная работа 1. Проектирование структуры БД ====+===== 🎓 Лабораторные работы =====
  
-**Цель** лабораторной работы - спроектировать структуру базы данных (БД), исходя из постановки задачи И **консультации с преподавателем**, если это необходимо.+Лабораторные работы 6-10 🚀 [[db:new|ТОПТ уровня]] 8-).
  
-**Требование 1**: База данных должна содержать от трех до пяти таблицЕсли при проектировании получается слишком много, то надо упрощать постановку задачи.+==== 🎯 Лабораторная работа 1Проектирование структуры БД ====
  
-**Требование 2**: База данных должна быть в третьей нормальной форме, а лучше в пятой. +**Важно!** Согласовать модель с преподавателем до продолжения работы
  
-  - Выбрать задачу из одного из учебных пособий: +**Цель**: Спроектировать структуру базы данных, соответствующую бизнес-требованиям и нормализованную до 3NF.
-    Список задач к.т.н. Сосинской С.С. {{db:варианты_заданий_по_уд.pdf| Варианты заданий}} +
-    Задачи, сгенерированные [[db:nn_tasks | нейронной сетью]].  +
-  - Спроектировать ER-диаграмму (рисовать модель можно в любом виде и в любой нотации: UMLET, листок (фото) бумаги, онлайн-приложения и т.п.) +
-  - Проверить и отработать результат с нейронной сетью Deepseek (требуется учетная запись Google Gmail). +
-  - **Согласовать ПОЛУЧЕННУЮ модель с преподавателем** (по факту, сдать лабораторную работу 1 преподавателю): если этот этап не пройти, то потом все остальное надо будет переделывать, это включая оставшуюся часть данной лабораторной и остальные лабораторные+
  
-Отчет по лабораторным работам представляется **один общий** в виде файла README.md на сайте https://github.com или https://gitverse.ru в виде [[https://github.com/stud-labs/DATA-BASE-THEORY-LAB-1ткрытого проекта]].+**📋 Требования:** 
 +^ Требование ^ Описание 
 +**Требование 1** | Соответствие всем частям задания (структура + выходные документы) | 
 +| **Требование 2** | 3-5 таблиц в базе данных | 
 +| **Требование 3** Нормализация до третьей нормальной формы |
  
-==== Лабораторная работа 2. Инсталляция БД на сервере ====+**🚀 Шаги выполнения:** 
 +  - **Выбор задачи** из учебных пособий: 
 +     * {{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]] 
 +  - **Согласование** полученной модели с преподавателем
  
-  - По правилам преобразования сформировать из ER-диаграммы **Логическую модель** +**📊 Пример проекта:** [[https://github.com/eugeneai/lab-db-2025-1|Github репозиторий]]
-  - Спроектировать **Физическую модель** +
-  - Физическую модель преобразовать в DDL-запросы, формирующие БД PostgreSQL при помощи клиента https://sql.iscnet.ru/pgadmin4 +
-  Заполнить таблицы в БД данными (минимум 4 строки). +
-  - Выполнить **содержательный** запрос SELECT с JOIN-нами (2-3) подчиненные таблицы.+
  
-==== Лабораторная работа 3Представление (View) ====+==== 🎯 Лабораторная работа 2Инсталляция БД на сервере ====
  
-  - Реализовать представление для выходных документов (см. вариант задания) +**Цель**: Практическое развертывание базы данных и работа с SQL.
-  - Реализовать встроенную процедуры с параметрами запроса к представлениям, обрамляющую представления+
  
-==== Лабораторная работа 4. Анализ производительности исполнения запросов ====+**🔧 Инструменты:** 
 +  * **Клиент БД**: [[https://sql.iscnet.ru/pgadmin4|pgAdmin 4]] или [[https://dbeaver.io|DBeaver]] 
 +  * **СУБД**: PostgreSQL 15+
  
-  Создать генератор данных для вашей БД, такой, чтобы в каждой таблице было по 20 000 записей +**📋 Задачи:** 
-  - Проанализировать порядок выполнения этапов запросов для запросов выходных документов +  Преобразование ER-диаграммы в логическую модель 
-  Провести совершенствование БД с целью ускорения исполнения запросов+  - Проектирование физической модели 
 +  - Создание DDL-запросов для PostgreSQL 
 +  - Заполнение таблиц данными (минимум 4 строки) 
 +  - Проверка при помощи Deepseek 4 и 5 нормальных форм (по желанию) 8-) 
 +    Делаете дамп вашей схемы данных (для командной строки пример - 'pg_dump -n eugeneai --insert study') в клиенте 
 +    - Отдаете в ваш чат Deepseek с запросом на проверку 
 +    - Добавляете результат в отчет 
 +  - Выполнение содержательных SELECT-запросов с JOIN 2-3 таблиц (**Выходные документы по заданию**, их **два**!)
  
-**Требование**: Понимать последовательность выполнения операцийспособы соединения таблиц и тд.+<code sql> 
 +-- Пример запроса с JOIN 
 +SELECT u.nameo.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. Триггеры ==== 
  
-  - Реализовать триггеры для удаления записей в подчиненных таблицах ("многие") при удалении записи в основной ("один") 
-  - Реализовать триггер фиксации изменения таблиц в виде таблицы-журнала. Триггер записывает в таблицу информацию о том, какая команда (INSERT, UPDATE, DELETE) выполнена на вашей таблице и в какое время. 
  
-Telegram: @eugeneai +==== 🎯 Лабораторная работа 3. Представления и процедуры ====
-Пример {{https://github.com/eugeneai/lab-db-2025-1|организации проекта}}: https://github.com/eugeneai/lab-db-2025-1 (Github) +
-{{https://www.example.com|Пример сайта}}+
  
 +**Цель**: Освоение механизмов абстракции данных и программных модулей.
 +
 +**📋 Задачи:**
 +  - Создание представлений для выходных документов
 +  - Разработка хранимых процедур с параметрами
 +  - Представление сложных запросов при помощи представления
 +
 +<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.1759881702.txt.gz · Last modified: by eugeneai