给定FD的候选键的方法:s?

时间:2012-06-04 07:24:34

标签: relational-database database-normalization relational-algebra functional-dependencies

我正在练习将一组功能依赖项和输出候选键作为输入。是否存在算法,如果没有基于Web的实现,我可以输入FD:s并输出获取超级密钥/候选键列表?

我在SO上找到的东西练习,一个合适的问题是 how to find the highest normal form for a given relation 所提到的功能依赖性是

B-&GT克

BI-> CD

EH-> AG

G-> DE

当我试图找到候选键是BFHI时,请检查我是否正确这样做:

FD B-> G可以重写为ABCDEFHI-> ABCDEFGHI,因此ABCDEFHI是超级密钥。 FD BI-> CD可以重写为ABEFGHI-> ABCDEFGHI,因此ABEFGHI是超级密钥。 FD EH-> AG可以重写为BCDEEFHI-> ABCDEFGHI,因此BCDEEFHI是超级密钥。 FD G-> DE可以重写为ABCFGHI-> ABCDEFGHI,因此ABCFGHI是超级密钥。

在我们的超级钥匙中,每个人都有BFHI。因此,BFHI是候选键,它不能进一步减少,这可以从检查(?)

中看出

我是否以正确的方式推理这个?

增强算法可以处理另一个问题,如果它有效, Database extraneous attributes and decomposition

这里,FD:s是

A-> BCD

BC-> DE

B-> d

D->一种

这里FB A-> BCD可以写成AEF-> ABCDEF,因此AEF是超级密钥。 FD BC-> DE可以被重写为ABCF-> ABCDEF,因此ABCF是超级密钥。 FD B-> D可以被重写为ABCEF-> ABCDEF,因此ABCEF是超级密钥。 FD D-> A可以重写为BCDEF-> ABCDEF,因此BCDEF是超级密钥。对于所有超级密钥,F是每个超级密钥中唯一的成员,因此F是唯一的候选密钥。

这有用吗?

感谢您的回答/评论

1 个答案:

答案 0 :(得分:4)

No, but as F is not in any of the FD:s then it has to be a member of every candidate key.

Also, A->BCD, BC->DE, B->D, D->A give us 
A+ (the cover of A) = ABCDE
B+ = ABCDE
C+ = C
D+ = ABCDE so the 
E+ = E
F+ = F.

The combinations giving ABCDEF are
AF
BF
DF
and hence the candidate keys are {AF, BF, DF}
and every enhancement of any of those three are the superkeys