Базы данных

Учебник Теория баз данных для начинающих

25 уроков · 8 разделов · бесплатно, без регистрации

Это теоретический фундамент, на котором стоят все практические курсы по SQL, PostgreSQL и MySQL. Здесь мы разбираемся не в том, как написать запрос, а в том, почему базы данных устроены именно так: откуда взялась реляционная модель, что такое отношение и ключ строго, как из обычной алгебры множеств вырастает язык запросов, как спроектировать схему без аномалий, что гарантирует транзакция и почему индекс ускоряет поиск. Курс рассчитан на студентов и практиков, которые хотят перестать догадываться и начать понимать. Мы соединяем строгие определения с интуицией и живыми SQL-примерами, разбираем каждую тему на сквозном примере интернет-магазина и библиотеки и доводим теорию нормализации до точных формулировок 1NF–BCNF.

Курс «Теория баз данных» состоит из 8 разделов и 25 уроков: Введение и модели данных, Реляционная модель, Реляционная алгебра, ER-моделирование и проектирование, Функциональные зависимости и нормализация, Транзакции и параллелизм, Физический уровень и оптимизация и Современный ландшафт. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение и модели данных

    1. Зачем нужны базы данных и СУБД

      Чем база данных отличается от набора файлов, какие проблемы решает СУБД и почему данные стали отдельным управляемым ресурсом.

    2. Модели данных: от иерархической до документной

      Что такое модель данных и чем отличаются иерархическая, сетевая, реляционная и документная модели — обзор с примерами и сравнением.

    3. Архитектура СУБД и независимость данных

      Трёхуровневая архитектура ANSI/SPARC: внешний, концептуальный и внутренний уровни. Что такое логическая и физическая независимость данных.

  2. 2 Реляционная модель

    1. Отношения, кортежи, атрибуты и домены

      Строгое определение отношения, кортежа, атрибута и домена. Чем отношение отличается от таблицы и почему порядок строк не важен.

    2. Ключи: потенциальные, первичные и внешние

      Суперключ, потенциальный, первичный, альтернативный и внешний ключ — строгие определения и различия на примере интернет-магазина.

    3. NULL, трёхзначная логика и целостность

      Что означает NULL, как работает трёхзначная логика (TRUE/FALSE/UNKNOWN) и что гарантируют целостность сущностей и ссылочная целостность.

  3. 3 Реляционная алгебра

    1. Выборка, проекция и переименование

      Унарные операции реляционной алгебры: выборка (σ), проекция (π) и переименование (ρ). Как они соответствуют SQL SELECT и WHERE.

    2. Множественные операции и произведение

      Объединение, пересечение, разность и декартово произведение в реляционной алгебре. Совместимость по типу и связь с SQL UNION/INTERSECT/EXCEPT.

    3. Соединения и деление

      Тета-соединение, естественное соединение, внешние соединения и операция деления реляционной алгебры. Как соединение выражается через произведение и выборку.

  4. 4 ER-моделирование и проектирование

    1. Сущности, атрибуты и связи

      ER-модель: сущности, типы атрибутов (простые, составные, многозначные, производные), связи и их виды. Основа концептуального проектирования.

    2. От ER-модели к реляционной схеме

      Алгоритм перевода ER-диаграммы в таблицы: сущности, связи 1:1, 1:N и M:N, многозначные и составные атрибуты. Связующие таблицы.

    3. Слабые сущности и идентификаторы

      Слабые сущности, идентифицирующие связи и частичные ключи. Когда сущность не может существовать без владельца и как это выразить в схеме.

  5. 5 Функциональные зависимости и нормализация

    1. Функциональные зависимости и аксиомы Армстронга

      Что такое функциональная зависимость, тривиальные и нетривиальные ФЗ, аксиомы Армстронга (рефлексивность, пополнение, транзитивность) и производные правила.

    2. Замыкание атрибутов и поиск ключей

      Алгоритм замыкания набора атрибутов на функциональных зависимостях, проверка ФЗ и нахождение потенциальных ключей — с запускаемым Python.

    3. Аномалии и нормальные формы 1NF, 2NF, 3NF

      Аномалии вставки, обновления и удаления; первая, вторая и третья нормальные формы — строгие определения, частичные и транзитивные зависимости.

    4. BCNF и денормализация

      Нормальная форма Бойса-Кодда (BCNF), чем она строже 3NF, проблема сохранения зависимостей и осознанная денормализация ради производительности.

  6. 6 Транзакции и параллелизм

    1. Транзакции и свойства ACID

      Что такое транзакция, зачем нужны COMMIT и ROLLBACK и что гарантируют свойства ACID: атомарность, согласованность, изолированность, долговечность.

    2. Проблемы параллелизма и уровни изоляции

      Грязное чтение, неповторяемое чтение и фантомы; четыре уровня изоляции SQL-стандарта (Read Uncommitted, Read Committed, Repeatable Read, Serializable).

    3. Блокировки, сериализуемость и восстановление

      Как достигается изоляция: блокировки и двухфазный протокол, понятие сериализуемого расписания, журнал упреждающей записи (WAL) и восстановление после сбоя.

  7. 7 Физический уровень и оптимизация

    1. Как хранятся данные: страницы и файлы

      Физический уровень СУБД: страницы и блоки, куча и упорядоченное хранение, буферный кеш и почему обращение к диску — главная стоимость.

    2. Индексы: B-дерево и хеш

      Зачем нужен индекс, как устроены B-дерево и хеш-индекс, когда индекс ускоряет поиск, а когда вредит, и почему индексов не должно быть слишком много.

    3. План запроса и компромиссы проектирования

      Как оптимизатор выбирает план выполнения, что такое оценка стоимости и кардинальности, и как балансировать нормализацию и производительность.

  8. 8 Современный ландшафт

    1. Ограничения реляционной модели и теорема CAP

      Где реляционная модель упирается в потолок при масштабировании, что утверждает теорема CAP и чем подход BASE отличается от ACID.

    2. Модели NoSQL: ключ-значение, документы, колонки, графы

      Четыре семейства NoSQL: хранилища ключ-значение, документные, колоночные (wide-column) и графовые базы — устройство, сильные стороны и примеры.

    3. NewSQL и выбор хранилища под задачу

      Что такое NewSQL и как он совмещает ACID с горизонтальным масштабом; полиглотная персистентность и практические критерии выбора базы данных.