Часть 3.5: Нормальные формы в базах данных

Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.  Как я уже говорил – нормальная форма является состоянием, в котором находится база данных. Всего таких состояний девять, ниже они перечислены. Нормальная форма – это критерий надежности вашей базы данных, прозвучит немного коряво, но чем выше номер нормальной формы, тем логически правильнее и естественнее спроектирована ваша база данных.

Нормальные формы в базах данных

Нормальные формы в базах данных

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


Первая нормальная форма (1NF)

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

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

Вторая нормальная форма (2NF)

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

Хочу обратить ваше внимание на то, что для второй нормальной формы уже обязательны ключи, у каждой таблицы во второй нормальной форме должен быть ключ. В первой нормальной форме ключа может и не быть.

Третья нормальная форма (3NF)

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

Давайте разбираться. Если база данных находится в третьей нормальной форме, то в ней должны быть соблюдены требования второй нормальной формы, а соответственно и первой. Область оптимизации третьей нормальной формы – таблица, третья нормальная форма избавляет нас от транзитивных зависимостей: любой столбец таблицы должен зависеть только от ключевого столбца. 

Нормальная форма Бойса — Кодда (BCNF)

Переменная отношения находится в нормальной форме Бойса — Кодда (иначе — в усиленной третьей нормальной форме) тогда и только тогда, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ.

Это усиленная третья нормальная форма, даже, скорее это частный случай третьей нормальной формы. Суть нормальной формы Бойса-Кодда – исключить функциональные зависимости и избавить нас от аномалий, связанных с модификацией данных. Рассматривать более подробно БКНФ я не буду, последующие формы тоже.

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

Четвёртая нормальная форма (4NF)

Переменная отношения находится в четвёртой нормальной форме, если она находится в нормальной форме Бойса — Кодда и не содержит нетривиальных многозначных зависимостей.

Пятая нормальная форма (5NF)

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

Доменно-ключевая нормальная форма (DKNF)

Переменная отношения находится в ДКНФ тогда и только тогда, когда каждое наложенное на неё ограничение является логическим следствием ограничений доменов и ограничений ключей, наложенных на данную переменную отношения. Или же: таблица находится в первой нормальной форме, когда каждый ее атрибут атомарен.

Шестая нормальная форма (6NF)

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

Текст комментария: