Определение. Отношение находится в 3НФ тогда и только тогда, когда оно находится в 2НФ, и каждый его не ключевой атрибут не транзитивно зависит от ключа

Отношение находится в 3НФ тогда и только тогда, когда оно находится в 2НФ, и каждый его не ключевой атрибут не транзитивно зависит от ключа.

Так как в отношении ПОСТАВЩИК есть транзитивная зависимость S#  Code, используя правило декомпозиции с сохранением функциональных зависимостей, разобьем его на следующие два: ПОСТАВЩИК (S#, SName, City) и ГОРОД (City, Code). В первом отношении первичный ключ S# сохраняется, а во втором отношении первичным ключом является атрибут City.

Примечание: если при проектировании базы данных используется IDEF1x, тогда на этапе построения полно атрибутной концептуальной схемы для каждой сущности определяются не ключевые атрибуты. При этом:

. устанавливаются владельцы каждого атрибута (т.е. фактически определяются функциональные зависимости между атрибутами);

. применяется правило отсутствия повторений.

Например, для сущности ПОСТАВЩИК владельцем атрибута City (место размещения поставщика) является поставщик, а владельцем атрибута Code (код города) является атрибут City. В этом случае выделяется новая сущность – в данном примере, ГОРОД (Рис. 6.4):

Рис. 6.4. Выделение транзитивных зависимостей

Второй пример. Если значение некоторого «неудобного» атрибута встречается часто, вместо этого атрибута лучше выделить отдельную сущность, экземпляры которой представляют собой некоторые справочные данные. Так, если определяется сущность СОТРУДНИК с атрибутом Должность, значениями которого являются длинные строки, например, «Инженер первого разряда» или «Инженер высшей категории», тогда имеет смысл выделить справочную сущность ДОЛЖНОСТЬ (Рис. 6.5):

Рис. 6.5. Выделение справочных сущностей

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

В рассмотренных выше примерах в отношениях был определен только один ключ. Однако в конкретной предметной области может иметь место следующая ситуация:

• отношение имеет несколько потенциальных ключей,

• потенциальные ключи являются составными,

• потенциальные ключи имеют общие атрибуты.

Такие ситуации на практике встречаются не очень часто, поэтому НФБК была определена позднее первых трех.

Рассмотрим следующий пример.

Пусть определено отношение ОБУЧЕНИЕ с атрибутами S (студент), P (предмет) и T (преподаватель). Для этого отношения в предметной области определены следующие условия (функциональные зависимости):

• Каждый студент изучает некоторый предмет под руководством только одного преподавателя:

(S, P)  T

• Каждый преподаватель проводит занятия только по одному предмету: T  P

Пример реализации такого отношения:

S P T
Иванов Математика Петров
Иванов Физика Михайлов
Сидоров Математика Ильин
Сидоров Физика Михайлов
Сергеев Химия Дымов

Данное отношение имеет составной ключ (S, P). Докажем это:

а) из функциональных зависимостей (S, P)  T (условие 1) и (S, P)  (S, P) (правило рефлексивности) следует (S, P)  (S, P, T) (правило аддитивности);

б) не выводятся зависимости S  (S, P, T) или P  (S, P, T).

Следовательно, функциональная зависимость (S, P)  (S, P, T) является функционально полной.

Покажем, что данное отношение имеет еще один составной ключ (S, T):

а) из функциональных зависимостей T  P (условие 2) и (P, S)  (P, S, T) (или (S, P)  (S, P, T), доказано выше) по правилу транзитивности следует (T, S)  (P, S, T), или (S, T)  (S, P, T);

б) так же не выводятся зависимости T  (S, P, T) или S  (S, P, T).

Легко убедиться в том, что данное отношение находится в 3НФ.

Тем не менее, данное отношение не свободно от некоторых аномалий. Так, например, если удалить информацию о том, что студент Сергеев изучает химию, мы теряем информацию о преподавателе Дымове. Чтобы исключить такие аномалии, и была предложена НФБК.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: