Транзитивная зависимость.

Пусть А,В и С – три атрибута или три набора атрибутов отношения R. Если С зависит от В, а В - от А, то С зависит от А. Если при этом обратное соответствие неоднозначно (т.е. А не зависит от В или В не зависит от С), то говорят, что С транзитивно зависит от А.

На диаграмме транзитивную зависимость С от А изображают следующим образом:

 

А

 

В

 

С

 

Преобразование в третью нормальную форму состоит в расщеплении исходного отношения на два:

 

А В

 

В С

 

Рассмотрим пример 1 отношение R4. В нем можно увидеть пример транзитивной зависимости:

табельный номер –> комната -> телефон.

Хранение в отношении атрибутов, находящихся в транзитивной зависимости от ключа, порождает ряд неудобств. Рассмотрим их на примере атрибута ТЕЛЕФОН в отношении R4.

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

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

Рассмотрим пример 2. Атрибут ДАТА ОКОНЧАНИЯ зависит от атрибута НОМЕР ПРОЕКТА, который, в свою очередь, зависит от атрибута НОМЕР СЛУЖАЩЕГО. Таким образом, ДАТА ОКОНЧАНИЯ транзитивно зависит от атрибута НОМЕР СЛУЖАЩЕГО.

Отношение имеет следующие недостатки:

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

2) Если вдруг все служащие прекратили работу над данным проектом, и проект был бы приостановлен до привлечения новых служащих, в БД были бы уничтожены все записи, содержащие дату окончания проекта. Такая ситуация кажется маловероятной, но для некоторых файлов подобный процесс вполне реален.

3) Изменение даты окончания проекта приводит к необходимости внесения изменений в несколько записей; число таких записей может меняться во времени, как и в случае второй нормальной формы.

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

Пример 1. Отношение R4 в результате преобразований должно быть приведено к двум отношениям R5 и R6.

 

R5

Табельныйномер ФИО Оклад Комната
Иванов Л.А.
Темкин М.Т.
Кошкин В.К.

 

R6

Комната телефон

 

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

Пример 2. Это отношение можно привести к третьей нормальной форме путем расщепления:

 

НОМЕРСЛУЖАЩЕГО *

 

ИМЯ СЛУЖАЩЕГО *

 

ЗАРПЛАТА

 

НОМЕР ПРОЕКТА

 

 

НОМЕРПРОЕКТА *

 

ДАТА ОКОНЧАНИЯ

 

Пара отношений предпочтительнее первоначального отношения, потому что информация об окончании проекта может потребоваться независимо от информации о служащем, а атрибут ДАТА ОКОНЧАНИЯ относится скорее к проекту, чем к служащему.

Пара отношений в третьей нормальной форме не содержит транзитивных и неполных зависимостей.