Чему вы научитесь
Курс построен вокруг одной сквозной предметной области — учебного маркетплейса «ВсёМаркет». Вы не решаете разрозненные упражнения на случайных таблицах: вы с нуля проектируете ER-модель интернет-магазина, реализуете её в PostgreSQL, наполняете реальными данными, пишете к ней запросы любой сложности, приводите схему к нормальным формам, оживляете её функциями и триггерами на PL/pgSQL, разбираетесь с транзакциями и конкурентным доступом и в конце учитесь ускорять запросы индексами — всё на одной и той же базе, которая растёт вместе с вами от модуля к модулю.
Чему вы научитесь
- Архитектура СУБД: клиент-серверная модель, уровни ANSI-SPARC
- ER-моделирование: сущности, атрибуты, связи 1:1/1:N/M:N, рекурсивные связи
- DDL: типы данных, PRIMARY KEY, FOREIGN KEY, CHECK, схемы, роли и права доступа
- DML: INSERT/UPDATE/DELETE, TRUNCATE, массовая загрузка данных, работа с NULL
- SQL-запросы: JOIN всех видов, подзапросы, CTE и рекурсивные CTE, представления
- Нормализация: функциональные зависимости, 1NF–3NF, BCNF, осознанная денормализация
- PL/pgSQL: переменные, функции, триггеры, обработка исключений
- Транзакции: ACID, MVCC, уровни изоляции, блокировки, WAL
- Индексы и оптимизация: B-Tree, GIN, составные и частичные индексы, чтение EXPLAIN ANALYZE
- Docker: PostgreSQL и pgAdmin в контейнерах, базовые команды
Формат
Курс самостоятельный, без дедлайнов и защит — проходите в своём темпе. Каждый модуль — теория (зачем → как под капотом → синтаксис → пример на ВсёМаркет → типичные ошибки → совет практика), практика в личном Docker-окружении и квиз с разбором. Часть практических заданий проверяется автоматически, часть — через свободный ответ с вложением файла, который проверяет автор курса.
О курсе
Для кого этот курс
Начинающие разработчики и аналитики, которые хотят системно разобраться в реляционных базах данных и PostgreSQL — от проектирования до продакшен-приёмов вроде индексов и транзакций.
Начальные требования
Специальных знаний баз данных не требуется. Понадобится компьютер с Windows, macOS или Linux и установленный Docker Desktop — ставим его вместе в Модуле 1.