从学期开始,这是一个非常基本的问题,我错了。我要求其为其他人准备期末考试提供更好,更准确的答案。
规范化具有5个属性A,B,C,D和E的表。其中A和B是复合键。没有其他主要属性。
一个。如果你有一个部分依赖关系B到C,你会做什么来规范化关系?
湾如果您对E有依赖关系D,那么您将如何规范关系?
答案 0 :(得分:2)
规范化只能通过功能依赖性来完成。所以让我们用你的问题重新表达你的问题。
规范化具有5个属性A,B,C,D和E的表。其中A和B是复合键。没有其他主要属性。
这意味着我们有一个关系架构
R(A, B, C, D, E)
只有非平凡的功能依赖:
A B → C D E
这种关系是Boyce-Codd范式(BCNF)以及第三范式(3NF)。
如果你有一个部分依赖B到C,你会怎么做才能规范化这个关系?
现在我们添加依赖项B → C
,它违反了BCNF(要求每个行列式都是超级密钥)和3NF(如果确定性是一个主要属性,则容忍非超级决定因素,即属于任何键的属性,C
不是主要属性,因为唯一的键是A B
)。
在这种情况下,规范化很简单,我们将原始关系R
分解为两个关系,第一个R1(B, C)
,表示关联B
和{{1}的信息},以便我们可以知道C
的每个值,它是B
的唯一对应值,第二个C
代表R2(A, B, D, E)
和D
的值E
由两个值A
和B
唯一确定。两个关系R1
和R2
都在BCNF和3NF中,因为R1
的关键是B
,而关键字R2
是{{} 1}}。
值得一提的是,这种分解是无损和依赖保留的。
如果您对E有依赖关系D,那么您将如何规范关系?
同样在这种情况下,策略是在两个关系中分解A B
,这次是R
和R1(A, B, C, D)
。同样,我们可以注意到两个关系都在BCNF和3NF中,并且保留了数据和依赖关系。