Нормальная форма Бойса-Кодда с круговыми функциональными зависимостями

Например, в дизайне реляционной базы данных есть схема S (банкир, bname, клиент) и функциональные зависимости (FD).

банкир->bname клиент,bname->банкир

Находится ли схема S в BCNF? Или это должно быть: (banker, bname) и (customer, banker)


person Alfred Zhong    schedule 05.11.2012    source источник
comment
FD, banker-›bname (клиент,bname)-›banker ?   -  person Walter Mitty    schedule 06.11.2012


Ответы (2)


Я не думаю, что «S» находится в BCNF. Вот неофициальное определение BCNF, данное Крисом Дейтом.

Релвар находится в НФБК тогда и только тогда, когда единственными детерминантами являются ключи-кандидаты. (Введение в системы баз данных, 7-е изд., стр. 367)

Термин детерминант означает левую часть функциональной зависимости. Если существует функциональная зависимость, левая часть которой не является ключом-кандидатом, то отношение не находится в НФБК.

Давайте перепишем ваш пример в традиционных обозначениях.

R{ABC}
A->B
BC->A

Есть два ключа-кандидата: AC и BC. Левая часть A->B не является ключом-кандидатом. Так что R не находится в BCNF.

Или это должно быть: (banker, bname) и (customer, banker)

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

person Mike Sherrill 'Cat Recall'    schedule 06.11.2012

Я думаю, что должно быть (banker, bname) и (customer, banker). Для меня это больше похоже на отношение внешнего ключа.

person duffymo    schedule 05.11.2012
comment
Я тоже так думаю, поэтому BCNF может разбить 1 FD на большее количество таблиц, но не более 1FD в 1 таблице, верно? - person Alfred Zhong; 06.11.2012
comment
Да, FD действительно могут стать невыразимыми вследствие расщепления схем отношений. Это явление называется сохранением зависимости. При проектировании логической базы данных FD необходимо восстановить (заменить) логическим ограничением базы данных. - person Erwin Smout; 07.11.2012