使用FD来查找关系的候选关键字

时间:2015-03-12 01:59:16

标签: relational-database relation relational-algebra functional-dependencies candidate-key

在创建此问题时,我确实已经检查了许多不同的相关帖子。我也从在线资源以及类似的问题中做了不同的样本问题。但是,我特别关注下面的问题。

给定以下关系R和R上保留的函数依赖关系集S,找到R的所有候选键。显示你的工作。

R(A, B, C, D, E, F)
S:
AB → C

AC → B

AD → E

BC → A

E → F

最初,我将属性分组:仅在左侧,仅在右侧和两侧(分别为D,ABCE和F)找到属性。我也知道我应该尝试计算D的闭包。这是我被卡住的地方。乍一看,这似乎我无法解决这个问题,这是不对的。我也尝试计算(AD),(BD),(CD)和(ED)的闭包,因为我认为D = D的闭包有什么想法吗?

1 个答案:

答案 0 :(得分:1)

此处的键是 ABD ACD BCD

你走在正确的轨道上。将属性划分为三个组后,“仅在左侧”列表下的属性始终是键的一部分。这个属性是D。

“我也试过计算(AD),(BD),(CD)和(ED)的闭包”

由于在以2组为单位获取属性时无法确定密钥,因此您应该尝试制作3个属性的组并检查其关闭。