Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 33
Текст из файла (страница 33)
Следствием избыточного дублирования данных является проблема ихредактирования. Например, изменение должности у преподавателя ИвановаИ.М. потребует просмотра всех кортежей отношения и внесения измененийв те из них, которые содержат сведения о данном преподавателе.Часть избыточности устраняется при переводе отношения в 2НФ.Вторая нормальная форма. Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного).Для устранения частичной зависимости и перевода отношения в 2 Н Ф необходимо, используя операцию проекции, разложить его на несколько отношений следующим образом:• построить проекцию без атрибутов, находящихся в частичной функциональной зависимости от первичного ключа;• построить проекции на части составного первичного ключа и атрибуты,зависящие от этих частей.В результате получим два отношения R1 и R2 в 2 Н Ф (рис.
5.6).В отношении R1 первичный ключ является составным и состоит из атрибутов Ф И О . Предм, Группа. Напомним, что данный ключ в отношении R1получен в предположении, что каждый преподаватель в одной группе по одному предмету может либо читать лекции, либо проводить практические занятия. В отношении R2 ключ Ф И О .Исследование отношений R1 и R2 показывает, что переход к 2 Н Ф позволил исключить явную избыточность данных в таблице R2 - повторение строксо сведениями о преподавателях. В R2 по-прежнему имеет место неявное дублирование данных.IДля дальнейшего совершенствования отношения необходимо преобразовать его в ЗНФ.Третья нормальная форма.Определение 1.
Отношение находится в ЗНФ, если оно находится в 2 И Фи каждый неключевой атрибут неТранзитивно зависит от первичного ключа.Существует и альтернативное определение.Определение 2. Отношение находится в З Н Ф в том и только в том случае,если все неключевые атрибуты отношения взаимно независимы и полностьюзависят от первичного ключа.1615. Проектирование баз данныхR1б)а)ФИОПредмГруппаВидЗанИванов И.М.СУБД256ПрактИванов И.М.ПЛ/1123ПрактПетров М.И.СУБД256ЛекцияПетров М.И.Паскаль256ПрактСидоров Н.Г.ПЛ/1123ЛекцияСидоров Н.Г.Паскаль256ЛекцияЕгоров В.В.ПЭВМ244ЛекцияФИОПредм> ВидЗанГруппаR2ФИОДолжнОклад Стаж Д_Сгаж КафИванов И.М.преп500510025Петров М.И.ст. преп 800710025Сидоров Н.Гпреп5001015025Егоров В. В.преп500510024Рис.
5.6. Отношения БД в 2 Н ФДоказать справедливость этого утверждения несложно. Действительно, то,что неключевые атрибуты полностью зависят от первичного ключа, означает,что данное отношение находится в форме 2 Н Ф . Взаимная независимость атрибутов (определение приведено выше) означает отсутствие всякой зависимости между атрибутами отношения, в том числе и транзитивной зависимости между ними. Таким образом, второе определение З Н Ф сводится к первомуопределению.Если в отношении Ri транзитивные зависимости отсутствуют, то в отношении R2 они есть:Ф И О—>Должн-> Окл ад,Ф ИО-Юкл адДолжн,Ф И О—> Стаж—>Д_СтажТранзитивные зависимости также порождают избыточное дублированиеинформации в отношении.
Устраним их. Д л я этого используя операциюб Зак. 541Часть 2. Проектирование и использование БД162проекции на атрибуты, являющиеся причиной транзитивных зависимостей,преобразуем отношение R2, получив при этом отношения R3, R4 и R5, каждое из которых находится в З Н Ф (рис.
5.7а). Графически эти отношенияпредставлены на рис. 5.76. Заметим, что отношение R2 можно преобразовать по-другому, а именно: в отношении R3 вместо атрибута Должн взятьатрибут Оклад.R3а)б)ФИОДолжнСтаж КафИванов И.М.преп525Петров М.И.ст. преп 725Сидоров Н.Гпреп1025Егоров В. В.преп524R4ДолжнОкладпреп500ст.преп800R5итаж5Д_Стаж100710010150ДолжнОкладСтажД^Стаж]Рис.
5.7. Отношения БД в З Н ФНа практике построение З Н Ф схем отношений в большинстве случаев является достаточным и приведением к ним процесс проектирования реляционной БД заканчивается. Действительно, приведение отношений к З Н Ф внашем примере, привело к устранению избыточного дублирования.Если в отношении имеется зависимость атрибутов составного ключа отнеключевых атрибутов, то необходимо перейти к усиленной З Н Ф .Усиленная З Н Ф или нормальная форма Бойса - Кодда ( Б К Н Ф ) .Отношение находится в Б К Н Ф , если оно находится в З Н Ф и в нем отсутствуют зависимости ключей (атрибутов составного ключа) от неключевыхатрибутов.5. Проектирование баз данных163У нас подобной зависимости нет, поэтому процесс проектирования на этомзаканчивается.
Результатом проектирования является БД, состоящая из следующих таблиц: Rl, R3, R4, R5. В полученной БД имеет место необходимоедублирование данных, но отсутствует избыточное.Четвертая нормальная форма.Рассмотрим пример нового отношения ПРОЕКТЫ, схема которого выглядит следующим образом: ПРОЕКТЫ (Номер_проекта, Код_сотрудника,Задание_сотрудника). Первичным ключом отношения является вся совокупность атрибутов: Номер_проекта, Код_сотрудника и Задание_сотрудника.В отношении содержатся номера проектов, для каждого проекта - список кодов сотрудников-исполнителей, а также список заданий, предусмотренных каждым проектом. Сотрудники могут участвовать в нескольких проектах, и разныепроекты могут содержать одинаковые задания.
Предполагается, что каждый сотрудник, участвующий в некотором проекте, выполняет все задания по этому проекту (предположение не всегда справедливо, но желательно для нашего примера).При такой постановке вопроса единственным возможным ключом отношения является составной атрибут Номер_проекта, Код_сотрудника, Задание_сотрудника. Он, естественно, и стал первичным ключом отношения.Отсюда следует, что отношение ПРОЕКТЫ, находится в форме Б К Н Ф .Пусть исходная информация в этом отношении выглядит следующим образом:ПРОЕКТЫНомер_проектаКод_сотрудникаЗадание_сотрудника001051001052001053004021004022004031004032004051004052007061Главный недостаток отношения ПРОЕКТЫ состоит в том, что при подключении/отстранении от проекта некоторого сотрудника приходится добавлять/исключать из отношения столько кортежей, сколько заданий имеется вЧасть 2.
Проектирование и использование БД164проекте. Внесение или исключение в отношении одного факта о некоторомсотруднике требует серии элементарных операций из-за дублирования значений в кортежах.Отсюда возникают вопросы: зачем хранить в кортежах повторяющиеся значения кодов сотрудников? Нужно ли перечислять все задания по каждомупроекту, да еще для каждого сотрудника-исполнителя этого проекта? Нельзяли информацию о привязке заданий к проектам поместить в отдельную таблицу и исключить повторения в основной таблице?Заметим, что косвенный признак аномалии, как и ранее, - дублированиеинформации в таблице. Выскажем предположение, что причиной аномалииявляется наличие некоторой зависимости между атрибутами отношения (какувидим далее - многозначной зависимости).Действительно, в отношении ПРОЕКТЫ существуют следующие две многозначные зависимости:Номер_проекта=>Код_сотрудникаНомер_проекта=»Задание_сотрудникаВ произвольном отношении R(A, В, С) может одновременно существовать многозначная зависимость А=>В и А=>С.
Это обстоятельство обозначим как А=>В |С.Дальнейшая нормализация отношений, схожих с отношением Проекты,основывается на следующей теореме.Теорема Фейджина (Fagin R.). Отношение R(A, В, С) можно спроецировать без потерь в отношения R1(A, В) и R2(A, С) в том и только том случае,когда существует зависимость А=>В |С.Под проецированием без потерь здесь понимается такой способ декомпозиции отношения, при котором исходное отношение полностью и безизбыточности восстанавливается путем естественного соединения полученных отношений (см. подраздел 3.6).Поясним проецирование без потерь на примере.Пусть имеется простейшее отношение R(A, В, С), имеющее вид:RАвСК151К152Л101М201м202м2031655.
Проектирование баз данныхПостроим проекции R1 и R2 на атрибуты А, В и А, С соответственно. Онибудут выглядеть так:R2R1АВК15Л10М20АСК1К2Л1м1м2м3Результатом операции соединения бинарных отношений R1(A, В) и R2(A, С)по атрибуту А является тернарное отношение с атрибутами А, В и С, кортежикоторого получаются путем связывания отношений R1 и R2 по типу 1:М наоснове совпадения значений атрибута А (подраздел 3.3).Так, связывание кортежей (к, 15) и {(к, 1), (к, 2)} дает кортежи {(к, 15,1), (к, 15,2)}.Нетрудно видеть, что связывание R1(A, В) и R2(A, С) в точности порождает исходное отношение R(A, В, С). В отношении R нет лишних кортежей, нет и потерь.Определение четвертой нормальной формы.
Отношение R находится в четвертой нормальной форме ( 4 Н Ф ) в том и только в том случае, когда существует многозначная зависимость А=>В, а все остальные атрибуты R функционально зависят от А.Приведенное выше отношение ПРОЕКТЫ можно представить в виде двухотношений: П Р О Е К Т Ы - С О Т Р У Д Н И К И и П Р О Е К Т Ы - З А Д А Н И Я .Структура этих отношений и содержимое соответствующих таблиц выглядит следующим образом:П Р О Е К Т Ы - С О Т Р У Д Н И К И (Номер_проекта, Код_сотрудника).Первичный ключ отношения: Номер_проекта, Код_сотрудника.ПРОЕКТЫ-СОТРУДНИКИНомер_проектаКод_сотрудника0010500402004030040500706Часть 2.