Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по БД.doc
Скачиваний:
95
Добавлен:
01.05.2014
Размер:
413.18 Кб
Скачать

Различие между 3нф и нфбк.

Определение 3НФ не охватывает отношения со следующими условиями:

  1. Отношение имеет два или более потенциальных ключа.

  2. Оба ключа являются сложными.

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

Для отношений, не удовлетворяющих хотя бы одному из этих условий, 3НФ и НФБК эквивалентны. В частности, для отношения с простыми ключами разница между 3НФ и НФБК отсутствует. Только в случае, если отношение имеет несколько возможных ключей и хотя бы два из них являются сложными, имеет смысл проверить нет ли в их составе одинаковых атрибутов. Рассмотрим пример. Пусть имеем отношение R со схемой:

R (Код Поставщика, Имя, Код Товара, Количество).

Допустим, что имена поставщиков уникальны, тогда потенциальными ключами этого отношения являются <Код Поставщика, Код Товара> и <Имя, Код Товара>. Между атрибутами этого отношения существуют следующие ФЗ:

Код Поставщика Имя

Имя Код Поставщика

Код Поставщика, Код Товара Количество

Имя, Код Товара, Количество.

Отношение не находится в НФБК, поскольку содержит детерминанты Код Поставщика и Имя, определяющие друг друга, но не являющиеся ключами отношения. Отношение, вместе с тем, находится в 3НФ, так как каждый неключевой атрибут, а именно атрибут Количество, функционально полно зависит от ключа, что соответствует определению 2НФ, и в отношении нет транзитивной зависимости неключевого атрибута от ключа. Таким образом, определение 3НФ не распространяется на атрибуты, которые являются частью возможного ключа. Отношение R содержит некоторую избыточность, которая приводит к аномалиям обновления. Если, предположим, один и тот же поставщик с кодом К1 по имени Иван Иванов поставляет товары с кодами Т1, Т2, Т3, Т4, то при изменении кода поставщика придется внести изменения в 4 строки. Чтобы избежать этой проблемы, отношение разбивают на два: R1 (Код Поставщика, Имя) и R2 (Код Поставщика, Код Товара, Количество), Между этими отношениями должна быть установлена связь 1:n по атрибуту Код Поставщика. При установке ссылочной целостности следует использовать вариант каскадного обновления значения поля связи, тогда, заменив значение кода поставщика в одной строке отношения R1, получим такое же изменение в соответствующих строках отношения R2. Можно выбрать и альтернативное разбиение отношения R на R1 (Код Поставщика, Имя) и R2 (Имя, Код Товара, Количество). Связь 1:n между отношениями R1 и R2 устанавливается по полю Имя. В этом случае при изменении значения кода поставщика требуется изменить лишь одну строку отношения R1.

Не всегда декомпозиция отношения, находящегося в 3НФ и не находящегося в НФБК, приводит к устранению аномалий обновления данных. Рассмотрим пример. Пусть имеем отношение Обучение (Студент, Предмет, Преподаватель) со следующими ограничениями:

  • Каждый студент, изучающий данный предмет, обучается только одним преподавателем (Студент, Предмет Преподаватель).

  • Каждый преподаватель ведет только один предмет, но каждый предмет может преподаваться несколькими преподавателями (Преподаватель Предмет).

Ключом отношения Обучение является совокупность атрибутов <Студент, Предмет>. Отношение находится в 3НФ, так как неключевой атрибут Преподаватель зависит от ключа, а на атрибут Предмет, являющийся частью ключа и транзитивно зависящий от него, определение 3НФ не распространяется. От этой зависимости, однако, надо избавиться, поскольку ее наличие не гарантирует отсутствия аномалий. Отношение не находится в НФБК, так как атрибут Преподаватель, являясь детерминантом, не является ключом отношения. Выполним проекцию отношения на ФЗ Преподаватель Предмет. Получим отношение R1 (Студент, Преподаватель) и R2 (Преподаватель, Предмет). ФЗ между атрибутами Студент и Преподаватель отсутствует, между атрибутами Преподаватель и Предмет она есть. В результате декомпозиции отношения мы потеряли ФЗ Студент, Предмет Преподаватель. Избавившись от одной проблемы, мы получили другую. Проекции R1 и R2 не являются независимыми, ФЗ Студент, Предмет Преподаватель не может быть получена из единственной ФЗ Преподаватель Предмет, присутствующей в полученных двух отношениях. Таким образом, отношения R1 и R2 не могут быть обновлены независимо друг от друга. Например, пусть имеем отношение Обучение со следующими данными:

Таблица 2.2. Отношение Обучение.

Студент

Предмет

Преподаватель

Иванов

математика

Белый

Иванов

физика

Черный

Петров

математика

Зеленый

Петров

физика

Красный

Разбив его на два, получим отношения R1 и R2.

Таблица 2.3. Отношение R1

Студент

Преподаватель

Иванов

Белый

Иванов

Черный

Петров

Зеленый

Петров

Красный

Таблица 2.4. Отношение R2

Преподаватель

Предмет

Белый

математика

Черный

физика

Зеленый

математика

Красный

физика

Попытка вставить в R1 строку Иванов Красный должна быть отвергнута, так как Красный преподает физику, а Иванов уже обучается физике у Черного, но обнаружить этот факт без проверки содержимого отношения R2 нельзя. Это пример ситуации, когда декомпозиция отношения на отношения, находящиеся в НФБК, и декомпозиция на независимые компоненты входят в противоречие. Удовлетворить одновременно обеим целям удается не всегда.

Соседние файлы в предмете Базы данных