Нормализация и нормальные формы

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

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

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

Таблица 2.18

Представление отношения с функциональными зависимостями

Атрибут 1

Атрибут 2

Атрибут 3

А1

Б1

В1

А1

Б2

В1

Л2

Б1

В2

А2

БЗ

ВЗ



В представленном примере (см. табл. 2.18) между совокупностью атрибутов "Атрибут 1" и "Атрибут 2" в отношении атрибута "Атрибут 3" существует функциональная зависимость. Если рассмотреть совокупность значений первых двух атрибутов, то каждая совокупность значений однозначно связана с единственным значением третьего атрибута. Однако здесь не видно исторического развития отношения и в отрыве от предметной области сложно говорить об однозначно выявленной функциональной зависимости, поскольку неизвестны условия, накладываемые на совокупность атрибутов "Атрибут 1" и "Атрибут 2", а также их связь с атрибутом "Атрибут 3". Чтобы выявить на техническом уровне функциональную зависимость, необходимо представить отношение со всеми возможными значениями по каждому атрибуту, что, в силу изменчивости совокупности данных в предметной области, практически невозможно, кроме случаев, когда рассматриваются связи между неизменяемыми данными, представляемыми классификаторами. Поэтому, чтобы однозначно выявить функциональную зависимость между атрибутами, необходимо проводить логический анализ предметной области и определять ограничения, накладываемые на значения, но каждому атрибуту или совокупности атрибутов в связи с другой совокупностью атрибутов. Только такой логический анализ даст возможность разработчику обоснованно принять решение о нахождении функциональной зависимости и необходимости се изучения и проведения операций нормализации.

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

{"Атрибут 1", "Атрибут 2") -" "Атрибут 3". (2.2)

Эта запись разделяет формулу на две составляющие: детерминант и зависимую часть.

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

Множество атрибутов детерминанта может состоять из одного или нескольких атрибутов, то же относится и к множеству атрибутов зависимой части.

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

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

{"Атрибут 1", "Атрибут 3") -> "Атрибут 3" . (2.3)

Если множество атрибутов зависимой части всем своим составом входит в множество атрибутов детерминанта, то тогда формируется тривиальная зависимость и зависимая часть, будучи, как правило, в совокупности

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

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

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

Например, используя представленный пример (см. табл. 2.18), можно заметить, что между атрибутами "Атрибут 1" и "Атрибут 3" имеется функциональная зависимость, которая может быть рассмотрена в отрыве от атрибута "Атрибут 2". "Атрибут 2" является здесь избыточным, характеризуя данные атрибута "Атрибут 1", он не связан с атрибутом "Атрибут 3". Конечно, в этом случае совокупность атрибутов "Атрибут 1" и "Атрибут 3" нужно рассматривать независимо от атрибута "Атрибут 2", убирая возникающую избыточность данных. Этот процесс реализуют с помощью нормализации (рис. 2.70), переводя отношения в соответствующую нормальную форму.

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

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

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

image110

Рис. 2.70. Уровни нормализации

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

Таблица 2.19

Пример исходного отношения

Сотрудник

Должность

Сфера ответственности

Иванов И. И.

Менеджер

Электроника

Комысов П. В.

Менеджер

Бытовая техника

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


Сотрудник Должность
Иванов И. И. Менеджер
Комысов П. В. Менеджер
Результат декомпозиции без потерь

Сотрудник

Сфера ответственности

Иванов И.И.

Электроника

Комысов П.В.

Бытовая техника


Поскольку в рассматриваемом отношении атрибут "Сотрудник" является уникальным и его можно рассматривать в качестве связующего звена между получаемыми отношениями, то обратный процесс объединения получившихся отношений приведет к точному воспроизведению исходного отношения в том виде, как оно было представлено изначально. То есть в процессе декомпозиции (проекции) не произошла потеря данных. В варианте, когда связующим звеном становится атрибут "Должность", невозможно соблюдение уникальности взаимосвязей с другими атрибутами, и в результате декомпозиции (проекции) происходит потеря данных (табл. 2.21).

Таблица 2.21

Сотрудник Должность
Иванов И. И. Менеджер
Комысов П. В. Менеджер

Должность Сфера ответственности
Менеджер Электроника
Менеджер Бытовая техника

Результат декомпозиции с потерей данных



Объединив полученные отношения, учитывая связующим атрибутом "Должность", получаем отношение с большим количеством экземпляров, нежели это должно быть но исходному отношению (табл. 2.22).

Таблица 2.22

Результат объединения отношений, декомпозированных с потерей данных

Сотрудник

Должность

Сфера ответственности

Иванов И. И.

Менеджер

Электроника

Комысов П. В.

Менеджер

Электроника

Иванов И. И.

Менеджер

Бытовая техника

Комысов П. В.

Менеджер

Бытовая техника



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

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


 
< Пред   СОДЕРЖАНИЕ     След >