14
Нормализация на основе декомпозиции
Итак, схему отношения БД, не находящуюся в 3НФ
необходимо к ней привести. Приведение осуществляется через разбиение схемы
отношения на пару схем отношений R1
и R2 так, чтобы
любое отношение r(R), удовлетворяющее F, разлагалось на R1 и R2.
Если какое-то отношение из R1
и R2 не окажется в 3НФ,
то процесс декомпозиции придется повторить. Этот процесс продолжается до тех
пор, пока все полученные отношения не окажутся в 3НФ относительно F.
Процесс декомпозиции схемы не бесконечен. Каждый раз
обе получившиеся в результате декомпозиции схемы отношений становятся меньше
исходной, а в схеме отношения, содержащей только два атрибута, не может быть
никакой транзитивной зависимости.
До сих пор при рассмотрении конкретных ситуаций
отношения разделялись на проекции без проверки сохранности данных. Однако можно
привести ни один случай, когда декомпозиция отношения дает набор отношений, не
эквивалентный исходному отношению. Например, из исходного отношения:
R
A |
B |
C |
a1 a1 a2 a2 |
b1 b2 b3 b2 |
c1 c2 c1 c2 |
в соответствии с некоторой декомпозицией можно
получить две проекции, которые будут выглядеть так:
Pac (R) P bc (R)
A |
C |
|
|
|
B |
C |
a1 a1 a2 a2 |
c1 c2 c1 c2 |
|
|
|
b1 b2 b3 |
c1 c2 c1 |
Соединение же этих проекций даст следующее отношение:
P P ac (R) ►◄ P bc (R)
A |
B |
C |
a1 a1 |
b1 b3 |
c1 c1 |
a1 a2 |
b2 b1 |
c2 c1 |
a2 a2 |
b3 b2 |
c1 c2 |
Данная декомпозиция не является полной, так как при
соединении её проекций появляются кортежи, отсутствовавшие в исходном отношении
(в примере они выделены курсивом и подчеркнуты). В рассматриваемом примере ни
зависимость C®A, ни зависимость C®B не являются корректными, поэтому
естественное соединение проекций порождает два новых кортежа.
Четвертая
нормальная форма
Однако в ходе дальнейших
исследований был выявлен еще один тип зависимостей — многозначная
зависимость. Возможность существования в отношении многозначных зависимостей
возникает в процессе приведения исходных таблиц к 1НФ. Вспомним, что первая
нормальная форма запрещает отношениям иметь неатомарные, многозначные атрибуты.
Однако существует множество ситуаций моделирования, требующих многозначных
атрибутов. Например, в университете преподаватель факультета отвечает за
преподавание нескольких предметов, или отдел некоторой фирмы выполняет ряд
проектов. То есть многозначность присутствует в тех отношениях, где
моделируется связи типа 1:М. Если в отношении моделируется одна связь такого
рода, то такая многозначность называется тривиальной.
Отношение является полностью
ключевым, а, следовательно, находится в НФБК. Поэтому все рассмотренные до сих
пор приемы нормализации, опирающиеся на функциональные зависимости, оказываются
неприменимыми, поскольку этих зависимостей в отношении вовсе нет.
В 1971 году Фейгин
предложил строго теоретически обоснованный выход из этой ситуации с помощью понятия многозначной зависимости.
Условие, обеспечивающее независимость атрибутов путем обязательного
повторения значений, называется многозначной зависимостью (MЗ). Определим формально условие существования многозначной зависимости:
многозначная зависимость имеет место в том отношении, в котором содержится две независимые связи типа 1:М. И все
проблемы данной ситуации вызваны именно этой независимостью связей.
Многозначные зависимости
являются такими же ограничительными условиями, как и функциональные
зависимости. Очевидно, что поскольку они требуют огромного числа повторений
значений данных, важный этап процесса нормализации состоит в избавлении от
многозначных зависимостей.
В
отношении R(A, B, C) существует
многозначная зависимость A->>B
в том и только в том случае, если множество значений B, соответствующее паре значений A и C, зависит только от
A и не зависит от С.
Многозначные зависимости можно
считать обобщением функциональных зависимостей в том смысле, что каждая
функциональная зависимость является многозначной, где множество зависимых
значений является одноэлементным множеством. Однако обратное утверждение
неверно, поскольку существуют многозначные зависимости, которые не являются
функциональными.
Легко показать, что в общем случае в отношении R (A, B, C) существует многозначная
зависимость A ->> B в том и
только в том случае, когда существует многозначная зависимость A ->> C.