Лекция 11. Четвертая и пятая нормальные формы В лекции рассматриваются четвертая и пятая нормальные формы. Приводится окончательная схема нормализации БД. Даются определения альтернативных нормальных форм. Цель: ввести понятие четвертой и пятой нормальных форм и обосновать необходимость их применения. Для определения 4НФ необходимо ввести понятие многозначной зависимости (МЗ), которое является обобщением понятия функциональной зависимости. Многозначная зависимость Пусть R – отношение, а A, B и C являются произвольными подмножествами множества атрибутов отношения R. Тогда подмножество B многозначно зависит от подмножества А, что символически выражается следующей записью А →→ В (читается как «А многозначно определяет B»), тогда и только тогда, когда в каждом допустимом значении R множество значений B, соответствующее заданной паре значений А, C, зависит только от значения А и не зависит от значения C. Рассмотрим отношение {CourseID, TeacherID, RoomID} со следующими ограничениями: 1. Любая дисциплина может вестись любым количеством преподавателей и в любом количестве кабинетов. 2. Преподаватели и кабинеты не зависят друг от друга. 3. Преподаватель может вести несколько разных дисциплин в разных кабинетах. Из этих ограничений видно, что отношение получается избыточным, т.к. если существуют следующие два кортежа: CourseID 2 2 TeacherID 10 9 RoomID 400 401 то в данном отношении обязаны существовать и следующие две записи: 1 CourseID 2 2 TeacherID 9 10 RoomID 400 401 Таким образом, если мы хотим добавить информацию о том, что какую-то дисциплину может вести некоторый преподаватель, мы должны вставить столько записей, сколько кабинетов подходит для данной дисциплины. Кроме того, можно легко проверить, что данное отношение находится в НФБК: если отношение находится в 1НФ и оно полностью ключевое (единственный потенциальный ключ состоит из всего множества атрибутов отношения), то можно утверждать, что оно находится в НФБК. Это объясняется тем, что неключевых атрибутов нет, а, следовательно, все требования 2НФ, 3НФ и НФБК выполняются автоматически. Для нормализации отношения, нам требуется разбить его на два, но раньше мы производили декомпозицию на основе транзитивных ФЗ, здесь же все ФЗ тривиальны, т.е. все атрибуты напрямую зависят от первичного ключа. Необходимо определить способ декомпозиции данного отношения и доказать, что декомпозиция будет произведена без потерь. Правило многозначной зависимости: для отношения R, в котором существуют подмножества множества атрибутов A, B, C, А →→ B тогда и только тогда, когда А →→ С. Обычно это записывают так: А →→ B | C. Теорема Фейгина. Пусть А, B и С являются множествами атрибутов переменной отношения R{A, B, С}. В таком случае отношение R будет равно соединению его проекций по атрибутам {А, B} и {А, С} тогда и только тогда, когда для отношения R выполняется многозначная зависимость А →→ B | C. Найдем все МЗ в нашем отношении: {CourseID} → {TeacherID} {CourseID} → {RoomID} По теореме Фейгина мы можем произвести декомпозицию по этим двум МЗ и при этом никакая информация не будет потеряна. Получим два отношения: {CourseID, TeacherID} и {CourseID, RoomID}. Так как эти отношения полностью ключевые, то они находятся в НФБК. 2 Теперь, следуя теореме Фейгина, можно дать определение четвертой нормальной формы. Четвертая нормальная форма Отношение R находится в четвертой нормальной форме (4НФ) тогда и только тогда, когда в случае существования таких подмножеств А и В атрибутов этого отношения R, для которых выполняется нетривиальная многозначная зависимость А →→ B, все атрибуты отношения R также функционально зависят от атрибута А. Можно дать альтернативную формулировку: отношение R находится в 4НФ тогда и только тогда, когда оно находится в НФБК и все многозначные зависимости в отношении R фактически представляют собой функциональные зависимости от его потенциальных ключей. Обратите внимание на то, что, исходя из этого определения, нахождение в 4НФ предполагает обязательное нахождение в НФБК. Следовательно, исходное отношение {CourseID, TeacherID, RoomID} не находится в 4НФ, т.к. существует МЗ CourseID →→ TeacherID, которая не является ФЗ, и детерминант не является ключом. Полученные две проекции {CourseID, TeacherID} и {CourseID, RoomID} будут в 4НФ, т.к. существуют только ФЗ от единственного потенциального ключа. Зависимость соединения До сих пор по умолчанию предполагалось, что единственной необходимой или допустимой операцией в процессе нормализации является замена отношения по правилам декомпозиции без потерь точно двумя ее проекциями. Однако существуют отношения, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции без потерь на три или большее количество проекций. Подобные отношения обозначим термином «n-декомпонуемое отношение», где n – количество проекций, на которые можно разбить без потерь. Пример. Рассмотрим пример отношения, которое трудно разбить без потерь на два отношения: 3 Teacher Иванов С.Ю. Иванов С.Ю. Иванов С.Ю. Пестов О.А. Веснин Р.А. Course Технологии программирования Технологии программирования Базы данных Базы данных Базы данных Group ПМ-41 ПМ-51 ПМ-41 ПМ-51 ПМ-51 Разобьем на три отношения: Teacher Иванов С.Ю. Иванов С.Ю. Пестов О.В. Веснин Р.А. Course Технологии программирования Базы данных Базы данных Базы данных Course Технологии программирования Технологии программирования Базы данных Базы данных Teacher Иванов С.Ю. Иванов С.Ю. Пестов О.В. Веснин Р.А. Group ПМ-41 ПМ-51 ПМ-41 ПМ-51 Group ПМ-41 ПМ-51 ПМ-51 ПМ-51 Если произвести соединение только двух отношений, то мы получим лишние записи, которых не было в исходном отношении. Но если мы соединим все три проекции, то получим в точности исходное отношение. Поэтому можно сказать, что исходное отношение 3-декомпонуемое. Дадим определение зависимости соединения, необходимое для 5НФ. Зависимость соединения. Пусть R – отношение, а А, B, ..., Z – произвольные подмножества множества его атрибутов. Отношение R удовлетворяет зависимости соединения *{А, В, . . . , Z} (читается «звездочка А, B, ..., Z») тогда и только тогда, когда любое допустимое значение 4 отношения R эквивалентно соединению его проекций по подмножествам А, B, ..., Z множества атрибутов. Для нашего исходного отношения существует зависимость соединения: *{ {Teacher, Course}, {Course, Group}, {Teacher, Group} }. Зависимости соединений включают в себя многозначные зависимости, а многозначные зависимости включают в себя функциональные. Пятая нормальная форма Отношение R находится в пятой нормальной форме (5НФ), которую иногда иначе называют проекционно-соединительной нормальной формой, тогда и только тогда, когда каждая нетривиальная зависимость соединения в отношении R определяется потенциальным ключом (или ключами) R. Отношение {Teacher, Course, Group} не находится в 5НФ, т.к. в отношении существует только один потенциальный ключ (первичный), то можно составить только одну зависимость соединения: *{ {Teacher, Course}, {Course, Group}, {Teacher, Group} } Эта зависимость соединения не подразумевается первичным ключом, т.е. потенциальный ключ не встречается в подмножествах этой зависимости. Рассмотрим отношение Groups: {GroupID, GroupName, Faculty, Supervisor}. Здесь два потенциальных ключа: GroupID и GroupName. Можно составить следующие зависимости соединения: *{ {GroupID, Supervisor}, {GroupID, GroupName, Faculty} } *{ {GroupID, GroupName}, {GroupID, Faculty}, {GroupName, Supervisor} } и т.д. Следует отметить, что в каждом подмножестве есть хотя бы один потенциальный ключ, и каждый потенциальный ключ встречается хотя бы один раз в этих подмножествах. 5 Впрочем, найти в некотором отношении все зависимости соединения гораздо сложнее, чем многозначные и функциональные зависимости, поэтому процесс проверки на 5НФ недостаточно точен. Однако отношения, которые доведены до 4НФ, но не находятся в 5НФ, на практике встречаются крайне редко. Фактически 5НФ является окончательной нормальной формой по отношению к операциям проекции и соединения (что отражено в ее альтернативном названии – проекционно-соединительная нормальная форма). Таким образом, если переменная отношения находится в 5НФ, то гарантируется, что она не содержит аномалий, которые могут быть исключены посредством ее разбиения на проекции. Итоговая схема нормализации До сих пор весь процесс нормализации основывался на декомпозиции без потерь. Основная идея состояла в следующем: пусть дано некоторое отношение R в 1НФ и для него определены функциональные зависимости, многозначные зависимости и зависимости соединения. Задача заключается в систематическом разбиении исходного отношения R на такой набор меньших (т.е. имеющих меньшую степень) отношений, который в некотором смысле будет эквивалентен отношению R, но с другой стороны будет более предпочтительным. Каждый этап процесса такого преобразования заключается в разбиении на проекции отношений, полученных на предыдущем этапе. При этом на каждом этапе преобразования существующие ограничения используются для выбора тех проекций, которые будут получены в этот раз. Весь процесс нормализации можно неформально определить с помощью следующих правил: 1. Отношение в 1НФ следует разбить на такие проекции, которые позволят исключить все функциональные зависимости, не являющиеся неприводимыми. В результате будет получен набор переменных отношения во 2НФ. 2. Полученные отношения во 2НФ следует разбить на такие проекции, которые позволят исключить все существующие транзитивные 6 функциональные зависимости. В результате будет получен набор отношений в ЗНФ. 3. Отношения в ЗНФ следует разбить на проекции, позволяющие исключить все оставшиеся функциональные зависимости, в которых детерминанты не являются потенциальными ключами. В результате будет получен набор отношений в НФБК. Заметим, что эти три правила можно объединить в одно: «Исходное отношение следует разбить на проекции, позволяющие исключить все функциональные зависимости, в которых детерминанты не являются потенциальными ключами». 4. Отношения в НФБК следует разбить на проекции, позволяющие исключить все многозначные зависимости, которые не являются также функциональными. В результате будет получен набор отношений в 4НФ. На практике такие многозначные зависимости обычно исключаются перед выполнением этапов 1–3. 5. Отношения в 4НФ следует разбить на проекции, позволяющие исключить все зависимости соединения, которые не определяются потенциальными ключами. В результате будет получен набор отношений в 5НФ. По поводу приведенных выше правил можно сделать несколько дополнительных замечаний: 1) Процесс разбиения на проекции на каждом этапе должен быть выполнен без потерь и с сохранением зависимостей (там, где это возможно). 2) Иногда удобно пользоваться альтернативными определениями нормальных форм: отношение R находится в НФБК тогда и только тогда, когда каждая функциональная зависимость определяется его потенциальными ключами; отношение R находится в 4НФ тогда и только тогда, когда каждая многозначная зависимость определяется его потенциальными ключами; отношение R находится в 5НФ тогда и только тогда, когда каждая зависимость соединения определяется его потенциальными ключами. 7 3) Общее назначение процесса нормализации заключается в следующем: исключение избыточности; устранение аномалий обновления; разработка проекта базы данных, который является достаточно «качественным» представлением реального мира, интуитивно понятен и может служить хорошей основой для последующего расширения; упрощение процедуры наложения ограничений целостности (эта цель обеспечивается созданием связи «один ко многим», от ключевого к неключевому). 4) Необходимо помнить, что данные рекомендации по поводу нормализации являются всего лишь рекомендациями и, вероятно, могут существовать соображения, по которым нормализацию не следует выполнять до конца или можно менять последовательность действий. 5) Идеи нормализации чрезвычайно полезны для проектирования баз данных, но они отнюдь не являются универсальным средством по следующим причинам: нормализация позволяет реализовать определенные ограничения целостности, но на практике, помимо зависимостей соединения, функциональных и многозначных зависимостей, существуют и другие типы ограничений; декомпозиция может быть неуникальной (как правило, имеется несколько способов приведения заданного отношения к 5НФ), но существует очень мало объективных критериев, позволяющих выбрать один из альтернативных вариантов декомпозиции; преследование одновременно двух целей (т.е. приведение к НФБК и сохранение зависимостей) в некоторых случаях приводит к конфликтной ситуации; не всякую избыточность данных можно устранить разбиением на проекции. Следует также отметить, что существуют хорошие методики нисходящего проектирования, которые позволяют тем или иным конкретным способом создавать полностью нормализованный проект базы данных. 8 Другие нормальные формы Помимо уже описанных, существуют и другие нормальные формы. Дело в том, что теория нормализации (теория зависимостей) развилась в широкую самостоятельную область знаний. Исследования в данной области продолжаются и в настоящее время, причем довольно успешно, и после 5НФ были выведены некоторые другие: 1. Доменно-ключевая нормальная форма (ДКНФ). Эта форма была предложена Р. Фейгином, но в отличие от других нормальных форм, она не определяется в терминах функциональных зависимостей, многозначных зависимостей или зависимостей соединения. Вместо этого утверждается, что отношение R находится в ДКНФ тогда и только тогда, когда каждое наложенное на него ограничение является логическим следствием ограничений доменов и ограничений ключей отношения R. Здесь ограничение домена – это ограничение, предписывающее использование для определенного атрибута значений только из некоторого заданного домена. А ограничение ключа - это ограничение, утверждающее, что некоторый атрибут или комбинация атрибутов представляет собой потенциальный ключ. Несмотря на то, что Р. Фейгин доказал, что отношение в ДКНФ находится и в 5НФ, не все отношения можно привести к ДКНФ. 2. Нормальная форма типа «выборка – объединение». Такие нормальные формы связаны с другим направлением в исследовании нормализации: проведение декомпозиции не на основе проекции, а на основе других операций. В данном случае взяты операции выборки и объединения. Так, например, таблицу Students на основе выборки можно разбить на таблицы по каждой группе или по курсу. Таким образом, всегда можно создать новую теорию нормализации на основе выборки, и нормальные формы этой теории будут типа «выборка– объединение». Тогда нормальные формы, рассмотренные нами, можно назвать нормальными формами типа «проекция–соединение». Краткие итоги. Рассмотрены четвертая и пятая нормальные формы, которые считаются окончательными. Сформулированы основные правила нормализации баз данных. Приведены альтернативные нормальные формы. 9