/postgresql-course

Материалы по курсу практических занятий по БД 3 курс ПМИ и ФИИТ МАИ

Примерный план курса

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).