Подтвердить что ты не робот

Разложение отношения к BCNF

У меня возникают проблемы с установкой, когда отношение находится в нормальной форме Boyce-Codd и как разложить его info BCNF, если это не так. В этом примере:

R (A, C, B, D, E) с функциональными зависимостями: A → B, C → D

Как мне его разложить?

Я сделал следующие шаги:

A+ = AB  
C+ = CD  
R1 = A+ = **AB**  
R2 = ACDE (since elements of C+ still exist, continue decomposing)  
R3 = C+ = **CD**  

R4 = ACE (в этом отношении не существует замыканий FD)

Итак, теперь я знаю, что ACE будет составлять все отношение, но ответ для разложения: AB, CD, ACE.

Я полагаю, я борюсь с тем, как правильно разложить отношение в форме BCNF и как сказать, когда вы закончите. Был бы действительно оценен любой, кто может пройти меня через их мыслительный процесс при решении этих проблем. Спасибо!

4b9b3361

Ответ 1

Хотя вопрос старый, другие вопросы/ответы, похоже, не дают очень четкого поэтапного общего ответа на определение и разложение отношений с BCNF.

1. Определение BCNF:
Для того чтобы отношение R находилось в BCNF, все функциональные зависимости (FD), которые содержатся в R, должны удовлетворять свойству, что детерминанты X являются суперклюками R. т.е. Если X- > Y имеет место в R, то X должен быть суперключем R находится в BCNF.

В вашем случае можно показать, что единственным ключом-кандидатом (минимальный суперкласс) является ACE. Таким образом, оба FD: A- > B и C- > D нарушают BCNF, так как и A, и C не являются суперклассами или R.

2. Разложить R в форме BCNF:
Если R не находится в BCNF, мы разлагаем R на множество отношений S, которые находятся в BCNF.
Это может быть выполнено с помощью очень простого алгоритма:

Initialize S = {R}
While S has a relation R' that is not in BCNF do:   
   Pick a FD: X->Y that holds in R' and violates BCNF
   Add the relation XY to S
   Update R' = R'-Y
Return S

В вашем случае итерационные шаги следующие:

S = {ABCDE}       // Intialization S = {R}
S = {ACDE, AB}    // Pick FD: A->B which violates BCNF
S = {ACE, AB, CD} // Pick FD: C->D which violates BCNF
// Return S as all relations are in BCNF

Таким образом, R (A, B, C, D, E) разбивается на множество отношений: R1 (A, C, E), R2 (A, B) и R3 (C, D), которые удовлетворяют BCNF.

Заметим также, что в этом случае функциональная зависимость сохраняется, но нормализация BCNF не гарантирует этого.

Надеюсь, это поможет.

Ответ 2

1NF → 2NF → 3NF → BCNF

В соответствии с данным FD набор "ACE" формирует ключ. Ясно, что R (A, B, C, D, E) не находится в 2NF. Разложение 2NF дает R1 (A, B), R2 (C, D) и R3 (A, C, E). это разложение разложенных отношений находится в 3NF, а также в BCNF.