Третья нормальная форма.

Определение 1. Отношение находится в ЗНФ, если оно находится в 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.

Существует и альтернативное определение.

Определение 2. Отношение находится в ЗНФ в том и только в том случае, если все неключевые атрибуты отношения взаимно независимы и полностью зависят от первичного ключа.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доказать справедливость этого утверждения несложно. Действительно, то, что неключевые атрибуты полностью зависят от первичного ключа, означает, что данное отношение находится в форме 2НФ. Взаимная независимость ат­рибутов (определение приведено выше) означает отсутствие всякой зависи­мости между атрибутами отношения, в том числе и транзитивной зависимос­ти между ними. Таким образом, второе определение ЗНФ сводится к первому определению.

Если в отношении R1 транзитивные зависимости отсутствуют, то в отно­шении R2 они есть:

ФИО—»Должн—Юклад, ФИО—Юкл ад—> Должн, ФИО->Стаж->Д_Стаж

Транзитивные зависимости также порождают избыточное дублирование информации в отношении. Устраним их. Для этого используя операцию проекции на атрибуты, являющиеся причиной транзитивных зависимостей, преобразуем отношение R2, получив при этом отношения R3, R4 и R5, каж­дое из которых находится в ЗНФ (рис. 5.7а). Графически эти отношения представлены на рис. 5.76. Заметим, что отношение R2 можно преобразо­вать по-другому, а именно: в отношении R3 вместо атрибута Должн взять атрибут Оклад.

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На практике построение ЗНФ схем отношений в большинстве случаев яв­ляется достаточным и приведением к ним процесс проектирования реляци­онной БД заканчивается. Действительно, приведение отношений к ЗНФ в нашем примере, привело к устранению избыточного дублирования.

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

Усиленная ЗНФ или нормальная форма Бойса - Кодда (БКНФ).

Отношение находится в БКНФ, если оно находится в ЗНФ и в нем отсут­ствуют зависимости ключей (атрибутов составного ключа) от неключевых атрибутов.

У нас подобной зависимости нет, поэтому процесс проектирования на этом заканчивается. Результатом проектирования является БД, состоящая из сле­дующих таблиц: Rl, R3, R4, R5. В полученной БД имеет место необходимое дублирование данных, но отсутствует избыточное.

Четвертая нормальная форма.

Рассмотрим пример нового отношения ПРОЕКТЫ, схема которого вы­глядит следующим образом: ПРОЕКТЫ (Номерпроекта, Кодсотрудника, Заданиесотрудника). Первичным ключом отношения является вся совокуп­ность атрибутов: Номерпроекта, Кодсотрудника и Заданиесотрудника.

В отношении содержатся номера проектов, для каждого проекта - список ко­дов сотрудников-исполнителей, а также список заданий, предусмотренных каж­дым проектом. Сотрудники могут участвовать в нескольких проектах, и разные проекты могут содержать одинаковые задания. Предполагается, что каждый со­трудник, участвующий в некотором проекте, выполняет все задания по этому про­екту (предположение не всегда справцтдав':*, но желательно для нашего примера).

При такой постановке вопроса единственным возможным ключом отно­шения является составной атрибут Номерпроекта, Кодсотрудника, Зада­ниесотрудника. Он, естественно, и стал первичным ключом отношения. Отсюда следует, что отношение ПРОЕКТЫ, находится в форме БКНФ.

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

ПРОЕКТЫ

 

Номер_проекта

Код_сотрудника

Задание_сотрудн и ка

001

05

1

001

05

2

001

05

3

004

02

1

004

02

2

004

03

1

004

03

2

004

05

1

004

05

2

007

06

1

Главный недостаток отношения ПРОЕКТЫ состоит в том, что при под­ключении/отстранении от проекта некоторого сотрудника приходится добав­лять/исключать из отношения столько кортежей, сколько заданий имеется в проекте. Внесение или исключение в отношении одного факта о некотором сотруднике требует серии элементарных операций из-за дублирования зна­чений в кортежах.

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

Заметим, что косвенный признак аномалии, как и ранее, - дублирование информации в таблице. Выскажем предположение, что причиной аномалии является наличие некоторой зависимости между атрибутами отношения (как увидим далее - многозначной зависимости).

Действительно, в отношении ПРОЕКТЫ существуют следующие две мно­гозначные зависимости:

Номер_проекта=>Код_сотрудника Номер_проекта=>3адание_сотрудника

В произвольном отношении R(A, В, С) может одновременно существовать мно­гозначная зависимость А=>В и А=>С. Это обстоятельство обозначим как А=>В |С.

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

Теорема Фейджипа (Fagin R.). Отношение R(A, В, С) можно спроециро­вать без потерь в отношения R1(A, В) и R2(A, С) в том и только том случае, когда существует зависимость А=>В |С.

Определение четвертой нормальной формы. Отношение R находится в чет­вертой нормальной форме (4НФ) в том и только в том случае, когда суще­ствует многозначная зависимость А=>В, а все остальные атрибуты R функци­онально зависят от А.

Пятая нормальная форма.

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

Рассмотрим отношение СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ, которое име­ет заголовок СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ (Код_сотрудника, Кодотдела, Номорпроекта). Первичный ключ отношения включает все атрибу­ты: Кодсотрудника, Кодотдела и Номерпроекта. Пусть в этом отношении один сотрудник может работать в нескольких отделах, причем в каждом отделе он мо­жет принимать участие в нескольких проектах. В одном отделе могут работать не­сколько сотрудников, но каждый проект выполняет только один сотрудник. Функ­циональных и многозначных зависимостей между атрибутами не существует.

Это отношение является частью базы данных вымышленного научного под­разделения НИИЧАВО - Научно-Исследовательского Института ЧАродей-ства и ВОлшебства из повести А. и Б. Стругацких «Понедельник начина­ется в субботу». Коды отделов здесь обозначают: АД - Администрация, СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ

 

Код_сотрудника

Код_отдела

Номер_проекта

 

 

01

РД

036

 

 

02

АД

004

 

 

03

УП

004

 

 

04

АД

019

 

 

05

ЛС

001

 

 

05

ЛС

004

 

 

06

УП

007

 

 

08

ВЦ

013

 

 

09

ВЦ

014

 

 

10

СЖ

013

 

ВЦ - Вычислительный центр, ЛС - Линейного счастья, РД - Родильный дом, СЖ - Смысла жизни, УП - Универсальных превращений.

Исходя из структуры отношения СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ можно заключить, что оно находится в форме 4НФ. Тем не менее в отноше­нии могут быть аномалии, связанные с возможностью повторения значений атрибутов в нескольких кортежах. Например, то, что сотрудник может рабо­тать в нескольких отделах, при увольнении сотрудника требует отыскания и последующего удаления из исходной таблицы нескольких записей.

Введем определение зависимости соединения. Отношение R(X, Y, ... , Z) удовлетворяет зависимости соединения, которую обозначим как *(Х, Y,..., Z), в том и только в том случае, если R восстанавливается без потерь путем со­единения своих проекций на X, Y, ... , Z. Зависимость соединения является обобщением функциональной и многозначной зависимостей.

Определение пятой нормальной формы. Отношение R находится в 5НФ (или нормальной форме проекции-соединения - PJ/NF) в том и только том случае, когда любая зависимость соединения в R следует из существования некоторого возможного ключа в R.

Образуем составные атрибуты отношения СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ:

СО={ Кодсотрудника, Кодотдела} СП={ Кодсотрудника, Номерпроекта} ОП={ Кодотдела, Номерпроекта}.

Покажем, что если отношение СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ спроецировать на составные атрибуты СО, СП и ОП, то соединение этих проекций дает исходное отношение. Это значит, что в нашем отношении суще­ствовала зависимость соединения *(СО, СП, ОГ1). Проекции иа составные атрибуты назовем соответственно СОТРУДНИКИ-ОТДЕЛЫ, СОТРУД­НИКИ-ПРОЕКТЫ и ОТДЕЛЫ-ПРОЕКТЫ.

На практике обычно ограничиваются структурой БД, соответствующей ЗНФ или БКНФ. Поэтому процесс нормализации отношений методом нор­мальных форм предполагает последовательное удаление из исходного отно­шения следующих межатрибутных зависимостей:

  частичных зависимостей неключевых атрибутов от ключа (удовлетворение требований 2НФ);

  транзитивных зависимостей неключевых атрибутов от ключа (удовлет­ворение требований ЗНФ);

  зависимости ключей (атрибутов составных ключей) от неключевых аттрибутов (удовлетворение требований БКНФ).


 

 

Hosted by uCoz