Перечислить кратко нормальные формы

Обновлено: 05.07.2024

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

Оглавление документа

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

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

Происхождение и назначение нормальных форм

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

Типы нормальных форм

Нормализация может применяться к таблице, которая представляет собой правильное отношение.

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

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

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

СотрудникНомер телефона
Иванов И. И. 283–56–82
390–57–34
Петров П. Ю. 708–62–34

Таблица, приведённая к 1NF:

СотрудникНомер телефона
Иванов И. И. 283–56–82
Иванов И. И. 390–57–34
Петров П. Ю. 708–62–34

Примеры неатомарного атрибута, часто встречающиеся на практике: составные поля в виде строки идентификаторов, разделённых, скажем, запятыми: 100,32,168,1045

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

Таблица находится во второй нормальной форме, если она находится в первой нормальной форме, и при этом любой её атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного составного ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него атрибутов(частей). Или другими словами: в 2НФ нет неключевых атрибутов, зависящих от части составного ключа (+ выполняются условия 1НФ).

Пример приведения таблицы ко второй нормальной форме

Пусть Начальник и Должность вместе образуют первичный ключ в такой таблице:

НачальникДолжностьЗарплатаНаличие компьютера
ГришинКладовщик20000Нет
ВасильевПрограммист40000Есть
ВасильевКладовщик25000Нет

Зарплату сотруднику каждый начальник устанавливает сам, но её границы зависят от должности. Наличие же компьютера у сотрудника зависит только от должности, то есть зависимость от первичного ключа не полная.

В результате приведения к 2NF получим две таблицы:

НачальникДолжностьЗарплата
ГришинКладовщик20000
ВасильевПрограммист40000
ВасильевКладовщик25000

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

ДолжностьНаличие компьютера
КладовщикНет
ПрограммистЕсть

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

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

Пример приведения таблицы к третьей нормальной форме

ФамилияОтделТелефон
Гришин1 11–22–33
Васильев1 11–22–33
Петров2 44–55–66

В результате приведения к 3NF получим две таблицы:

ФамилияОтдел
Гришин1
Васильев1
Петров2

ОтделТелефон
1 11–22–33
2 44–55–66

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

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

Пример приведения таблицы к нормальной форме Бойса—Кодда

Номер клиентаДата собеседованияВремя собеседованияНомер комнатыНомер сотрудника
С34513.10.0313.00103А138
С35513.10.0313.05103А136
С36813.09.0313.00102А154
С36613.09.0313.30105А207

В результате приведения к форме Бойса—Кодда получим две таблицы:

Номер клиентаДата собеседованияВремя собеседованияНомер Сотрудника
С34513.10.0313.00А138
С35513.10.0313.05А136
С36813.09.0313.00А154
С36613.09.0313.30А207

Дата собеседованияНомер сотрудникаНомер комнаты
13.10.03А138103
13.10.03А136103
13.09.03А154102
13.09.03А207105

Пример ситуации 3NF, но не BCNF: отношение имеет два (или более) возможных ключа, которые являются составными и имеют общий атрибут. Однако на практике как правило 3NF эквивалентна BCNF.

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

Таблица находится в 4NF, если она находится в BCNF и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость не является функциональной, она существует в том случае, когда из факта, что в таблице содержится некоторая строка X, следует, что в таблице обязательно существует некоторая определённая строка Y.

То есть, таблица находится в 4NF, если все ее многозначные зависимости являются функциональными.

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

Таблица находится в 5NF, если она находится в 4NF и любая многозначная зависимость соединения в ней является тривиальной.

В данной теме я затрону 6 нормальных форм и методы приведения таблиц в эти формы.

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

Используемые термины

Атрибут — свойство некоторой сущности. Часто называется полем таблицы.

Домен атрибута — множество допустимых значений, которые может принимать атрибут.

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

Отношение — конечное множество кортежей (таблица).

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

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

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

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

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

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

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

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

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

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

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


Нарушение нормализации 1НФ происходит в моделях BMW, т.к. в одной ячейке содержится список из 3 элементов: M5, X5M, M1, т.е. он не является атомарным. Преобразуем таблицу к 1НФ:

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

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

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

Например, дана таблица:

Модель Фирма Цена Скидка
M5 BMW 5500000 5%
X5M BMW 6000000 5%
M1 BMW 2500000 5%
GT-R Nissan 5000000 10%

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

Модель Фирма Цена
M5 BMW 5500000
X5M BMW 6000000
M1 BMW 2500000
GT-R Nissan 5000000

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

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

Модель Магазин Телефон
BMW Риал-авто 87-33-98
Audi Риал-авто 87-33-98
Nissan Некст-Авто 94-54-12
Магазин Телефон
Риал-авто 87-33-98
Некст-Авто 94-54-12
Модель Магазин
BMW Риал-авто
Audi Риал-авто
Nissan Некст-Авто

Нормальная форма Бойса-Кодда (НФБК) (частная форма третьей нормальной формы)

Определение 3НФ не совсем подходит для следующих отношений:
1) отношение имеет два или более потенциальных ключа;
2) два и более потенциальных ключа являются составными;
3) они пересекаются, т.е. имеют хотя бы один общий атрибут.

Для отношений, имеющих один потенциальный ключ (первичный), НФБК является 3НФ.

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

Предположим, рассматривается отношение, представляющее данные о бронировании стоянки на день:

Номер стоянки Время начала Время окончания Тариф
1 09:30 10:30 Бережливый
1 11:00 12:00 Бережливый
1 14:00 15:30 Стандарт
2 10:00 12:00 Премиум-В
2 12:00 14:00 Премиум-В
2 15:00 18:00 Премиум-А

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

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

Тариф Номер стоянки Имеет льготы
Бережливый 1 Да
Стандарт 1 Нет
Премиум-А 2 Да
Премиум-В 2 Нет
Тариф Время начала Время окончания
Бережливый 09:30 10:30
Бережливый 11:00 12:00
Стандарт 14:00 15:30
Премиум-В 10:00 12:00
Премиум-В 12:00 14:00
Премиум-А 15:00 18:00

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

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

В отношении R (A, B, C) существует многозначная зависимость R.A -> -> R.B в том и только в том случае, если множество значений B, соответствующее паре значений A и C, зависит только от A и не зависит от С.

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

Такая переменная отношения не соответствует 4НФ, так как существует следующая многозначная зависимость:

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

Для предотвращения аномалии нужно декомпозировать отношение, разместив независимые факты в разных отношениях. В данном примере следует выполнить декомпозицию на и .

Однако, если к исходной переменной отношения добавить атрибут, функционально зависящий от потенциального ключа, например цену с учётом стоимости доставки ( → Цена), то полученное отношение будет находиться в 4НФ и его уже нельзя подвергнуть декомпозиции без потерь.

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

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

Пятая нормальная форма ориентирована на работу с зависимыми соединениями. Указанные зависимые соединения между тремя атрибутами встречаются очень редко. Зависимые соединения между четырьмя, пятью и более атрибутами указать практически невозможно.

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

Переменная отношения находится в ДКНФ тогда и только тогда, когда каждое наложенное на неё ограничение является логическим следствием ограничений доменов и ограничений ключей, наложенных на данную переменную отношения.
Ограничение домена – ограничение, предписывающее использовать для определённого атрибута значения только из некоторого заданного домена. Ограничение по своей сути является заданием перечня (или логического эквивалента перечня) допустимых значений типа и объявлением о том, что указанный атрибут имеет данный тип.

Ограничение ключа – ограничение, утверждающее, что некоторый атрибут или комбинация атрибутов является потенциальным ключом.

Любая переменная отношения, находящаяся в ДКНФ, обязательно находится в 5НФ. Однако не любую переменную отношения можно привести к ДКНФ.

Шестая нормальная форма

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

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

Таб.№ Время Должность Домашний адрес
6575 01-01-2000:10-02-2003 слесарь ул.Ленина,10
6575 11-02-2003:15-06-2006 слесарь ул.Советская,22
6575 16-06-2006:05-03-2009 бригадир ул.Советская,22

Должности работников

Таб.№ Время Должность
6575 01-01-2000:10-02-2003 слесарь
6575 16-06-2006:05-03-2009 бригадир
Таб.№ Время Домашний адрес
6575 01-01-2000:10-02-2003 ул.Ленина,10
6575 11-02-2003:15-06-2006 ул.Советская,22

Литература

Примечание:
Во всех статьях текущей категории уроков по SQL используются примеры и задачи, основанные на учебной базе данных.

Приступая к изучению данного материала, рекомендуется ознакомиться с описанием учебной БД.

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

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

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

Основным правилом первой формы является необходимость неделимости значения в каждом поле (столбце) строки – атомарность значений.

Рассмотрим таблицы сотрудников и телефонных линий.

Пример 1 нормальной формы

Пример нарушения атомарности значений в таблице

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

Организации структуры таблиц с применением дополнительной связывающей избавляет от подобных проблем.

Помимо атомарности к первой нормальной форме относятся следующие правила:

  • Строки таблиц не должны зависеть друг от друга, т.е. первая запись не должна влиять на вторую и наоборот, вторая на третью и т.д. Размещение записей в таблице не имеет никакого значения.
  • Аналогичная ситуация со столбцами записей. Их порядок не должен влиять на понимание информации.
  • Каждая строка должна быть уникальна, поэтому для нее определяется первичный ключ, состоящий из одного либо нескольких полей (составной ключ). Первичный ключ не может повторяться в пределах таблицы и служит идентификатором записи.

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

Условием этой формы является отсутствие зависимости неключевых полей от части составного ключа.

Нарушение 2NF

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

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

3NF схожа по логике с 2NF, но с некоторым отличием. Если 2 форма ликвидирует зависимости неключевых полей от части ключа, то третья нормальная форма исключает зависимость неключевых полей от других неключевых полей.

Нарушение 3NF

Все риски, которые были рассмотрены для 2NF, так же относятся к 3NF и устраняются переносом зависимых полей в отдельную таблицу.

Приведение таблиц к 3NF

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

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

Обучение переводу статей англоязычной документации, статьи про алгоритмы, а также LifeHacks, статьи по Компьютеру и Программированию, Журнал для Детей, Математику и смежные науки Инженерии.

Поиск по этому блогу

Computer Science - Базы Данных - Нормальные формы, преимущества и недостатки

Данная статья посвящена нормальным формам базы данных, её видам, преимуществам и недостаткам. В ней рассматриваются 8 форм нормализации и, также, преимущества денормализованной базы данных.


Содержание:

1. Введение

Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, потенциально приводящей к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение. Процесс преобразования отношений базы данных к виду, отвечающему нормальным формам, называется нормализацией. Всего нормальных форм в статье рассматривается восемь. Каждая форма содержит правило улучшения базы данных, каждая следующая форма включает предыдущую и дополняет её. Основной девиз нормализации для всех форм: Don't Repeat Yourself! (DRY), он также используется и в программировании. Также виды нормализации позволяют не потерять логическую структуру при уменьшении избыточности. Т.е. нормализация направлена на уменьшение дублирования данных, их сжатия, при этом главная задача — потенциально не потерять связь данных.

2. Виды нормальных форм

Рассмотрим восемь видов нормальных форм по их степени силы от самой слабой до самой сильной.

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

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

Пример не номальной формы:

Отдел Сотрудник
Call-центр Сидоров, Петров, Иванов
Менеджмент Тютчев

Её 1-ая нормальная форма:

Отдел Сотрудник
Call-центр Сидоров
Call-центр Петров
Call-центр Иванов
Менеджмент Тютчев

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

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

Пример не номальной формы:

Отдел Сотрудник Телефон отдела Должность
Call-центр Сидоров 8 (495) 555-55-55 Телефонный операционист
Call-центр Петров 8 (495) 555-55-55 Телефонный операционист
Call-центр Иванов 8 (495) 555-55-55 Рабочий с клиентами
Менеджмент Тютчев 8 (495) 444-44-44 Генеральный директор

Её 2-ая нормальная форма, получилось разбиение на две таблицы:

Отдел Телефон отдела
Call-центр 8 (495) 555-55-55
Менеджмент 8 (495) 444-44-44

Отдел Сотрудник Должность
Call-центр Сидоров Телефонный операционист
Call-центр Петров Телефонный операционист
Call-центр Иванов Рабочий с клиентами
Менеджмент Тютчев Генеральный директор

Т.е. это строгая функциаональная зависимость от ключа, зависимость по словарю.

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

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

Пример не номальной формы:

Отдел Сотрудник Телефон отдела Должность
Call-центр Сидоров 8 (495) 555-55-55 Телефонный операционист
Call-центр Петров 8 (495) 555-55-55 Телефонный операционист
Call-центр Иванов 8 (495) 555-55-55 Телефонный операционист
Менеджмент Тютчев 8 (495) 444-44-44 Генеральный директор

Её 3-я нормальная форма, получилось разбиение на две таблицы:

Отдел Телефон отдела Должность
Call-центр 8 (495) 555-55-55 Телефонный операционист
Менеджмент 8 (495) 444-44-44 Генеральный директор

Отдел Сотрудник
Call-центр Сидоров
Call-центр Петров
Call-центр Иванов
Менеджмент Тютчев

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

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

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

Пример не номальной формы:

Отдел Сотрудник Должность Телефон отдела Смена
Call-центр Сидоров 8 (495) 555-55-55 Телефонный операционист Будни
Call-центр Сидоров 8 (495) 555-55-55 Телефонный операционист Выходные
Call-центр Петров 8 (495) 555-55-55 Телефонный операционист Будни
Call-центр Иванов 8 (495) 555-55-55 Телефонный операционист Выходные
Менеджмент Тютчев 8 (495) 444-44-44 Генеральный директор Будни

Её нормальная форма Бойса — Кодда, получилось разбиение на две таблицы:

Отдел Телефон отдела Должность
Call-центр 8 (495) 555-55-55 Телефонный операционист
Менеджмент 8 (495) 444-44-44 Генеральный директор

Отдел Сотрудник Смена
Call-центр Сидоров Будни
Call-центр Сидоров Выходные
Call-центр Петров Будни
Call-центр Иванов Выходные
Менеджмент Тютчев Будни

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

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

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

Пример не номальной формы, T1:

Отдел Район доставки Вид доставки

Если нам нужно добавить в эту таблицу новый район доставки, то нам придётся создавать для него все виды доставки. Проще данную таблицу разбить на две таблицы:

Отдел Район доставки

Отдел Вид доставки

Эти таблицы удовлетворяют 3НФ и нормальной форме Бойса — Кодда. Но если в T1 добавилась и цена. То следующая таблица T4, удовлетворяет 4-ой нормальной форме, т.к. новый первичный ключ полностью зависит от цены (помечен жирным):

Отдел Район доставки Вид доставки Цена

В результате изменения базы данных, уже у существующих таблиц может измениться 4-ая нормальная форма.

Как общий принцип 4-ой нормальной формы: главное декомпозицией не добавить избыточность и не нарушить целостность.

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

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

Для начала рассмотрим термин декомпозиция без потерь.

2.6.1. Декомпозиция без потерь

Пусть есть таблица 1. Таблицы 2 и 3 называются декомпозицией таблицы 1, если они в точности совпадают с ней.

Пусть у нас есть таблица T5 и задача: каждый отдел компании осуществляет определённый вид доставки в стране:

Отдел Вид доставки Страна
Отдел по внутренней доставке Курьерская доставка Россия
Отдел по внутренней доставке Почта Россия
Отдел внешней доставки Почта Германия
Отдел внешней доставки Почта Франция
Отдел внешней доставки Почта Англия

Разобьём её на таблицы Т6 и Т7:

Отдел
Отдел по внутренней доставке
Отдел внешней доставки

Вид доставки Страна
Курьерская доставка Россия
Почта Россия
Почта Германия
Почта Франция
Почта Англия

Объединение этих таблиц будет, Т8:

Отдел Вид доставки Страна
Отдел по внутренней доставке Курьерская доставка Россия
Отдел по внутренней доставке Почта Россия
Отдел по внутренней доставке Почта Германия
Отдел по внутренней доставке Почта Франция
Отдел по внутренней доставке Почта Англия
Отдел по внутренней доставке Курьерская доставка Россия
Отдел по внутренней доставке Почта Россия
Отдел по внутренней доставке Почта Германия
Отдел по внутренней доставке Почта Франция
Отдел по внутренней доставке Почта Англия

Полученная таблица (T8) не совпадает с исходной (T5). И по определению не является её декомпозицией без потерь.

Теперь рассмотрим следующее разбиение исходной таблицы (T5):

Отдел Вид доставки
Отдел по внутренней доставке Курьерская доставка
Отдел по внутренней доставке Почта
Отдел внешней доставки Почта

Отдел Страна
Отдел по внутренней доставке Россия
Отдел внешней доставки Германия
Отдел внешней доставки Франция
Отдел внешней доставки Англия

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

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

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

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

Ограничение домена — ограничение, предписывающее использовать для определённого атрибута значения только из некоторого заданного домена (типа данных, набора значений). Ограничение по своей сути является заданием перечня (или логического эквивалента перечня) допустимых значений типа и объявлением о том, что указанный атрибут имеет данный тип.

Ограничение ключа — ограничение, утверждающее, что некоторый атрибут или комбинация атрибутов является потенциальным ключом.

Любая переменная отношения, находящаяся в ДКНФ, обязательно находится в 5НФ. Однако не любую переменную отношения можно привести к ДКНФ.

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

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

2.9. Вложенность нормальных форм

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

Порядок нормальных форм от самой сильной до самой слабой:

  1. Доменно-ключевая нормальная форма (DKNF); Шестая нормальная форма (6NF)
  2. Пятая нормальная форма (5NF)
  3. Четвёртая нормальная форма (4NF)
  4. Нормальная форма Бойса — Кодда (BCNF)
  5. Третья нормальная форма (3NF)
  6. Вторая нормальная форма (2NF)
  7. Первая нормальная форма (1NF)


Рис. 1. Вложенность нормальных форм.

3. Преимущества и недостатки нормализации

Рассмотрим преимущества и недостатки нормализации базы данных.

  • Улучшение логической структуры данных.
  • Уменьшение размера базы данных без индексов за счёт уменьшения избыточности.
  • Сжатие базы данных.
  1. Уменьшение скорости запросов, т.к. они должны находить данные по внешним ключам.
  2. Из-за первого недостатка нам необходимо строить множество индексов для выполнения запросов.
  3. Размер всех необходимых индексов может увеличить размер базы на диске.

3.1. Денормализация базы данных

Денормализация — это процесс модификации структуры таблиц нормализованной базы данных с целью повышения производительности за счет допущения некоторой управляемой избыточности данных. Единственным оправданием денормализации является попытка повышения скорости работы базы данных или использующей её программы.

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

Т.е. основной принцип денормализации — хранить данные рядом.

4. Заключение

Как Вы видете процесс разработки базы данных очень сложный и компромисный. Стоит построить базу нормализованной и уже потом приступить к её денолизации, и то, в крайнем случае. Лучше построить базу нормализованной, оптимизировать все запросы и построить для них индексы.

Помните главный принцип нормализации — Don't Reapeat Yourself (DRY) — устранить дублирование данных и улучшить сжатие, не потеряв целостность данных.

Читайте также: