Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_5.doc
Скачиваний:
32
Добавлен:
27.04.2015
Размер:
456.19 Кб
Скачать

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

Рассмотрим следующий пример схемы отношения:

ПОСТАВКИ (КОД_ПОСТАВЩИКА, ИМЯ_ПОСТАВЩИКА, КОД_ТОВАРА, КОЛИЧЕСТВО)

Возможные ключи (обратите внимание, что на этой стадии нормализации во внимание принимаются существование возможных ключей):

КОД_ПОСТАВЩИКА, КОД_ТОВАРА

ИМЯ_ПОСТАВЩИКА, КОД_ТОВАРА

Функциональные зависимости:

КОД_ПОСТАВЩИКА, КОД_ТОВАРА -> КОЛИЧЕСТВО

ИМЯ_ПОСТАВЩИКА, КОД_ТОВАРА -> КОЛИЧЕСТВО

КОД_ПОСТАВЩИКА -> ИМЯ_ПОСТАВЩИКА

ИМЯ_ПОСТАВЩИКА -> КОД_ПОСТАВЩИКА

Предполагаем, что имя поставщика уникально.

Независимо от того, какой из возможных ключей выбран в качестве первичного ключа, эта схема находится в 3NF. Однако тот факт, что имеются функциональные зависимости атрибутов отношения от атрибута, являющегося частью первичного ключа, приводит к аномалиям. Например, для того, чтобы изменить имя поставщика с данным кодом согласованным образом, потребуется модифицировать все кортежи, включающие его код.

Определение 10: Детерминант. Детерминантом называется любой атрибут, от которого функционально полно зависит некоторый другой атрибут.

Определение 11: Нормальная форма Бойса-Кодда. Отношение R находится в нормальной форме Бойса-Кодда (BCNF) в том и только в том случае, если каждый детерминант является возможным ключом.

Легко заметить, что если в отношении имеется только один возможный ключ (являющийся первичным ключом), то это определение становится эквивалентным определению третьей нормальной формы.

Очевидно, что это требование не выполнено для отношения ПОСТАВКИ. Можно произвести его декомпозицию к отношениям ПОСТАВЩИКИ и ПОСТАВКИ1:

ПОСТАВЩИКИ (КОД_ПОСТАВЩИКА, ИМЯ_ПОСТАВЩИКА)

Возможные ключи:

КОД_ПОСТАВЩИКА

ИМЯ_ПОСТАВЩИКА

Функциональные зависимости:

КОД_ПОСТАВЩИКА -> ИМЯ_ПОСТАВЩИКА

ИМЯ_ПОСТАВЩИКА -> КОД_ПОСТАВЩИКА

и

ПОСТАВКИ1 (КОД_ПОСТАВЩИКА, КОД_ТОВАРА, КОЛИЧЕСТВО)

Возможный ключ:

КОД_ПОСТАВЩИКА, КОД_ТОВАРА

Функциональные зависимости:

КОД_ПОСТАВЩИКА, КОД_ТОВАРА -> КОЛИЧЕСТВО

Возможна альтернативная декомпозиция, если выбрать за основу ИМЯ_ПОСТАВЩИКА. В обоих случаях получаемые отношения находятся в BCNF, и им не свойственны отмеченные аномалии.

Четвертая нормальная форма

Рассмотрим пример следующей схемы отношения:

ЛЕКЦИИ (КУРС, ЛЕКТОР, УЧЕБНИК)

Отношение ЛЕКЦИИ содержит названия учебных курсов, фамилии читающих их лекторов и используемые при этом учебники. По каждому курсу может быть несколько лекторов и лектор может использовать несколько учебников.

Единственным возможным ключом отношения является составной атрибут КУРС, ЛЕКТОР, УЧЕБНИК, и нет никаких других детерминантов. Следовательно, отношение ЛЕКЦИИ находится в BCNF. Но при этом оно обладает недостатками: если, например, появляется новый лектор по некоторому курсу или новый учебник, необходимо добавить в отношение несколько кортежей. Это обусловлено наличием в схеме отношения многозначных зависимостей.

Определение 12: Многозначная зависимость. В отношении R (A, B, C) существует многозначная зависимость (multi-valued dependence - MVD) R.A ->-> R.B в том и только в том случае, если множество значений B, соответствующее паре значений A и C, зависит только от A и не зависит от С.

В отношении ЛЕКЦИИ существуют следующие две многозначные зависимости:

КУРС ->-> ЛЕКТОР

КУРС ->-> УЧЕБНИК

В общем случае в отношении R (A, B, C) существует многозначная зависимость R.A ->-> R.B в том и только в том случае, когда существует многозначная зависимость R.A ->-> R.C. Поэтому далее мы употребляем обозначение A ->-> B | C в том смысле, что одновременно существуют MVD A ->-> B и A ->-> C.

Дальнейшая нормализация отношений, подобных отношению ЛЕКЦИИ, основывается на следующей теореме:

Соседние файлы в папке Uchpos