Описание формального алгоритма приведения отношений к третьей нормальной форме

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

Рисунок 2.12 – Пример описания отношения R для демонстрации формального алгоритма приведения к третьей нормальной форме

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

 

 

 

Рисунок 2.13 – Вид отношения R после применения метода классификации

 

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

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

Ключи: <5>,<1,4>,<2,4>,<3,4>,<4,6>.

 

Так как в отношении имеются составные ключи, то возможно это отношение не находится во второй нормальной форме. Начиная с первого составного ключа проверяем наличие частичных функциональных зависимостей. У составного ключа <1,4> имеются две части – атрибуты 1 и 4. От части ключа могут зависеть атрибуты, не являющиеся ключами и не входящие с данным атрибутом в ключ для оставшихся составных ключей. Анализ наличия функциональной зависимости от атрибута 1 нужно выполнить для атрибутов 2,3,6. Определение функциональной зависимости дано в пункте 1.4. Как видно от атрибута 1 функционально зависят 3 и 6: 1→3, 1→6. Раз имеются зависимости от части ключа, то отношение не находится во второй нормальной форме. После приведения к 2НФ по правилу, получим два отношения R1(1,3,6) и R2(1,2,4,5). Оба этих отношения показаны на рисунке 2.14. Следует заметить, что повторяющиеся кортежи удалены, это необходимо сделать, так как по определению, в отношении не допускаются одинаковые кортежи.

После этого шага для каждого из полученных отношений алгоритм повторяется, начиная с определения ключевых атрибутов. Сначала рассмотрим отношение R1. В этом отношении имеется один атомарный ключ <1>. Так как отсутствуют составные ключи, то отношение находится во второй нормальной форме. Выполним анализ на третью нормальную форму. В данном случае ключевой атрибут A это атрибут <1>. Для этого отношения выполняются соотношения: 1→3, 3→6, 6 -/->1, 6-/->3, 3-/->1.

 

 

R1(1,3,6) R(1,2,4,5)

 

 

 

Рисунок 2.14 – После приведения ко второй нормальной форме отношения R

 

Наличие перечисленных функциональных зависимостей показывает, что в отношении имеется транзитивная зависимость атрибутов, не являющихся ключом, от ключа и, значит, отношение не находится в третьей нормальной форме. Применение правила нормализации для третьей нормальной формы приводит к возникновению двух отношенийR3 и R4 со следующими схемами R3(3,6), R4(1,3), показанными на рисунке 2.15.

R3(3,6) R4(1,3)

 

 

 

Рисунок 2.15 – Схемы отношений после нормализации отношения R1

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

Теперь проверим на наличие нормальных форм отношение R2(1,2,4,5). В этом отношении имеется следующий состав ключей: <5>,<1,4>,<2,4>. При определении состава ключей в данном случае, когда после нормализации не удалялись кортежи отношения, можно не анализировать значения атрибутов отношения, а оставить из списка ключевых атрибутов отношения R те ключи, которые состоят из атрибутов отношения R4. Аналогично рассуждаем, как и для отношения R, так как в отношении R4 имеются составные ключи, то проверяем его на наличие второй нормальной формы, анализируя по порядку ключ <1,4>. Анализ наличия функциональных зависимостей от части ключа 1 была выполнена ранее. Выполняем анализ наличия функциональных зависимостей атрибутов отношения R4 от части ключа 4. Таких зависимостей нет, так как атрибут 5 является атомарным ключом, а оставшиеся атрибуты отношения 1 и 2 входят с атрибутом 4 в составной ключ, отсюда также не могут от него зависеть. Осталось проанализировать составной ключ <2,4>, а более точно наличие зависимости от части ключа- атрибута 2. Анализируя отношение R4 видим, что такая зависимость есть: 2→1. Таким образом, наличие частичной зависимости показывает, что отношение R4 не находится во второй нормальной форме. В результате его нормализации получим два отношения: R5(1,2) и R6(2,4,5). На рисунке 2.16 показаны отношения R5 и R6.

 

R5(1,2) R6(2,4,5)

 

 

 

Рисунок 2.16 – Отношения R5 и R6 после нормализации отношения R2

 

Полученные отношения R5 и R6 находятся в третьей нормальной форме. Отношение R5 имеет только два атрибута, а в отношении R6 все атрибуты либо являются первичными ключами, либо входят в составной ключ. Таким образом, в результате применения описанного алгоритма нормализации исходного отношения R получена совокупность следующих схем отношений, находящихся в третьей нормальной форме: R3(3,6), R4(1,3), R5(1,2), R6(2,4,5).

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