3

我正在练习以一组函数依赖和输出候选键为输入。有没有算法,以及如何在这种情况下没有基于Web的实现,我可以输入我的FD和作为输出获得超级密钥/候选键列表?找到给定FD的候选键的方法:s?

我练什么我发现这里的SO和合适的问题是 how to find the highest normal form for a given relation 这里提到的函数依赖是

B-“G

BI-> CD

EH-> AG

G-> DE

请检查我是否正在做这件事t当我尝试发现候选键是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-> A

这里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

“怎么会在这样的情况下,没有基于网络的实现” - 因为你还没有建立一个呢! –

+1

是的,有阿姆斯特朗的公理,但这不是一种方法。它只是说明可以用FD做什么。我正在寻找的方法,而不是定义/公理。我正在用增强算法的另一个应用程序更新这个问题,以查看它是否通用。非常感谢您的评论。 –

回答

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 
+0

现在看起来很简单。谢谢。 –

相关问题