我在大学有个作业,是关于分解的。这是他们的关系和FDs。
V={ABCDEF},F={AB→CD,ABDE→F,BC→A,C→DF}
我们需要找到候选键,规范覆盖(基)和分解在3NF与依赖保存和无损连接。
-I发现我们的候选密钥是:{ABE,BCE}
-Basis= {AB→C,BC→A,C→DF}
-But,我对3NF中的分解不太确定,真的很困惑。这是我的解决办法:
最小基R0= {AB→C,BC→A,C→DF}步骤1:生成R1= (ABC) R2=(BCA) R3= (C)步骤2:如果Ri中没有一个关系模式包含R0的候选键,则创建新的关系模式Rj包含属性,形成R0键
候选人Keys={ABE,BCE} R4= (ABE) R5= (BCE)
步骤4:消除其他(R1和R2)结果中包含的关系模式: Z= {R1、R3、R4、R5)
R4和R5的关系有意义吗?3NF的精确分解是什么?
发布于 2018-06-16 11:37:08
问题在于第2步的应用:
如果Ri中没有一个关系模式包含R0的候选键,则创建新的关系模式Rj包含属性,形成R0键
这意味着您必须添加一个新的关系(但只有一个!)包含一个原始候选键(任意一个!)。
因此,3NF的正确分解是{R1, R3, R4}或{R1, R3, R5}。您可以选择这两个中的一个作为问题的结果(这意味着是的,合成算法可以产生不同的分解)。
最后,我们可以注意到,这个步骤用于保证无损连接属性(而依赖保存由前面的步骤来保证,因为所有的分解都考虑到了)。事实上,存在这样一个定理:如果分解保留了依赖项,并且至少有一个包含原始候选键的关系,则此分解保留数据(即是无损连接分解)。
https://dba.stackexchange.com/questions/209808
复制相似问题