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

3.4. Третья нормальная форма

Реляционная таблица удовлетворяет третьей нормальной форме 3НФ,если она находится в 2НФ и в ней нет транзитивных зависимостей.Транзитивная зависимость возникает, если неключевой атрибут функционально зависит от одного или более неключевых атрибутов.

В данном примере мы привели таблицу 3.6, содержащую цепочку транзитивных зависимостей, к паре таблиц 3.7 и 3.8, находящихся в 3НФ. Для таблицы 3.6. действительны следующие ограничения предметной области:

  1. каждый работник имеет только одного менеджера;

  2. один менджер может руководить несколькими рабочими.

Таблица 3.6

работника

Фамилия работника

менеджера

Фамилия менеджера

1235

Иванов

1311

Сергеев

1412

Петров

1311

Сергеев

1311

Сидоров

1312

Попов

Таблица 3.7

работника

Фамилия

менеджера

1235

Иванов

1311

1412

Петров

1311

1311

Сидоров

1312

Таблица 3.8

менеджера

Фамилия

менеджера

1311

Сергеев

1312

Попов

3.5. Нормальная форма Бойса-Кодда (нфбк)

Реляционная таблица находится в нормальной форме Бойса-Кодда (НФБК),если для любой ФЗ: XY, X ( то есть детерминанта) является возможным ключом отношения. Из определения следует, что любая таблица, удовлетворяющая НФБК, также удовлетворяет и 2НФ, однако обратное неверно.

Рассмотрим таблицу 3.9 «Оплата за работу». № Работникаявляется ключом, следовательно, в таблице имеются функциональные зависимости:

ФЗ: № Работника Разряд;

ФЗ: № РаботникаОплата.

Однако также имеется функциональная зависимость

ФЗ: Разряд Оплата.

Атрибут «разряд» является детерминантой, так как он однозначно определяет атрибут «оплата», но «разряд» не может быть ключом отношения, поэтому в таком виде отношение «Оплата за работу» не удовлетворяет НБКФ. Но таблица 3.9 удовлетворяет 2НФ (так как неключевые атрибуты «разряд» и «оплата»). Таким образом, таблица может быть в 2НФ, но не в НФБК.

Таблица 3.9. «Работник»

работника

Разряд

Премиальные

1235

1

150

1412

2

120

1311

1

150

Чем плохи таблицы, не удовлетворяющие НФБК? Вызванные ими проблемы схожи с перечисленными для таблиц, нарушающих 2НФ:

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

2. Если размер премиальных для типа специальности изменяется, то требуется обновить каждую строку. Если строка удаляется, то мы можем потерять информацию о размере премиальных для данной специальности. Таким образом, таблица подвержена аномалиям обновления и удаления.

3. Если в какой-то момент времени отсутствуют работники данной специальности, то может не оказаться строки, в которой можно хранить размер премиальных. Это аномалия ввода.

Для того чтобы решить эти проблемы, таблицу необходимо разбить на несколько таблиц для устранения аномалий и поддержания целостности данных.

Создадим новую таблицу 3.10 «Работник 1», удалив из таблицы 3.9 все атрибуты, стоящие в правой части ФЗ, нарушающие критерий НФБК. В нашем примере это Премиальные. Создадим новую таблицу 3.11 «Работник 2», состоящую из атрибутов, как из левой, так и из правой части ФЗ, нарушающей критерий НФБК. В нашем примере этоСпециальностьиПремиальные. Детерминант ФЗСпециальностьбудет ключом.

Таблица 3.10. «Работник 1»

работника

Специальность

1235

Электрик

1412

Штукатур

1311

Электрик

Таблица 3.11. «Работник 2»

Специальность

Премиальные

Электрик

150

Штукатур

120

Электрик

150

Мы разбили таблицу 3.9 «Работник» на таблицы 3.10 и 3.11, каждая из которых удовлетворяет НФБК.

Соседние файлы в папке Базы данных1