我正在练习以一组函数依赖和输出候选键为输入。有没有算法,以及如何在这种情况下没有基于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是唯一的候选键。
这是行不通的?
感谢您的任何答案/评论
“怎么会在这样的情况下,没有基于网络的实现” - 因为你还没有建立一个呢! –
是的,有阿姆斯特朗的公理,但这不是一种方法。它只是说明可以用FD做什么。我正在寻找的方法,而不是定义/公理。我正在用增强算法的另一个应用程序更新这个问题,以查看它是否通用。非常感谢您的评论。 –