3

我正在练习将一组函数依赖项和输出候选键作为输入。是否有一种算法,在这种情况下,为什么没有基于 Web 的实现,我可以在其中输入我的 FD:s 并作为输出获得超级键/候选键的列表?

我练习我在 SO 上找到的内容,一个合适的问题是 如何找到给定关系的最高范式, 其中提到的函数依赖关系是

B->G

BI->CD

EH-> AG

G-> 德

当我尝试发现候选键是 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 是候选键,它不能进一步减少,这可以从检查中看出(?)

我的推理方式正确吗?

增广算法还可以处理另一个问题,如果可行的话, 数据库无关属性和分解

在这里,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 是唯一的候选键。

这行得通吗?

感谢您的任何回答/评论

4

1 回答 1

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
于 2012-06-04T08:45:14.947 回答