Базы данных

Нормализация баз данных

Нормализация

  • Оптимизация схемы с целью:
    • Преобразования ФЗ в ограничения ключей
    • Упрощения изменения данных (не ключей)
    • Ускорения изменения данных
  • Следствия
    • Скорость выборки может снижаться
    • Число изменений — $O$(число чтений)

Нормальные формы

  • Формализация интуиции «хорошая схема»
    • Первые нормальные формы «самоочевидны»
    • Позволяют выявлять проблемы в дизайне
    • Требуют знаний о предметной области
  • Иерархия нормальных форм
    • 1, 2, 3 – разработал Эдгар Кодд
    • Бойса–Кодда
    • 4, 5, доменно-ключевая – разработал Рональд Фейгин

Проекция отношения

  • Проекция отношения $R$ на множество атрибутов $X$
    • $π_X(R) = \{r ∩ X | r ∈ R\}$
    • «забывание» части атрибутов
    • может содержать меньше кортежей

Естественное соединение отношений

  • Восстановление отношения по проекциям
    • $R_1 ⋈ R_2 = \{r_1 ∪ r_2 | r_1 ∈ R_1, r_2 ∈ R_2 ∧ π_Y(r_1) = π_Y(r_2)\}$, соединение по совпадающим атрибутам
    • коммутативность
    • ассоциативность

Декомпозиция отношений

  • Отношение преобразуется в набор проекций
    • Не менее двух
    • Сохранение всех атрибутов

Декомпозиция отношения

  • Декомпозиция отношения
    • $R(XYZ) = π_{XZ}(R) ⋈ π_{YZ}(R)$
  • «Разрезание» отношения на две проекции, дающие при соединении исходное отношение

Пример декомпозиции (1)

  • Проекции на CId Lecturer и Lecturer Phone

Пример декомпозиции (1)

  • Соединение CId Lecturer и Lecturer Phone

Пример декомпозиции (2)

  • Проекции на CId Phone и Lecturer Phone

Пример декомпозиции (2)

  • Соединение CId Phone и Lecturer Phone

Теорема Хита

  • $R(XYZ)$ и $X → Y~$$~R = π_{XY}(R) ⋈ π_{XZ}(R)$,
    где $X$, $Y$ и $Z$ – множества атрибутов
      • $∀ r ∈ R$: $π_{XY}(r) ∈ π_{XY}(R), π_{XZ}(r) ∈ π_{XZ}(R)$, $r = π_{XY}(r) ⋈ π_{XZ}(r)$$r ∈ π_{XY}(R) ⋈ π_{XZ}(R)$
      • $∀ (x, y, z) ∈ π_{XY}(R) ⋈ π_{XZ}(R)$$(x, y) ∈ π_{XY}(R)$, $(x, z) ∈ π_{XZ}(R)$
      • Из $(x, z) ∈ π_{XZ}(R)$$∃ y': (x, y', z) ∈ R$$(x, y') ∈ π_{XY}(R)$
      • $X → Y ⇒ ∃! y : (x, y) ∈ π_{XY}(R)$$y = y'$$(x, y, z) ∈ R$

Первая нормальная форма

  • Первая нормальная форма (1НФ)
    • В отношении нет повторяющихся групп
    • Все атрибуты атомарны
    • У отношения есть ключ
  • 1НФ (Дейт)
    • 1НФ ≡ отношение

Примеры 1НФ (1)

  • Отношение в 1НФ

Примеры 1НФ (2)

  • Повторяющиеся группы

Примеры 1НФ (3)

  • Неатомарные атрибуты

Примеры 1НФ (4)

  • 1НФ

Аномалии

  • Хранение одной информации зависит от другой информации
  • Причины
    • Сложные зависимости данных
    • Недостаточная нормализация данных
  • Следствия
    • Невозможность сохранить некоторые данные
    • Возможность логически некорректных данных
    • Сложный процесс внесения и изменения данных

Аномалия вставки

  • Зависимость возможности записать информацию от наличия другой информации
  • Пример
    • Если лектор читает курс, то можно указать телефон, иначе нельзя

Аномалия удаления

  • Удаление одной информации влечет удаление другой
  • Пример
    • При удалении последнего курса лектора теряется информация о телефоне

Аномалия изменения

  • Частичное изменение информации нарушает целостность БД
  • Пример
    • Если изменить телефон только в одной записи, то неясен набор телефонов

Пример ФЗ в 1НФ

  • Какие есть функциональные зависимости?
    • CId → Exam
    • CId Year → Lecturer

Пример аномалий в 1НФ

  • Какие есть аномалии?
  • Вставка и удаление
    • Отчетность без лектора
  • Обновления
    • Разная отчетность в разные годы

Вторая нормальная форма

  • Вторая нормальная форма (2НФ)
    • 1НФ
    • Неключевые атрибуты функционально зависят от ключа в целом (не от части ключа)
    • Неключевой атрибут – не входящий в ключ
  • Нарушается только в случае составных ключей
  • Приведение ко 2НФ
    • Декомпозиция по «мешающим» ФЗ

Пример приведения ко 2НФ

  • Как декомпозировать?

Пример приведения ко 2НФ

Пример аномалий во 2НФ (1)

  • Какие есть функциональные зависимости?
    • CId Year → Lecturer
    • Lecturer → Phone

Пример аномалий во 2НФ (2)

  • Какие есть аномалии?
  • Вставка и удаление
    • Телефон преподавателя без курса
  • Обновления
    • Разные телефоны у одного преподавателя

Третья нормальная форма

  • Третья нормальная форма (3НФ)
    • 2НФ
    • Неключевые атрибуты непосредственно (не транзитивно) зависят от ключей
  • Приведение к 3НФ
    • Декомпозиция по последней ФЗ в цепочке

Пример приведения к 3НФ

  • ФЗ: CId → Lecturer, Lecturer → Phone
  • Как декомпозировать?

Пример приведения к 3НФ

  • ФЗ: CId → Lecturer, Lecturer → Phone

Пример ФЗ в 3НФ

  • Свойства
    • У каждого преподавателя свой телефон
    • Каждый преподаватель принимает у одной группы
  • Какие есть ФЗ?
    • CId Group → Examiner Phone
    • CId Examiner → Group Phone
    • CId Phone → Group Examiner
    • Phone ↔ Examiner

Пример аномалий в 3НФ

  • Какие есть аномалии?
  • Аномалия обновления
    • Изменен преподаватель, но не телефон

НФ Бойса-Кодда

  • Нормальная форма Бойса-Кодда (НФБК)
    • В каждой нетривиальной функциональной зависимости $X → Y$, $X$ является надключом
  • НФБК сильнее, чем 3НФ
  • 3НФ и неперекрывающиеся ключи ⇒ НФБК
  • Приведение к НФБК
    • Декомпозиция по «неправильным» ФЗ

Пример приведения к НФБК

  • Examiner → Phone
  • Как декомпозировать?

Пример приведения к НФБК

  • Examiner → Phone

Теорема о достижимости НФБК

  • Любое отношение можно декомпозировать на отношения, находящиеся в НФБК
    • Пока есть «мешающая» ФЗ, декомпозируем на два отношения
    • Число атрибутов уменьшается
    • Отношение из двух атрибутов находится в НФБК

Недостижимость НФБК (1)

  • ФЗ
    • Dept Course → Lecturer
    • Lecturer → Course

Особенности НФБК (2)

  • В НФБК могут «распадаться» ФЗ
    • Зависимые атрибуты представлены в разных отношениях
    • Проверка «распределенных» ФЗ
    • К 3НФ можно привести, сохранив все ФЗ
  • НФБК – «совершенная» НФ с точки зрения ФЗ

Пример ФЗ в НФБК

  • Какие есть функциональные зависимости?
    • Отсутствуют
  • ⇒ Находится в НФБК

Пример аномалий в 3НФ

  • Какие есть аномалии?
    • Вставки, удаления, обновления

Многозначная зависимость

  • $X ↠ Y$ в отношении $R$
    • $X$ и $Y$ – множества атрибутов
    • Множество значений $Y$ не зависит от $Z = R \setminus Y \setminus X$
    • $∀ x, z_1, z_2$ если $∃ y_1, y_2$: $(x, y_1, z_1) ∈ R$ и $(x, y_2, z_2) ∈ R$,
      то $\{y|(x, y, z_1) ∈ R\} = \{y|(x, y, z_2) ∈ R\}$
  • Любая ФЗ является МЗ

Теорема Фейгина

  • Обобщение теоремы Хита
  • $R(XYZ) = π_{XY}(R) ⋈ π_{XZ}(R)$  $X ↠ Y$
      • $R(XYZ) = π_{XY}(R) ⋈ π_{XZ}(R)$$(x, y, z) ∈ R ⇔ (x, y) ∈ π_{XY}(R) ∧ (x, z) ∈ π_{XZ}(R)$
      • Пусть $(x, z_1) ∈ π_{XZ}(R), (x, z_2) ∈ π_{XZ}(R)$, тогда $(x, y, z_1) ∈ R ⇔ (x, y) ∈ π_{XY}(R) ⇔ (x, y, z_2) ∈ R$
      • $∀ (x, y, z) ∈ π_{XY}(R) ⋈ π_{XZ}(R)$$(x, y) ∈ π_{XY}(R) ∧ (x, z) ∈ π_{XZ}(R)$
      • Тогда $∃ y', z' : (x, y', z) ∈ R ∧ (x, y, z') ∈ R$
      • так как $X ↠ Y$, то $(x, y, z) ∈ R ∧ (x, y', z') ∈ R$

Теорема о дополнении

  • $R(XYZ)$ и $X ↠ Y$$X ↠ Z$
    • В доказательстве теоремы Фейгина $Y$ и $Z$ равноправны
  • $X ↠ Y | Z$
  • Следствие: $∀ R(XY)$$X ↠ Y | ∅$
    • Тривиальные МЗ

Четвертая нормальная форма

  • Для каждой нетривиальной МЗ $X ↠ Y | Z$ и атрибута $A$: $X → A$
  • Для каждой нетривиальной МЗ $X ↠ Y | Z$
    $X$ – надключ
  • Каждая нетривиальная МЗ является ФЗ,
    и отношение находится в НФБК

Теорема о декомпозиции (4НФ)

  • Любое отношение можно декомпозировать на отношения, находящиеся в 4НФ
    • Пока есть МЗ, декомпозируем на два отношения
    • Количество атрибутов уменьшается
    • Отношение из двух атрибутов находится в 4НФ
      • Почти всегда

Декартово произведение

  • Пусть $R(XY) = R_1(X) × R_2(Y)$
  • Находится ли $R$ в 4НФ?
    • Нужно найти МЗ
    • $∅ ↠ X | Y$
    • $→$ не в 4НФ
  • Как декомпозировать?
    • На $R_1$ и $R_2$

Пример МЗ в 3НФ

  • Какие есть множественные зависимости?
    • Course ↠ Lecturer | Book
  • Как декомпозировать?

Пример МЗ в 3НФ

Множественная декомпозиция

  • Какое условие должно выполняться, чтобы декомпозиция была корректной?

Корректное ограничение

  • Если
    • Лектор $L$ читает курс $C$
    • Лектор $L$ читает группе $G$
    • Группа $G$ слушает курс $C$
  • То лектор $L$ читает курс $C$ группе $G$

Аномалии

  • Какие есть аномалии?
    • Вставки, удаления, обновления

Зависимость соединения

  • $*\{X_1, X_2, ..., X_n\}$
    • $R(X_1X_2...X_n) = π_{X_1}(R) ⋈ π_{X_2}(R) ⋈ ⋅⋅⋅ ⋈ π_{X_n}(R)$
  • Теорема Фейгина
    • Для $R(XYZ)$: $X ↠ Y | Z$$*\{XY, XZ\}$
  • Тривиальные зависимости соединения
    • Для любого $R$: $*\{R, X_1, X_2, ..., X_n\}$

Пятая нормальная форма

  • 5НФ (проекционно-соединительная)
    • Для каждой нетривиальной ЗС $*\{X_1, X_2, ..., X_n\}$ каждое $X_i$ – надключ
  • Для нормализации требуется найти все ЗС
    • Это сложно
    • На практике ЗС, не являющиеся МЗ, встречаются редко

Кольцевые ограничения

  • Если
    • $(x_1, x_2) ∈ π_{X_1X_2}(R)$
    • $(x_2, x_3) ∈ π_{X_2X_3}(R)$ ...
    • $(x_{n-1}, x_n) ∈ π_{X_{n-1}X_n}(R)$
    • $(x_n, x_1) ∈ π_{X_nX_1}(R)$
  • То $(x_1, x_2, ..., x_n) ∈ R$

Иерархия нормальных форм

  • 1НФ
    • Отношение
  • 2НФ
  • 3НФ
  • НФБК
    • Лучшая для ФЗ
  • 4НФ
    • Лучшая для декомпозиции на два отношения
  • 5НФ
    • Лучшая для декомпозиции

Теоремы Дейта-Фейгина

  • Теорема Дейта-Фейгина 1
    • Если отношение находится в 3НФ и все ключи простые $→$ отношение находится в 5НФ
  • Теорема Дейта-Фейгина 2
    • Если отношение находится в НФБК и существует простой ключ $→$ отношение находится в 4НФ

Процесс нормализации

  • 1НФ
  • НФБК
  • 4 НФ
  • 5 НФ
  • Отношения, построенные по модели сущность-связь, обычно имеют 3+НФ

Набор операций

  • Проекция и соединения
    • Разделение на части
    • Склейка частей
  • Разбиение и объединение
    • Partitioning
    • Свои нормальные формы

Доменно-ключевая НФ

  • ДКНФ
    • Все ограничения являются следствием ограничения доменов и ключей
    • Ограничение домена – тип атрибута
    • Ограничение ключа – множество атрибутов является ключом
  • ДКНФ $⊊$ 5НФ (Фейгин)
  • Не достижима инкрементально

Денормализация

  • Нормализация
    • Большое количество отношений
    • Сложность для понимания
    • Падение производительности
  • Денормализация
    • Отношения, находящиеся в первых НФ
    • Хранение вычисляемых значений
      • Дублирование данных
    • «Ручное» отслеживание зависимостей и аномалий

Основная литература

  • Дейт К. Введение в системы баз данных (главы 12 и 13)
  • Уидом Д., Ульман Д. Основы реляционных баз данных (глава 3)

Дополнительная литература

  • Fagin R. Normal forms and relational database operators
  • Fagin R. Multivalued Dependencies and a New Normal Form for Relational Databases
  • Beeri C., Fagin R., Howard J. A complete axiomatization for functional and multivalued dependencies in database relations
  • Date C. J., Fagin R. Simple conditions for guaranteeing higher normal forms in relational databases