Database design 每一个2NF关系都能变成3NF关系吗?

Database design 每一个2NF关系都能变成3NF关系吗?,database-design,relational-database,database,Database Design,Relational Database,Database,2NF中的每一个关系都能被制作成3NF,并且具有无损连接和依赖关系保持功能吗 编辑: 与一组函数依赖项F存在关系RR在2NF中,但不在3NF中。我们能否将关系R分解为3NF中的较小关系,并与依赖组合进行无损连接?每次都能做到吗?简言之:是的-可以做到 更详细的解释 假设我们有关系R,它在x->y之间。假设R不在2NF中,新的关系P和Q必须存在,其中P:x->z和Q:z->y和P,Q不能是微不足道的。这里,x,y,z是相应的功能实体(在常见情况下,它们不是“列”,如果用SQL表的话,它们也可能是“

2NF
中的每一个关系都能被制作成
3NF
,并且具有无损连接和依赖关系保持功能吗

编辑:


与一组函数依赖项
F
存在关系
R
R
2NF
中,但不在
3NF
中。我们能否将关系
R
分解为
3NF
中的较小关系,并与依赖组合进行无损连接?每次都能做到吗?

简言之:是的-可以做到

更详细的解释

假设我们有关系
R
,它在
x->y
之间。假设
R
不在2NF中,新的关系
P
Q
必须存在,其中
P:x->z
Q:z->y
P
Q
不能是微不足道的。这里,
x
y
z
是相应的功能实体(在常见情况下,它们不是“列”,如果用SQL表的话,它们也可能是“列集”)

让我们也假设
p
Q
没有传递子关系(比如
R
has)-也就是说,它们在3NF中(否则这将不会改变任何东西,我们将继续深入并再次重复,直到找到没有传递子关系的子关系)

因此,我们:

R(x) = y,
P(x) = z,  => Q(P(x)) = y
Q(z) = y

这就是传递关系的定义。因此,
R
将被分为两个关系
P
R
(因为只有
P
Q
足以建立关系
x->y
,因此
R
是冗余的,可以用
P
Q
替换,并将这两个关系连接起来)。我们的
P
Q
在3NF中,因此,我们将
R
转换为3NF关系。事实上,这就是规范化2NF->3NF(即以这种方式找到并解决所有传递关系)时应该做的工作。

实际上每个关系都可以转换为3NF状态。
每个2NF关系都可以转换为3NF关系吗?
你想问如何转换?在这里问它以获得更好的答案“实际上,每个关系都可以转换为3NF状态。“@GrijeshChauhan我想我得到了我的答案。@vincentmathew是的,每个关系都可以转换成3NF,如果要将这种关系转换成相关关系可能需要这样做。好的,如果你认为你的答案是正确的,那么你可以暂时删除这个问题。如果你觉得可以发布一个新的问题,请阅读更多的文本