Базы данных. Учебное пособие

       

Нормальная форма Бойса-Кодда (НФБК)


Реляционная  таблица  находится  в  нормальной  форме  Бойса-Кодда  (НФБК),  если  для  любой  ФЗ:  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,  каждая  из  которых  удовлетворяет  НФБК.


Содержание раздела