Database BCNF分解,何时停止分解?

Database BCNF分解,何时停止分解?,database,database-schema,bcnf,Database,Database Schema,Bcnf,我很难理解BCNF分解 {A, B, C} - {B, C} = {A} 如果我有: R=(A,B,C) FDs: AB -> C, C -> B 通过计算闭包,我得出结论,最小密钥是{AB}和{AC} Therefore, AB --> C is NOT in BCNF violation because AB is a key C --> B IS in violation because C is not a key. I decompose

我很难理解BCNF分解

{A, B, C} - {B, C} = {A} 
如果我有:

R=(A,B,C)

FDs: AB -> C, C -> B
通过计算闭包,我得出结论,最小密钥是{AB}和{AC}

Therefore, 
   AB --> C is NOT in BCNF violation because AB is a key
   C --> B IS in violation because C is not a key.

I decompose C --> B like this

R1 = Closure of C = (C,B)
R2 = (A,C)
我不知道如何从这里开始。如果需要进一步分解,我需要做什么?如果我要在这里结束,你怎么知道什么时候停止腐烂

通过计算闭包,我得出结论,最小密钥是{AB}和{AC}

Therefore, 
   AB --> C is NOT in BCNF violation because AB is a key
   C --> B IS in violation because C is not a key.

I decompose C --> B like this

R1 = Closure of C = (C,B)
R2 = (A,C)
R的候选键是{AB}和{AC}

Therefore, 
   AB --> C is NOT in BCNF violation because AB is a key
   C --> B IS in violation because C is not a key.

I decompose C --> B like this

R1 = Closure of C = (C,B)
R2 = (A,C)
将R分解为这两个关系,并确定每个关系中的所有候选键

  • R1{AB->C}
  • R2{C->B}
R1的唯一候选密钥是{AB}


R2的唯一候选密钥是{C}。属性{C}不是R中的键,但它是R2中的键。

R1和R2是停止时的键。分解后,您将识别新关系中的键和函数依赖项。R1中的键是C(FB:C->B,没有BCNF冲突),R2中的键是AC(也没有BCNF冲突)。

AB->C
C->B
编写闭包:

{A,B}+ = {A, B, C} 
{C}+= {C, B}
A+B是一个超级键,因此它不违反
BCNF
。因此,我们使用违反的FD
(C->B)
来进行分解

{A, B, C} - {B, C} = {A} 
然后将
C->B
的左侧添加到
{A}
,并将
{A,C}
{B,C}
因此,我们将
R(A,B,C)
分解为
R(B,C)
R(A,C)