Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория.docx
Скачиваний:
17
Добавлен:
20.05.2015
Размер:
74.81 Кб
Скачать

10.6 Нормальная форма Бойса–Кодда

В предыдущих двух разделах преобразование отношений во вторую и третью нормальную форму рассматривалось на примере отношений, имеющих единственный потенциальный (он же первичный) ключ. Для такого рода отношений преобразование в третью нормальную форму решает все приведенные выше нежелательные эффекты, связанные с ограничением функциональных зависимостей. На практике, однако, возможны более сложные случаи:

  • отношение может иметь два или более потенциальных ключа;

  • потенциальные ключи могут быть не простыми, а составными, то есть включать в себя несколько атрибутов;

  • наконец, составные потенциальные ключи могут перекрываться (иметь один или несколько общих атрибутов).

Оказывается, что в этих более сложных случаях преобразование отношений в третью нормальную форму не всегда обеспечивает решение нежелательных проблем, связанных с аномалиями операций обновления. Для их устранения была введена еще одна нормальная форма, получившая название нормальной формы Бойса – Кодда или сокращенно НФБК. (Хотя Дейт [1] отмечает, что определение этой нормальной формы впервые в 1971 г. было дано Хезом (Heath)).

Отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты каждой нетривиальной и неприводимой слева функциональной зависимости являются потенциальными ключами отношения.

Напомним, что детерминантом называется левая (определяющая) часть функциональной зависимости, а тривиальной мы называем функциональную зависимость, у которой правая (зависимая) часть является подмножеством ее левой части (детерминанта).

То есть на диаграммах функциональных зависимостей отношения, находящегося в нормальной форме Бойса – Кодда, стрелки, указывающие на эти зависимости, должны исходить только от потенциальных ключей.

Можно обратить внимание на то, что приведенное определение нормальной формы Бойса – Кодда не использует явных ссылок на первую, вторую и третью нормальные формы, а также на транзитивную функциональную зависимость, и с этой точки зрения оно концептуально проще. Однако на практике обычно более просто осуществлять нормализацию отношений путем последовательного их преобразования из первой нормальной формы во вторую, а затем в третью нормальную форму и, если необходимо, в нормальную форму Бойса – Кодда.

Рассмотрим теперь вопросы, связанные с нормальной формы Бойса – Кодда на примерах.

Пример 1.

Возвращаясь к отношению Экзамен на рис. 10.8, которое находится в первой и не находится во второй нормальной форме, можно убедиться, что отношение не находится в НФБК. Действительно, его детерминантами являются простой атрибут КОД_СТУДЕНТА и составной атрибут {КОД_СТУДЕНТА, Дисциплина}. Из этих двух детерминантов только {КОД_СТУДЕНТА, ДИСЦИПЛИНА} является потенциальным ключом отношения.

Пример 2.

Отношение студент_общежитие_АДРЕС на рис.10.12, которое находится во второй, но не находится в третьей нормальной форме, также не находится в НФБК, так как его детерминантами являются атрибут КОД_СТУДЕНТА и атрибут ОБЩЕЖИТИЕ, из которых только атрибут КОД_СТУДЕНТА является ключом отношения.

Пример 3.

Отношения СТУДЕНТЫ и УСПЕВАЕМОСТЬ, представленные на рис.10.9, и отношения СТУДЕНТ_ОБЩЕЖИТИЕ и ОБЩЕЖИТИЕ_АДРЕС на рис.10.14, которые, как мы знаем, находятся в третьей нормальной форме, также находятся и в НФБК. Действительно, их детерминанты, а именно составной атрибут {КОД_СТУДЕНТА, ДИСЦИПЛИНА} в отношении УСПЕВАЕМОСТЬ, атрибут КОД_СТУДЕНТА в отношениях СТУДЕНТЫ и СТУДЕНТ_ОБЩЕЖИТИЕ, атрибут ОБЩЕЖИТИЕ в ОБЩЕЖИТИЕ_АДРЕС, одновременно являются и ключами этих отношений.

Приведенные примеры иллюстрируют тот факт, что для отношений, в которых имеется лишь один потенциальный ключ, нахождение отношения в третьей нормальной форме эквивалентно его нахождению в нормальной форме Бойса – Кодда.

Теперь рассмотрим примеры отношений, в которых больше одного потенциального ключа, а затем и примеры отношений с перекрывающимися составными потенциальными ключами.

Пример 4.

Рассмотрим отношение, диаграмма функциональных зависимостей которого имеет вид, представленный на рис. 10.16.

Рис.10.16. Диаграммы функциональных зависимостей отношения с двумя потенциальными ключами

Как видно из этой диаграммы, это отношение, в отличие от рассматриваемых ранее, имеет два потенциальных ключа. Это – атрибуты КОД_СТУДЕНТА и ПАСПОРТ, от каждого из которых все остальные атрибуты зависят функционально. Это отношение находится во второй и третьей нормальных формах, так как в нем отсутствуют неприводимые слева функциональные зависимости неключевых атрибутов от потенциальных ключей и отсутствуют транзитивные зависимости.

Это отношение находится также и в нормальной форме Бойса – Кодда. Действительно, детерминанты этого отношения атрибуты КОД_СТУДЕНТА и ПАСПОРТ одновременно являются и его потенциальными ключами.

Приведенный пример иллюстрирует тот факт, что само по себе наличие в отношении нескольких потенциальных ключей не приводит к неэквивалентности третьей нормальной формы и нормальной формы Бойса – Кодда.

И, наконец, обратим внимание на следующий пример.

Пример 5.

ЭКЗАМЕН

КОД_СТУДЕНТА

ПАСПОРТ

ДИСЦИПЛИНА

ОЦЕНКА

С2 С2 С2 С2 С2 С6 С6 С6 С9 С1 С1 С8

12 34 123456 12 34 123456 12 34 123456 12 34 123456 12 34 123456 56 78 654321 56 78 654321 56 78 654321 34 43 987654 22 33 123123 22 33 123123 45 56 112233

Физика Математика История Информатика Иностр. язык Физика Математика Информатика Иностр. язык История Иностр. язык Археология

5 4 4 5 5 3 4 3 4 5 4 5

Рис.10.17. Отношение с двумя перекрывающимися потенциальными ключами

Пусть в этом отношении имеют место следующие функциональные зависимости, представленные на рис. 10.18.

Рис.10.18. Диаграмма функциональных зависимостей отношения

Как видно из этих зависимостей, отношение имеет два потенциальных ключа. Ими являются составные атрибуты {КОД_СТУДЕНТА, ДИСЦИПЛИНА} и {ПАСПОРТ, ДИСЦИПЛИНА}. Обращаем внимание на то, что ключи эти являются перекрывающимися, так как атрибут Дисциплина входит в состав обоих ключей.

Представленное отношение находится в третьей нормальной форме, так как его единственный неключевой атрибут Оценка зависит от обоих ключей неприводимо, и в отношении отсутствуют транзитивные функциональные зависимости.

Однако, это отношение не находится в НФБК. Действительно, в нем имеются детерминанты КОД_СТУДЕНТА и ПАСПОРТ, которые сами не являются потенциальными ключами, хотя и входят в их состав.

Обратившись к примеру таблицы на рис.10.17, представляющей это отношение, можно увидеть наличие в нем избыточной информации: многократно повторяющиеся одинаковые пары значений атрибутов КОД_СТУДЕНТА и ПАСПОРТ. Нетрудно понять, что эта избыточность приводит к возникновению типичных аномалий операций обновления данных:

  • невозможно ввести информацию о коде студента и его паспорте, если этот студент не сдавал ни одной дисциплины,

  • при удалении данных о сдаче экзамена по иностранному языку студентом с кодом С8 теряется информация о паспорте этого студента,

  • при необходимости изменения номера паспорта студента, например при его замене, эту операцию надо произвести во всех кортежах, относящихся к этому студенту.

Выходом из ситуации является декомпозиция рассматриваемого отношения на два отношения.

СТУДЕНТ_ПАСПОРТ

КОД_СТУДЕНТА

ПАСПОРТ

С2 С6 С9 С1 С8

12 34 123456 56 78 654321 34 43 987654 22 33 123123 45 56 112233

УСПЕВАЕМОСТЬ

КОД_СТУДЕНТА

ДИСЦИПЛИНА

ОЦЕНКА

С2 С2 С2 С2 С2 С6 С6 С6 С9 С1 С1 С8

Физика Математика История Информатика Иностр. язык Физика Математика Информатика Иностр. язык История Иностр. язык Археология

5 4 4 5 5 3 4 3 4 5 4 5

Рис.10.19. Вариант декомпозиции отношения, представленного на рис.10.17

Рис.10.20. Диаграммы функциональных зависимостей отношений на рис.10.19

Возможен и другой вариант декомпозиции, представленный на рис.10.21.

Рис.10.21. Другой вариант декомпозиции отношения на рис.10.17

Можно убедиться, что каждое из отношений, представленных на рис.10.19 – 10.21, уже находится в нормальной форме Бойса – Кодда, и в них отсутствуют аномалии операций обновления данных.

Пример 6.

Пусть дано отношение со следующим набором атрибутов

{КОД_СТУДЕНТА, Дисциплина, ОЦЕНКА, НОМЕР_БИЛЕТА}.

Кортежи этого отношения представляют информацию о том, что конкретный студент при сдаче конкретной дисциплины отвечает на вопросы определенного экзаменационного билета. При этом имеется ограничение, состоящее в том, что никакие два студента не могут отвечать на один и тот же билет по одной дисциплине. Это ограничение эквивалентно следующим функциональным зависимостям

{КОД_СТУДЕНТА, ДИСЦИПЛИНА} → {НОМЕР_БИЛЕТА},

{ДИСЦИПЛИНА, НОМЕР_БИЛЕТА} → {КОД_СТУДЕНТА},

{КОД_СТУДЕНТА, ДИСЦИПЛИНА} → {ОЦЕНКА},

{ДИСЦИПЛИНА, НОМЕР_БИЛЕТА} → {ОЦЕНКА}.

Видно, что отношение имеет два перекрывающихся составных потенциальных ключа. Этими ключами являются составные атрибуты {КОД_СТУДЕНТА, ДИСЦИПЛИНА} и {ДИСЦИПЛИНА, НОМЕР_БИЛЕТА}. При этом нетрудно убедиться, что представленное отношение находится в нормальной форме Бойса – Кодда, так как все его детерминанты являются потенциальными ключами.

Данный пример иллюстрирует тот факт, что само по себе наличие перекрывающихся составных потенциальных ключей не является признаком того, что отношение не находится в нормальной форме Бойса – Кодда.

NEXT THEME