我有一个关于功能依赖性和违反第二种正常形式的问题。

问题描述 投票:0回答:1

我在做DB课的作业。

其中有一道题让我很困扰,虽然我得到了答案(我想)。

问题很简单。

FOR GIVEN RELATION R(A,B,C,D,E)和Functional dependencies F(AB -> C, D->E, DE ->B)

1. R是否在2NF中?

2. IS R IN 3NF?

3. R在BCNF中吗?

我想既然F中的所有FD的右边没有A和D,那么A和D一定是候选键的一部分。

于是我检查了AD的Closure,得到AD+:{A,B,C,D,E}。

也就是说,AD是超级密钥。

另外,由于A和D都必须是候选密钥的一部分,而AD不能被还原(AD的子集没有闭合是{A,B,C,D,E}),所以AD是候选密钥,而且是唯一可能的候选密钥。(我这样做对吗?)。

有了候选密钥AD,D->E是部分依赖于候选密钥AD。

所以它违反了2NF的条件。

在DE->B上,这个FD是不是违反了2NF的条件?

如果是这样,那么。

是否违反了,因为我们可以从D->E得到D->DE.所以DE->B等于D->B.这个D->B是否违反了2NF?

DE->B本身违反了2NF,没有任何转换,因为D在左手边?

当XY -> Z X是候选键的一部分,而Y,Z是非主键时,我真的很困惑。

因为我不能说它是否违反了2NF。我认为是违反了2NF,但我说不清楚为什么。

我找了好几个小时的例子和解释以及片段,但我没有得到任何满意的答案。

如果我不关心具体的原因,只想得到学分,也没关系。但我不能用这种态度来勉强自己。

database normalization database-normalization functional-dependencies
1个回答
1
投票

另外,由于A和D都必须是候选键的一部分,而AD不能被还原(AD的子集没有闭合是{A,B,C,D,E}),所以AD是候选键,而且是唯一可能的候选键。(我这样做对吗?)

是的,我做的对吗?

这个D->B是否违反了2NF ?

是的,因为 B 是一个非质数属性,并且 D 是候选密钥的一部分,并且依赖性成立,因为它是由 D -> EDE -> B (在2NF依赖关系中的关系中,确定子是候选键的适当子集,确定子是非主属性不能成立)。

© www.soinside.com 2019 - 2024. All rights reserved.