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

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