05. Теория проектирования реляционных баз данных. Нормальные формы - KattyOG/Database GitHub Wiki

Теория проектирования реляционных баз данных

При проектировании базы данных решаются две основные проблемы:

  • Каким образом отобразить объекты предметной области в абстрактные объекты модели данных, чтобы это отображение не противоречило семантике предметной области, и было, по возможности, лучшим (эффективным, удобным и т. д.)?
    (проблема логического проектирования баз данных)
  • Как обеспечить эффективность и корректность выполнения запросов к базе данных?
    (проблема физического проектирования баз данных)

Физическое проектирование

Отвечает на вопросы: что неплохо сделать, чтобы ваши запросы к базе работали хорошо и правильно.

Данный вид проектирование неразрывно связан с нормализацией, то есть с преобразованием наших объектов к неким формам (к нормальным формам). Эти формы применяются для того, чтобы уменьшить объем хранения данных, но приводит к увеличению времени запросов.

Из лекции от 30.10 понятными словами:
Фактически нормализация связана с разбиением: как из одной большой сущности широкой, на много полей сделать несколько маленьких сущностей, которые будут хранить данные без дублирования. Это позволит сэкономить пространство

Обычно выделяется следующая последовательность нормальных форм:

  • первая нормальная форма
  • вторая нормальная форма
  • третья нормальная форма
  • нормальная форма Бойса-Кодда
  • четвертая нормальная форма
  • пятая нормальная форма, или нормальная форма проекции-соединения

Основные свойства нормальных форм:

  • каждая следующая нормальная форма в некотором смысле лучше предыдущей
  • при переходе к следующей нормальной форме свойства предыдущих нормальных свойств сохраняются

Процесс проектирования реляционной базы данных на основе метода нормализации преследует две основные цели:

  • избежать избыточности хранения данных
  • устранить/избежать аномалии

Аномалии бывают трех видов:

  • Обновления
  • Удаления
  • Вставки

Из лекции от 30.10 понятными словами:
Аномалия обновления заключается в обновлении сущности в цикле, например, когда у нас нет бизнес-ключа. Тогда при update-е сущности, может получиться ситуация, что несколько записей в таблице с одинаковым id будут отличаться.
Решение: юзать транзакции: "всё или ничего"

Аномалия удаления заключается в том, что удаление одной строки влечет удаление другой сущности.
Решение: использовать еще одну таблицу.

Аномалия вставки заключается в том, что вставка в одну сущность влечет вставку в другую сущность. Обычно это значение null/null.


Про OLAP и OLTP

OLAP - online analytical processing - системы оперативной аналитической обработки
OLTP - online transaction processing - системы оперативной обработки транзакций

Из лекции от 30.10 понятными словами:
OLTP нацелена на сохранение и накопление данных, транзакции.
OLAP нацелена на упрощение запросов для пользователей.

Особенности OLTP: быстрая вставка, быстрый update, delete. Время select-a увеличивается из-за большого количества таблиц, большого количества join-ов (3-я нормальная форма)

Особенности OLAP: время select-а сведено к минимуму, но эта система денормализованная.
Чтобы построить денормализованную систему, ее нужно сначала нормализовать

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

Определение 1.

Переменная отношения находится в первой нормальной форме (1НФ) тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов.

Первая нормальная форма - это условие, согласно которому каждый компонент каждого кортежа является атомарным значением. В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение.

Определение 2.

Функциональная зависимость R.X -> R.Y называется полной, если атрибут Y не зависит функционально от любого точного подмножества X.

Определение 3.

Функциональная зависимость R.X -> R.Y называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости R.X -> R.Z и R.Z -> R.Y и отсутствует функциональная зависимость R.Z -> R.X. (При отсутствии последнего требования мы имели бы "неинтересные" транзитивные зависимости в любом отношении, обладающем несколькими ключами.)

Определение 4.

Неключевым атрибутом называется любой атрибут отношения, не входящий в состав потенциального ключа (в частности, первичного).

Определение 5.

Два или более атрибута взаимно независимы, если ни один из этих атрибутов не является функционально зависимым от других.

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

Определение 6.

(В этом определении предполагается, что единственным ключом отношения является первичный ключ.) Отношение R находится во второй нормальной форме (2НФ) в том и только в том случае, когда оно находится в 1НФ, и каждый неключевой атрибут полностью зависит от первичного ключа.
Если допустить наличие нескольких ключей, то определение 6 примет следующий вид: Определение 6а. Отношение R находится во второй нормальной форме (2NF) в том и только в том случае, когда оно находится в 1НФ, и каждый неключевой атрибут полностью зависит от каждого ключа R.

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

Определение 7.

(Снова определение дается в предположении существования единственного ключа.) Отношение R находится в третьей нормальной форме (3НФ) в том и только в том случае, если оно находится в 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Если отказаться от того ограничения, что отношение обладает единственным ключом, то определение 3NF примет следующую форму:

Определение 7а.

Отношение R находится в третьей нормальной форме (3НФ) в том и только в том случае, если оно находится в 2НФ, и каждый неключевой атрибут не является транзитивно зависимым от какого-либо ключа R.

На практике третья нормальная форма схем отношений достаточна в большинстве случаев, и приведением к третьей нормальной форме процесс проектирования реляционной базы данных обычно заканчивается. Однако иногда полезно продолжить процесс нормализации.

Нормальная форма Бойса-Кодда

Определение 3НФ неадекватно при выполнении следующих условий.

  1. Переменная-отношение имеет два (или более) потенциальных ключа.
  2. Эти потенциальные ключи являются составными.
  3. Два или более потенциальных ключей перекрываются (т. е. имеют по крайней мере один общий атрибут).

Поэтому впоследствии исходное определение 3НФ было заменено более строгим определением нормальной формы Бойса-Кодда (НФБК).

Определение 8.

Детерминант - любой атрибут (или группа атрибутов), от которого полностью функционально зависит некоторый другой атрибут.

Определение 9.

Отношение R находится в нормальной форме Бойса-Кодда (НФБК) в том и только в том случае, если каждый детерминант является потенциальным ключом.

Отношение в НФБК позволяет исключить все виды аномалий обновления, связанные с функциональными зависимостями. Однако отношение в НФБК все еще может быть плохо структурированным и допускать аномалии обновления. В этом случае причиной аномалий обновления является наличие многозначных зависимостей.

Переменная-отношение R находится в четвертой нормальной форме (4НФ) тогда и только тогда, когда в случае существования таких подмножеств А и B атрибутов этой переменной-отношения R, для которых выполняется нетривиальная МЗ А ->> B, все атрибуты переменной-отношения R также функционально зависят от атрибута А.

Это определение можно также сформулировать в следующей эквивалентной форме:
переменная-отношение R находится в 4НФ, если она находится НФБК и все МЗ в переменной-отношении R фактически представляют собой ФЗ от ее ключей.

Можно добавить, что:

  • полностью ключевое отношение всегда находится в НФБК поскольку оно не имеет ФЗ.
  • полностью ключевое отношение, которое не имеет ФЗ но имеет МЗ, не находится в 4НФ.
  • отношение, которое не находится в 4НФ в связи с нетривиальным МЗ должны быть декомпозировано, чтобы преобразовать его в набор отношений в 4НФ.
  • декомпозиция устраняет избыточность, вызванную МЗ.

Переменная-отношение R находится в пятой нормальной форме (5НФ), которую иногда иначе называют проекционно-соединительной нормальной формой (ПСНФ), тогда и только тогда, когда каждая нетривиальная ЗС в переменной-отношении R подразумевается ее потенциальными ключами. 5НФ является окончательной нормальной формой по отношению к операциям проекции и соединения.

Общая схема процедуры нормализации

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

  1. Переменную-отношение в 1НФ следует разбить на такие проекции, которые позволят исключить все функциональные зависимости, не являющиеся неприводимыми. В результате будет получен набор переменных-отношений в 2НФ.
  2. Полученные переменные-отношения в 2НФ следует разбить на такие проекции, которые позволят исключить все существующие транзитивные функциональные зависимости. В результате будет получен набор переменных-отношений в 3НФ.
  3. Полученные переменные-отношения в 3НФ следует разбить на проекции, позволяющие исключить любые оставшиеся функциональные зависимости, в которых детерминанты не являются потенциальными ключами. В результате такого приведения будет получен набор переменных-отношений в НФБК. Замечание. Правила 1-3 могут 19 быть объединены в одно: "Исходную переменную-отношение следует разбить на проекции, позволяющие исключить все функциональные зависимости, в которых детерминанты не являются потенциальными ключами".
  4. Полученные переменные-отношения в НФБК следует разбить на проекции, позволяющие исключить любые многозначные зависимости, которые не являются функциональными. В результате будет получен набор переменных-отношений в 4НФ.
  5. Полученные переменные-отношения в 4НФ следует разбить на проекции, позволяющие исключить любые зависимости соединения, которые не подразумеваются потенциальными ключами. В результате будет получен набор переменных-отношений в 5HФ.
⚠️ **GitHub.com Fallback** ⚠️