我正在练习将一组功能依赖项和输出候选键作为输入。是否存在算法,如果没有基于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是唯一的候选密钥。
这有用吗?
感谢您的回答/评论
答案 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