Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 34
Текст из файла (страница 34)
Это обстоятельство обозначим как А=>В |С.Дальнейшая нормализация отношений, схожих с отношением Проекты,основывается на следующей теореме.Теорема Фейджина (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.
Проектирование и использование БД166ПРОЕКТЫ-ЗАДАНИЯ (Номер_проекта, Задание_сотрудника).Первичный ключ отношения: Номер_проекта, Задание_сотрудника.ПРОЕКТЫ-ЗАДАНИЯНомер_проектаЗадание_сотрудника001100120013004100420071Как легко увидеть, оба этих отношения находятся в 4 Н Ф и свободны отзамеченных недостатков. Дублирование значений атрибутов кодов сотрудников пропало. Попробуйте самостоятельно соединить эти отношения и убедиться в том, что в точности получится отношение ПРОЕКТЫ.В общем случае не всякое отношение можно восстановить к исходному.В нашем случае восстановление возможно потому, что каждый сотрудник, участвующий в некотором проекте, выполнял все задания по этому проекту(именно это укладывается в принцип 1:М соединения отношений). Сами жесотрудники участвовали в нескольких проектах, и разные проекты могли содержать одинаковые задания.Пятая нормальная форма.Результатом нормализации всех предыдущих схем отношений были два новых отношения.
Иногда это сделать не удается, либо получаемые отношения заведомо имеют нежелательные свойства. В этом случае выполняют декомпозицию исходного отношения на отношения, количество которых превышает два.Рассмотрим отношение СОТРУДН И КИ-ОТДЕЛ Ы-ПРОЕКТЫ, которое имеет заголовок С О Т Р У Д Н И К И - О Т Д Е Л Ы - П Р О Е К Т Ы (Код_сотрудника,Код_отдела, Номер_проекта).
Первичный ключ отношения включает все атрибуты: Код_сотрудника, Код_отделаи Номер_проекта. Пусть в этом отношении одинсотрудник может работать в нескольких отделах, причем в каждом отделе он может принимать участие в нескольких проектах. В одном отделе могут работать несколько сотрудников, но каждый проест выполняет только один сотрудник. Функциональных и многозначных зависимостей между атрибутами не существует.Это отношение является частью базы данных вымышленного научного подразделения НИИЧАВО - Научно-Исследовательского Института ЧАродейства и ВОлшебства из повести А.
и Б. Стругацких «Понедельник начинается в субботу». Коды отделов здесь обозначают: АД - Администрация,1675. Проектирование баз данныхСОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫКод_сотрудникаКод_отделаНомер_проекта01РД03602АД00403УП00404АД01905ЛС00105ЛС00406УП00708ВЦ01309ВЦ01410СЖ013ВЦ - Вычислительный центр, Л С - Линейного счастья, РД - Родильный дом,СЖ - Смысла жизни, УП - Универсальных превращений.Исходя из структуры отношения С О Т Р У Д Н И К И - О Т Д Е Л Ы - П Р О Е К Т Ыможно заключить, что оно находится в форме 4НФ. Тем не менее в отношении могут быть аномалии, связанные с возможностью повторения значенийатрибутов в нескольких кортежах. Например, то, что сотрудник может работать в нескольких отделах, при увольнении сотрудника требует отыскания ипоследующего удаления из исходной таблицы нескольких записей.Введем определение зависимости соединения.
Отношение R(X, Y, ... , Z)удовлетворяет зависимости соединения, которую обозначим как *(Х, Y,..., Z),в том и только в том случае, если R восстанавливается без потерь путем соединения своих проекций на X, Y, ... , Z. Зависимость соединения являетсяобобщением функциональной и многозначной зависимостей.Определение пятой нормальной формы.
Отношение R находится в 5 Н Ф(или нормальной форме проекции-соединения - PJ/NF) в том и только томслучае, когда любая зависимость соединения в R следует из существованиянекоторого возможного ключа в R.Образуем составные атрибуты отношения С О Т Р У Д Н И К И - О Т Д Е Л Ы ПРОЕКТЫ:СО={ Код_сотрудника, Код_отдела }СП={ Код_сотрудника, Номер_проекта }ОП={ Код_отдела, Номер_проекта }.Покажем, что если отношение С О Т Р У Д Н И К И - О Т Д Е Л Ы - П Р О Е К Т Ыспроецировать на составные атрибуты СО, СП и ОП, то соединение этих про-Часть 2. Проектирование и использование БД168екций дает исходное отношение.
Это значит, что в нашем отношении существовала зависимость соединения *(СО, СП, ОП). Проекции на составныеатрибуты назовем соответственно С О Т Р У Д Н И К И - О Т Д Е Л Ы , С О Т Р У Д НИКИ-ПРОЕКТЫ и ОТДЕЛЫ-ПРОЕКТЫ.Ранее мы выполняли соединение двух проекций и сразу получали искомый результат. Для восстановлении отношения из трех (или нескольких)проекций надо получить все попарные соединения (так как информация отом, какое из них «лучше», отсутствует), над которыми затем выполнить операцию пересечения множеств.
Проверим, так ли это.СОТРУДНИКИ-ОТДЕЛЫСОТРУДНИКИ-ПРОЕКТЫОТДЕЛЫ-ПРОЕКТЫКод_сотрудникаКод_отделаКод_сотрудникаНомер_проектаКод_отделаНомер_проекта01РД01036АД00402АД02004АД01903УП03004ВЦ01304АД04019ВЦ01405ЛС05001ЛС00105ЛС05004ЛС00406УП06007СЖ01308ВЦ08013РД03609ВЦ09014УП00410СЖ10013УП007Получим попарные соединения трех приведенных выше отношений, которые будут иметь вид:*(СО, СП)Код_сотрудникаKO/LотделаНомер_проекта01РД03602АД00403УП00404АД01905ЛС0011695.
Проектирование баз данных05ЛС00406УП00708ВЦ01309ВЦ01410СЖ013*(С0, ОП)*(СП, ОП)Код_сотрудникаКод^отделаНомер_проектаКод_сотрудникаКод_отделаНомер_проекта01РД03601РД03602АД00402АД00402АД01902ЛС00403УП00402УП00403УП00703АД00404АД00403ЛС00404АД01903УП00405ЛС00104АД01905ЛС00405ЛС00106УП00405АД00406УП00705ЛС00408ВЦ01305УП00408ВЦ01406УП00409ВЦ01306УП00709ВЦ01408ВЦ01310СЖ01308ВЦ01409ВЦ01309ВЦ01410СЖ013Нетрудно увидеть, что пересечение всех отношений дает исходное отношение С О Т Р У Д Н И К И - О Т Д Е Л Ы - П Р О Е К Т Ы .170Часть 2. Проектирование и использование БДЗамечание.Существуют и другие способы восстановления исходного отношения изего проекций. Так, для восстановления отношения С О Т Р У Д Н И К И - О Т Д Е Л Ы - П Р О Е К Т Ы можно соединить отношения С О Т Р У Д Н И К И - О Т Д Е Л Ы иС О Т Р У Д Н И К И - П Р О Е К Т Ы по атрибуту Код_сотрудника, после чего полученное отношение соединить с отношением О Т Д Е Л Ы - П Р О Е К Т Ы по составному атрибуту (Код_отдела, Номер_проекта).Отношения СОТРУДНИКИ-ОТДЕЛЫ, СОТРУДНИКИ-ПРОЕКТЫ и ОТДЕЛЫ-ПРОЕКТЫ находятся в 5НФ.
Эта форма является последней из известных. Условия ее получения довольно нетривиальны и поэтому она почти не используется на практике. Более того, она имеет определенные недостатки!Предположим, необходимо узнать, где и какие проекты исполняет сотрудник с кодом 02. Для этого в отношении С О Т Р У Д Н И К И - О Т Д Е Л Ы найдем,что сотрудник с кодом 02 работает в отделе АД, а из отношения О Т Д Е Л Ы ПРОЕКТЫ найдем, что в отделе АД выполняются проекты 004 и 019. А этозначит, что сотрудник 02 должен выполнять проекты 004 и 019.
Увы, информация о том, что сотрудник с кодом 02 выполняет проект 019, ошибочна (см.исходное отношение С О Т Р У Д Н И К И - О Т Д Е Л Ы - П Р О Е К Т Ы ) .Такие противоречия можно устранить только путем совместного рассмотрения всех проекций основного отношения. Именно поэтому после соединенияпроекций и выполнялась операция их пересечения. Безусловно, это - недостаток. Отметим, что наличие недостатков не требует обязательного отказа от определенных видов нормальных форм. Надо учитывать недостатки и условия ихпроявления. В некоторых постановках задач недостатки не проявляются.На практике обычно ограничиваются структурой БД, соответствующейЗ Н Ф или БКНФ. Поэтому процесс нормализации отношений методом нормальных форм предполагает последовательное удаление из исходного отношения следующих межатрибутных зависимостей:• частичных зависимостей неключевых атрибутов от ключа (удовлетворение требований 2НФ);• транзитивных зависимостей неключевых атрибутов от ключа (удовлетворение требований ЗНФ);• зависимости ключей (атрибутов составных ключей) от неключевых атрибутов (удовлетворение требований Б К Н Ф ) .Кроме метода нормальных форм Кодда, используемого для проектирования небольших БД, применяют и другие методы, например, метод ER-диаграмм (метод «Сущность-связь»), Этот метод используется при проектировании больших БД, на нем основан ряд средств проектирования БД.