将关系转换为 BCNF
Convert relation to BCNF
我得到关系 R = {C, SN, OD, CH, CL, I, S, Y, D, RM, NS}。
以下函数依赖关系成立:
{C} -> {OD, CH, CL}
{C, SN, S, Y} -> {D, RM, NS, I}
{RM, D, S, Y} -> {I, C, SN}
我需要将其转换为 BCNF。
我把它分成 2 个子关系 R1 = {C,OD,CH,CL} 和 R2={C,S,Y,D,RM,SN,I,NS}
现在我可以看到 R1 在 BCNF 中,但我不确定 R2。这来自 {C, SN, S, Y} -> {D, RM, NS, I} 的想法,所以看起来一些非键属性决定了键的一部分。但是非关键属性还需要 S,Y 是关键属性所以我不确定 BCNF 规则是否成立。
那么BCNF中的R2是吗?
假设你给出的函数依赖是R
所有函数依赖的覆盖,那么关系的候选键是{C, S, SN, Y}
和{D, RM, S, Y}
。这可以通过计算两个属性集的闭包来检查,其中包含 R
的所有属性,而从中删除任何属性获得的闭包不包含所有属性。
你的分解是BCNF,R2是BCNF。其实R2的一个依赖覆盖就是:
{D, RM, S, Y} -> {C, I, SN}
{C, S, SN, Y} -> {D, NS, RM}
我们可以看到,在它们中,行列式都是候选键。
我得到关系 R = {C, SN, OD, CH, CL, I, S, Y, D, RM, NS}。
以下函数依赖关系成立:
{C} -> {OD, CH, CL}
{C, SN, S, Y} -> {D, RM, NS, I}
{RM, D, S, Y} -> {I, C, SN}
我需要将其转换为 BCNF。
我把它分成 2 个子关系 R1 = {C,OD,CH,CL} 和 R2={C,S,Y,D,RM,SN,I,NS}
现在我可以看到 R1 在 BCNF 中,但我不确定 R2。这来自 {C, SN, S, Y} -> {D, RM, NS, I} 的想法,所以看起来一些非键属性决定了键的一部分。但是非关键属性还需要 S,Y 是关键属性所以我不确定 BCNF 规则是否成立。
那么BCNF中的R2是吗?
假设你给出的函数依赖是R
所有函数依赖的覆盖,那么关系的候选键是{C, S, SN, Y}
和{D, RM, S, Y}
。这可以通过计算两个属性集的闭包来检查,其中包含 R
的所有属性,而从中删除任何属性获得的闭包不包含所有属性。
你的分解是BCNF,R2是BCNF。其实R2的一个依赖覆盖就是:
{D, RM, S, Y} -> {C, I, SN}
{C, S, SN, Y} -> {D, NS, RM}
我们可以看到,在它们中,行列式都是候选键。