Зависимости по соединению
При приведении отношения ко всем видам нормальных форм (кроме пятой) использовалась единственная операция, необходимая для устранения избыточности в отношении, которая заключалась в декомпозиции данного отношения на две проекции. Но существуют отношения, для которых невозможно выполнить декомпозицию на две проекции без потерь.
В то же время над такими отношениями можно выполнить декомпозицию на большее количество проекций без потерь, каждая из которых обладает лучшими свойствами. Данный факт принято называть зависимостью по соединению, а подобные отношения называются 3-декомпозируемыми отношениями (любое отношение называется n-декомпозируемым при $n \ge 2$).
Обратим внимание, что зависимость по соединению является обобщением многозначной зависимости. Отношения, которые содержат зависимости по соединению, которые не являются одновременно ни функциональными, ни многозначными, также могут содержать аномалии обновления. В таких случаях вводят понятие пятой нормальной формы (5NF).
Пятая нормальная форма
Отношение находится в пятой нормальной форме только в том случае, если любая зависимость по соединению в этом отношении определяется лишь его возможными ключами.
Иначе говоря, у каждой проекции подобного отношения имеется не меньше одного возможного ключа и не меньше одного неключевого атрибута.
Если при естественном соединении отношений, которые были получены в результате декомпозиции, по сравнению с изначальным отношением создаются ложные кортежи, то подобная декомпозиция будет характеризоваться зависимостью соединения.
В отношении R (А, В, $\ldots$, С) отсутствует зависимость соединения *(А, В, $\ldots$, С) только в том случае, если возможно восстановление отношения R без потерь соединением своих проекций на А, В, $\ldots$, С (А, В, $\ldots$, С – наборы атрибутов отношения R).
Таким образом, отношение будет находиться в пятой нормальной форме, если оно не будет содержать зависимости соединения.
Рассмотрим еще одно определение пятой нормальной формы:
Отношение R находится в пятой нормальной форме лишь в том случае, если любая зависимость соединения в отношении R вытекает из возможного существования некоторого ключа в этом отношении.
Другими словами, если существует отношение R (n1, n2, n3), которое находится в четвертой нормальной форме, где n1, n2, n3 – составной первичный ключ, и существует зависимость соединения:
*({n1, n2}, {n1, n3}, {n2, n3}).
Для того, чтобы привести отношение R к пятой нормальной форме, необходимо данное отношение декомпозировать на следующие три отношения:
R1 (n1, n2), R2 (n1, n3) и R3 (n2, n3).
Пятую нормальную форму редко используют в практической деятельности. Довольно сложно дать определение самому наличию зависимостей «проекции-соединения», поскольку утверждение о существовании подобной зависимости делается для всех возможных состояний базы данных, а не только для рассматриваемого экземпляра отношения R.
Рассмотрим отношение СОТРУДНИК-ОТДЕЛ-ПРОЕКТ (Номер_Сотруд, Номер_Отдела, Номер_Проекта).
Допустим, что один и тот же человек может быть сотрудником нескольких отделов и работать над несколькими проектами в каждом отделе.
Первичный ключ такого отношения – это полная совокупность его атрибутов, многозначные и функциональные зависимости отсутствуют.
Следовательно, отношение находится в четвертой нормальной форме. Однако в данном отношении могут присутствовать аномалии, которые устраняются с помощью декомпозиции на три отношения.
Обозначим составные атрибуты следующим образом:
СО = {Номер_Сотруд, Номер_Отдела}
СП = {Номер_Сотруд, Номер_Проекта}
ОП = {Номер_Отдела, Номер_Проекта}
Допустим, что в отношении СОТРУДНИК-ОТДЕЛ-ПРОЕКТ присутствует зависимость соединения:
- (СО, СП, ОП)
При вставке и удалении кортежей возможно возникновение проблем, которых можно избежать с помощью декомпозиции начального отношения на три новые отношения:
СОТРУДНИК-ОТДЕЛ (Номер_Сотруд, Номер_Отдела)
СОТРУДНИК-ПРОЕКТ (Номер_Сотруд, Номер_Проекта)
ОТДЕЛ-ПРОЕКТ (Номер_Отдела, Номер_Проекта)