Изменения

Перейти к: навигация, поиск

Нормальные формы: третья и Бойса-Кодда

968 байт добавлено, 19:23, 4 сентября 2022
м
rollbackEdits.php mass rollback
Третья нормальная форма исправляет оставшиеся после приведения в 2НФ простые аномалии. Форма Бойса-Кодда является самой сильной формой, не допускающей аномалий, причиной возникновения которых являются немногозначные сложные функциональные зависимости, и логически находится между третьей и четвертой НФ.
== Третья нормальная форма ==
|}
Нетрудно заметить, что после приведения в 3НФ не остается никаких "«неявных" » зависимостей между атрибутами одного отношения. Благодаря этому, аномалии вставки, удаления и изменения больше не проявляются: не зависимые друг от друга напрямую неключевые данные никак не влияют на возможности сохранить или обновить ту или иную информацию.
=== Аномалии ===
|}
Функциональные зависимости в данном отношении &ndash; это <tex>\mathrm{CourseId}, \mathrm{Group} \rightarrow \mathrm{Examiner}</tex>, <tex>\mathrm{CourseId}, \mathrm{Examiner} \rightarrow \mathrm{Group}</tex> и <tex>\mathrm{Examiner} \leftrightarrow \mathrm{Phone}</tex>, а также все порождаемые имиследующие из них.
Если преподаватель ведет разные предметы у разных групп, такая структура отношения позволяет задать преподавателю разные телефоны, что нарушает целостность БД. Причиной такой аномалии является то, что в данном отношении есть несколько ключей, и каждый атрибут является частью хотя бы одного ключа (в частности, <tex>\mathrm{CourseId}, \mathrm{Phone}</tex> &ndash ; это ключ), тогда как первые три НФ не накладывают никакие ограничения на ключевые атрибуты.
== Нормальная форма Бойса-Кодда ==
{{Определение
|definition=
Отношение находится в '''нормальной форме Бойса-Кодда''' (НФБК) тогда и только тогда, когда* оно находится в третьей нормальной форме* для любой нетривиальной функциональной зависимости <tex>X \rightarrow Y</tex>, <tex>X</tex> является надключом.
}}
Нормальная форма Бойса-Кодда исправляет аномалииСледует отметить, возникающие из-за перекрывающихся ключейчто определение НФБК не требует 3НФ. В частностиОднако можно доказать, если что любое отношение находится в 3НФ и в нем нет перекрывающихся ключей, оно НФБК автоматически находится в НФБК3НФ.
{{Утверждение|statement=Отношение в НФБК находится в 3НФ|proof=* выполнены все условия 1НФ (имеется ключ, а корректные ФЗ обеспечивают отсутствие повторяющихся и неатомарных атрибутов)* выполнено условие 2НФ (так как в левых частях ФЗ только надключи, нет атрибутов, зависящих от части ключа)* выполнено условие 3НФ (так как в левых частях ФЗ только надключи, нет атрибутов, зависящих от неключевых атрибутов)}} Нормальная форма Бойса-Кодда исправляет аномалии, возникающие из-за перекрывающихся ключей. В частности, если отношение находится в 3НФ и в нем нет перекрывающихся ключей, оно автоматически находится в НФБК. Поскольку, опираясь только на функциональные зависимости, нельзя потребовать более сильное условие, чем надключ в левой части каждой ФЗ, то нФБК НФБК &ndash; "&laquo;совершенная" &raquo; НФ с точки зрения только функциональных зависимостей.
=== Запрещенные конструкции ===
В НФБК запрещены функциональные зависимости от наборов атрибутов, не являющихся надключами. В качестве примера возьмем отношение, расмотренное в секции "&laquo;Аномалии" &raquo; третьей нормальной формы.
=== Приведение в НФБК ===
}}
'''Замечание.''' Несмотря на то, что любое отношение можно привести в НФБК, иногда при этом могут "&laquo;распадаться" &raquo; функциональные зависимости. Так, например, если рассмотреть отношение, в котором на каждой кафедре конкретный предмет читается только одним преподавателем, и никаким преподавателем не читается два разных предмета, можно обнаружить, что при проведении декомпозии, первая ФЗ (<tex>\mathrm{Dept}, \mathrm{Course} \rightarrow \mathrm{Lecturer}</tex>) распадается, так как части ключа оказываются в разных отношениях.
'''Замечание 2.''' Всегда можно привести отношение к 3НФ, сохранив все ФЗ, если производить декомпозиции в правильном порядке.
1632
правки

Навигация