Учебник Теория баз данных для начинающих
Это теоретический фундамент, на котором стоят все практические курсы по SQL, PostgreSQL и MySQL. Здесь мы разбираемся не в том, как написать запрос, а в том, почему базы данных устроены именно так: откуда взялась реляционная модель, что такое отношение и ключ строго, как из обычной алгебры множеств вырастает язык запросов, как спроектировать схему без аномалий, что гарантирует транзакция и почему индекс ускоряет поиск. Курс рассчитан на студентов и практиков, которые хотят перестать догадываться и начать понимать. Мы соединяем строгие определения с интуицией и живыми SQL-примерами, разбираем каждую тему на сквозном примере интернет-магазина и библиотеки и доводим теорию нормализации до точных формулировок 1NF–BCNF.
Курс «Теория баз данных» состоит из 8 разделов и 25 уроков: Введение и модели данных, Реляционная модель, Реляционная алгебра, ER-моделирование и проектирование, Функциональные зависимости и нормализация, Транзакции и параллелизм, Физический уровень и оптимизация и Современный ландшафт. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение и модели данных
- Зачем нужны базы данных и СУБД
Чем база данных отличается от набора файлов, какие проблемы решает СУБД и почему данные стали отдельным управляемым ресурсом.
- Модели данных: от иерархической до документной
Что такое модель данных и чем отличаются иерархическая, сетевая, реляционная и документная модели — обзор с примерами и сравнением.
- Архитектура СУБД и независимость данных
Трёхуровневая архитектура ANSI/SPARC: внешний, концептуальный и внутренний уровни. Что такое логическая и физическая независимость данных.
- Зачем нужны базы данных и СУБД
2 Реляционная модель
- Отношения, кортежи, атрибуты и домены
Строгое определение отношения, кортежа, атрибута и домена. Чем отношение отличается от таблицы и почему порядок строк не важен.
- Ключи: потенциальные, первичные и внешние
Суперключ, потенциальный, первичный, альтернативный и внешний ключ — строгие определения и различия на примере интернет-магазина.
- NULL, трёхзначная логика и целостность
Что означает NULL, как работает трёхзначная логика (TRUE/FALSE/UNKNOWN) и что гарантируют целостность сущностей и ссылочная целостность.
- Отношения, кортежи, атрибуты и домены
3 Реляционная алгебра
- Выборка, проекция и переименование
Унарные операции реляционной алгебры: выборка (σ), проекция (π) и переименование (ρ). Как они соответствуют SQL SELECT и WHERE.
- Множественные операции и произведение
Объединение, пересечение, разность и декартово произведение в реляционной алгебре. Совместимость по типу и связь с SQL UNION/INTERSECT/EXCEPT.
- Соединения и деление
Тета-соединение, естественное соединение, внешние соединения и операция деления реляционной алгебры. Как соединение выражается через произведение и выборку.
- Выборка, проекция и переименование
4 ER-моделирование и проектирование
- Сущности, атрибуты и связи
ER-модель: сущности, типы атрибутов (простые, составные, многозначные, производные), связи и их виды. Основа концептуального проектирования.
- От ER-модели к реляционной схеме
Алгоритм перевода ER-диаграммы в таблицы: сущности, связи 1:1, 1:N и M:N, многозначные и составные атрибуты. Связующие таблицы.
- Слабые сущности и идентификаторы
Слабые сущности, идентифицирующие связи и частичные ключи. Когда сущность не может существовать без владельца и как это выразить в схеме.
- Сущности, атрибуты и связи
5 Функциональные зависимости и нормализация
- Функциональные зависимости и аксиомы Армстронга
Что такое функциональная зависимость, тривиальные и нетривиальные ФЗ, аксиомы Армстронга (рефлексивность, пополнение, транзитивность) и производные правила.
- Замыкание атрибутов и поиск ключей
Алгоритм замыкания набора атрибутов на функциональных зависимостях, проверка ФЗ и нахождение потенциальных ключей — с запускаемым Python.
- Аномалии и нормальные формы 1NF, 2NF, 3NF
Аномалии вставки, обновления и удаления; первая, вторая и третья нормальные формы — строгие определения, частичные и транзитивные зависимости.
- BCNF и денормализация
Нормальная форма Бойса-Кодда (BCNF), чем она строже 3NF, проблема сохранения зависимостей и осознанная денормализация ради производительности.
- Функциональные зависимости и аксиомы Армстронга
6 Транзакции и параллелизм
- Транзакции и свойства ACID
Что такое транзакция, зачем нужны COMMIT и ROLLBACK и что гарантируют свойства ACID: атомарность, согласованность, изолированность, долговечность.
- Проблемы параллелизма и уровни изоляции
Грязное чтение, неповторяемое чтение и фантомы; четыре уровня изоляции SQL-стандарта (Read Uncommitted, Read Committed, Repeatable Read, Serializable).
- Блокировки, сериализуемость и восстановление
Как достигается изоляция: блокировки и двухфазный протокол, понятие сериализуемого расписания, журнал упреждающей записи (WAL) и восстановление после сбоя.
- Транзакции и свойства ACID
7 Физический уровень и оптимизация
- Как хранятся данные: страницы и файлы
Физический уровень СУБД: страницы и блоки, куча и упорядоченное хранение, буферный кеш и почему обращение к диску — главная стоимость.
- Индексы: B-дерево и хеш
Зачем нужен индекс, как устроены B-дерево и хеш-индекс, когда индекс ускоряет поиск, а когда вредит, и почему индексов не должно быть слишком много.
- План запроса и компромиссы проектирования
Как оптимизатор выбирает план выполнения, что такое оценка стоимости и кардинальности, и как балансировать нормализацию и производительность.
- Как хранятся данные: страницы и файлы
8 Современный ландшафт
- Ограничения реляционной модели и теорема CAP
Где реляционная модель упирается в потолок при масштабировании, что утверждает теорема CAP и чем подход BASE отличается от ACID.
- Модели NoSQL: ключ-значение, документы, колонки, графы
Четыре семейства NoSQL: хранилища ключ-значение, документные, колоночные (wide-column) и графовые базы — устройство, сильные стороны и примеры.
- NewSQL и выбор хранилища под задачу
Что такое NewSQL и как он совмещает ACID с горизонтальным масштабом; полиглотная персистентность и практические критерии выбора базы данных.
- Ограничения реляционной модели и теорема CAP