Ошибка нормализации базы данных

Я готовлюсь к экзамену и в своих текстах нашла пример, который не понимаю.

В отношении R(A,B,C,D,E,F) я получил следующие функциональные зависимости:

FD1 A,B -> C
FD2 C -> B
FD3 C,D -> E 
FD4 D -> F

Теперь я думаю, что все FD находятся в 3NF (ни один не находится в BCNF), но в тексте говорится, что FD1 и FD2 находятся во 2NF, а FD3 и FD4 - в 1NF. Где я делаю ошибки (или это текст неправильный).

Я обнаружил, что альтернативными ключами являются ABD и ACD.


person DDS    schedule 06.12.2017    source источник
comment
Вы имеете в виду CK (ключи-кандидаты), а не AK (альтернативные ключи) (не альтернативные).   -  person philipxy    schedule 07.12.2017


Ответы (1)


Терминология

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

Обычные формы

Можно показать, что схема отношения находится в НФБК, если каждый данный FD имеет в качестве определителя суперключ. Поскольку, как вы правильно заметили, единственными ключами-кандидатами здесь являются ABD и ACD, каждая зависимость нарушает эту нормальную форму. Итак, схемы нет в BCNF.

Чтобы быть в 3NF, схема отношения должна иметь все заданные функциональные зависимости, так что либо определитель является суперключом, либо каждый атрибут детерминанта является первичным атрибутом, то есть это атрибут некоторого ключа-кандидата. В вашем примере это верно для B и C, но не для E и F, поэтому FD3 и FD4 нарушают 3NF. Итак, схема не находится ни в 3NF.

2НФ, представляющая лишь исторический интерес и не особо полезная в теории нормализации, представляет собой нормальную форму, для которой схема отношения не имеет функциональных зависимостей, в которых непростые атрибуты зависят от части ключей. Это снова неверно для FD3 и FD4, так что отношение не во 2NF.

person Renzo    schedule 06.12.2017