Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
dbbook(2010.04.15).pdf
Скачиваний:
51
Добавлен:
09.06.2015
Размер:
2.14 Mб
Скачать

foreign key(атрибуты) references {не ключ} ! {ключевые атрибуты}

4.2.4. Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)

Усиленной третьей нормальной формой является форма Бойса-Кодда. В ней требование о навязывании функциональных зависимостей объявлениями (первичного и кандидатных) ключей распространяется и на ключевые атрибуты. Таким образом, в форме Бойса-Кодда ненавязанных ограничений функциональных зависимостей нет:

ОтношениеNFBC(ключевые атрибуты, неключевые атрибуты) primary key(ключ)

candidate key(ключ)

foreign key(атрибуты) references

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

Всегда ли можно отношение, находящееся в третьей нормальной форме с ненавязанными ограничениями {не ключ} ! {ключевые атрибуты}, привести к форме Бойса-Кодда?

Рассмотрим пример отношения R с атрибутами X, Y, Z, находящего в третьей нормальной форме, но не находящегося в форме Бойса-Кодда:

Вариант 1 схемы БД

R(X, Y, Z) primary key(X, Y) {Z} ! {Y}

Если, как обычно, провести декомпозицию так, чтобы ненавязанная функциональная зависимость {Z} ! {Y} была навязана объявлением ключа Z в выделяемом отношении R1(Z, Y), то получим

R1(Z, Y) primary key(Z)

R2(X, Z)

foreign key(Z) references R1(Z)

Но что объявить ключом в отношении R2? Построим табличный пример для исходного отношения R (табл. 4.3). Пример показывает, что в отношении R2(X, Z) R[X, Z] ни X, ни Z не могут быть ключами. Следовательно, ключом будет их пара.

Вариант 2 схемы БД

R1(Z, Y) primary key(Z)

R2(X, Z)

primary key(X, Z)

foreign key(Z) references R1(Z)

Таблица 4.3.: Пример допустимого состояния отношения R

R

 

 

X

Y

Z

0

0

10

0

1

20

1

0

10

1

1

20

 

 

 

R1(Z, Y) ./ R2(X, Z)

{X, Y} ! {Z}

Декомпозиция исходного отношения R связана с разрушением его первичного ключа, который навязывал функциональную зависимость {X, Y} ! {Z}. Поэтому в варианте 2 ее следует добавить в качестве ограничения. Но это ограничение выражено в терминах атрибутов обоих отношений, что означает невозможность их независимой модификации. Данный пример ограничения является примером ограничения функциональной зависимости на уровне базы данных, так как здесь ограничение накладывается на два (но в общем случае может накладываться и на более чем два) отношения базы данных. Все ранее рассмотренные примеры функциональных зависимостей относились к одному отношению, то есть формулировались на уровне отношения.

Как в варианте 1, так и в варианте 2 для контроля ограничения функциональной зависимости необходимо прибегать к использованию триггеров. Но в варианте 1 (отношение находится в 3NF)

триггер будет оперировать кортежами одного отношения, тогда как в варианте 2 (отношения находятся в NFBC, но они не являются независимыми) – двумя. Первый вариант проще.

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

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

Из определений нормальных форм следует их вложенность, иллюстрируемая диаграммой (табл. 4.4). По отношению к третьей нормальной форме вторая форма является ослабленной, а форма БойсаКодда – усиленной.

Таблица 4.4.: Диаграмма вложенности нормальных форм

1NF

2NF

3NF

NFBC

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]