Третья нормальная форма.
Определение 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НФ);
• транзитивных зависимостей неключевых атрибутов от ключа (удовлетворение требований ЗНФ);
• зависимости ключей (атрибутов составных ключей) от неключевых аттрибутов (удовлетворение требований БКНФ).