1. Лабораторная работа: Моделирование данных, реляционная алгебра
- Теоретическая часть:
- Введение в реляционные базы данных.
- Основные концепции реляционной алгебры: отношение, кортеж, атрибут.
- Операции реляционной алгебры: выборка, проекция, объединение, разность, декартово произведение, деление.
- Концепции нормализации данных: 1NF, 2NF, 3NF.
- Первичные и внешние ключи, сущности и связи.
- Практическая часть:
- Построение ER-диаграмм для предметной области.
- Преобразование ER-диаграмм в реляционные схемы.
- Реализация простой базы данных в PostgreSQL (создание таблиц).
2. Лабораторная работа: Архитектура PostgreSQL, компоненты SQL (DDL, DML)
- Теоретическая часть:
- Архитектура PostgreSQL: процессы (postmaster, worker, autovacuum), управление памятью.
- Структура базы данных: базы, схемы, таблицы, индексы, роли.
- Введение в SQL: компоненты DDL, DML.
- Создание и изменение структуры базы данных с использованием DDL.
- Операции вставки, удаления, обновления данных (DML).
- Практическая часть:
- Создание базы данных и таблиц в PostgreSQL.
- Выполнение операций с данными: вставка, обновление, удаление.
- Управление структурой таблиц: добавление, изменение столбцов.
3. Лабораторная работа: План выполнения запросов, сложные запросы, подзапросы
- Теоретическая часть:
- Как PostgreSQL выполняет запросы: планировщик, оптимизатор.
- Анализ и оптимизация запросов с использованием EXPLAIN и EXPLAIN ANALYZE.
- Подзапросы: коррелированные и некоррелированные подзапросы.
- Операции фильтрации данных (
WHERE
,HAVING
). - Агрегация данных: функции
COUNT()
,SUM()
,AVG()
,MIN()
,MAX()
. - Сортировка и ограничение результата:
ORDER BY
,LIMIT
.
- Практическая часть:
- Выполнение сложных запросов с использованием подзапросов.
- Использование агрегационных функций для анализа данных.
- Оптимизация запросов с использованием EXPLAIN.
4. Лабораторная работа: JOIN и UNION
- Теоретическая часть:
- Операция соединения таблиц: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN.
- Объединение данных: UNION, UNION ALL, INTERSECT, EXCEPT.
- Пример использования операций соединения для сложных запросов.
- Практическая часть:
- Выполнение запросов с различными типами соединений.
- Объединение результатов из нескольких таблиц с использованием UNION.
- Работа с множественными объединениями (многоуровневые JOIN).
5. Лабораторная работа: Хранимые процедуры, функции, триггеры, PL/pgSQL
- Теоретическая часть:
- Введение в процедурные возможности PostgreSQL.
- Хранимые функции: создание, вызов, использование параметров.
- PL/pgSQL: циклы, условия, переменные.
- Триггеры: типы триггеров, практическое использование для автоматизации.
- Практическая часть:
- Создание простых функций и процедур на PL/pgSQL.
- Реализация триггеров для обеспечения целостности данных.
- Пример использования процедур для обработки бизнес-логики.
6. Лабораторная работа: TCL (Transaction Control Language)
- Теоретическая часть:
- Основы транзакций в PostgreSQL: атомарность, консистентность, изолированность, долговечность (ACID).
- Управление транзакциями:
BEGIN
,COMMIT
,ROLLBACK
,SAVEPOINT
. - Уровни изоляции транзакций: READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
- Практическая часть:
- Выполнение операций в рамках транзакций.
- Управление транзакциями при возникновении ошибок.
- Пример работы с уровнями изоляции для предотвращения проблем с параллелизмом.
7. Лабораторная работа: DCL, взаимодействие с БД в клиентских приложениях
- Теоретическая часть:
- Управление правами пользователей:
GRANT
,REVOKE
. - Роли и группы в PostgreSQL, настройка доступа к базам данных.
- Взаимодействие клиентских приложений с базой данных (Python, Java, etc.).
- Основы ORM (Object-Relational Mapping).
- Управление правами пользователей:
- Практическая часть:
- Настройка ролей и прав доступа для пользователей.
- Создание простого приложения для взаимодействия с PostgreSQL.
- Интеграция базы данных в клиентское приложение через ORM (например, SQLAlchemy, Hibernate).