Разложение BCNF

Я пытаюсь выяснить правильные шаги при выполнении разложения BCNF. Я нашел этот пример, но я не понимаю, как выполнить правильные шаги.

Схема = (A, B, C, D, E, F, G, H) FD + {A → CGH, AD- > C, DE- > F, G- > G}

Может ли кто-нибудь показать правильные шаги?

Ответ 1

Определите минимальную обложку, используя ваши FD:

{A -> C, A -> G, A -> H, 
 B -> nothing, 
 C -> nothing,
 D -> nothing,
 E -> nothing,
 F -> nothing
 G -> nothing
 H -> nothing
 DE -> F}

Примечание AD -> C выпадает из-за того, что только A определяет C, что означает, что D является избыточным в FD (см. Аксиомы Армстронга - Увеличение).

Определения 3NF и BCNF относятся к зависимостям от компромиссных ключей. Единственный составной ключ у вас есть DE. Ни D, ни E не участвуют ни в каких других ненулевых FD поэтому устранение транзитивных зависимостей и обеспечение того, чтобы зависимые атрибуты полагались на 'ключ, весь ключ, и ничего, кроме ключа', здесь не проблема.

Перейдем к отношениям, так что левая сторона FD - это ключ и правые стороны являются неядерными зависимыми атрибутами этого ключа:

[Key(A), C, G, H]
[Key(D, E), F]

Теперь исключите эти атрибуты из обложки, все, что осталось, - это автономные отношения.

[Key(B)]

Это должно быть в 3NF/BCNF