Понимание функциональной зависимости BCNF

Я следовал этому руководству по декомпозиции BCNF. Даны функциональные зависимости:

A->BCD
BC->AD
D->B

Теперь они связаны с отношением R (A, B, C, D). Условия для BCNF включают:

Отношение должно быть в 3НФ, а когда X->Y, X должен быть суперключом.

Данное отношение не имеет транзитивного FD, но D->B является частичным FD (или) три FD представляют 3 отдельных отношения?

Если они представляют 3 отдельных отношения, то почему D не является ключом, и если все они находятся в одном и том же отношении, то D->B является частичной функциональной зависимостью.

Я совершенно сбит с толку. Пожалуйста, помогите мне пройти через это.


person Java Enthusiast    schedule 24.06.2015    source источник
comment
Частичный FD связан с атрибутами non-prime. Неосновной атрибут — это атрибут, который не является частью какого-либо ключа-кандидата. В R(A,B,C,D) каждый атрибут является частью одного или нескольких ключей-кандидатов. Так что частичных ФД нет.   -  person Mike Sherrill 'Cat Recall'    schedule 25.06.2015
comment
2NF не является частичным FD атрибута, отличного от CK, в CK. Также BCNF не является нетривиальным FD на несуперключе. Таким образом, ваше предполагаемое определение BCNF неверно, потому что в нем не упоминаются нетривиальные FD, и оно избыточно, потому что в нем излишне упоминается 3NF. Забудьте о веб-сайтах, десятки академических учебников доступны в Интернете бесплатно (хотя некоторые из них также некачественные).   -  person philipxy    schedule 12.03.2018


Ответы (1)


Если мы запишем заданный набор FD с одноэлементной правой частью, мы получим -

A->B
A->C
A->D
BC->A
BC->D
D->B

Мы видим сразу 2 транзитивные зависимости. У нас есть A->D и D->B, поэтому нам не нужно A->B, а также у нас есть BC->A и A->D, поэтому нам не нужно BC->D. Итак, теперь у нас есть -

A->C
A->D
BC->A
D->B

or

A->CD
BC->A
D->B

Здесь используются клавиши A, BC и CD. Поскольку каждый атрибут отношения R присутствует в каждом из ключей хотя бы один раз, все атрибуты в вашем отношении R являются первичными атрибутами.

Обратите внимание: если отношение имеет все простые атрибуты, оно уже находится в 3NF.

Следовательно, данное отношение R находится в 3НФ. Надеюсь, вы поняли, почему здесь вы совершенно не правы - "Данное отношение хотя и не имеет транзитивного ФЗ, но D->B является частичным ФЗ". Я только что доказал, что отношение находится в 3НФ, что является более высокой нормальной формой, чем 2НФ, и, следовательно, в свою очередь доказывает, что отношение находится в 2НФ и, следовательно, отсутствует частичная зависимость.

Чтобы быть в BCNF, для каждой функциональной зависимости X->Y X должен быть ключом. Мы видим, что последняя функциональная зависимость D->B нарушает ее, так как D не является ключом. Поэтому для преобразования в BCNF мы можем разбить нашу связь R на R1 и R2 как -

R1(А,С,D)

R2(B,D)

person Karup    schedule 24.06.2015
comment
Как CD становится ключом? FD это D->B верно? - person Java Enthusiast; 24.06.2015
comment
CD является ключом, поскольку CD-замыкание включает в себя все атрибуты R. D-›B, а затем CB-›A. - person Karup; 24.06.2015
comment
Не в состоянии следовать за вами полностью. Не могли бы вы уточнить - person Java Enthusiast; 24.06.2015
comment
CD — это ключ, потому что D в CD дает B (от D-›B). Тогда C в CD вместе с этим B даст A (BC-›A). Таким образом, CD-замыкание = {A, B, C, D}. Это достаточно подробно? :) - person Karup; 24.06.2015