使用 FD 查找关系的候选键
Finding the Candidate Keys of a Relation Using the FD's
我确实按照创建此问题时的建议检查了许多不同的相关帖子。我还从在线资源以及类似问题中完成了不同的示例问题。但是,我特别卡在下面的问题上。
给定以下关系 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 的闭包。有什么想法吗?
这里的键是ABD、ACD和BCD.
你走在正确的轨道上。将属性分成三组后,"only on the left"列表下的属性始终是键的一部分。这里的属性是 D.
"I also tried computing the closures of (AD), (BD), (CD), and (ED)"
由于您在获取 2 组属性时无法确定密钥,因此您应该尝试制作 3 组属性并检查它们的闭包。
我确实按照创建此问题时的建议检查了许多不同的相关帖子。我还从在线资源以及类似问题中完成了不同的示例问题。但是,我特别卡在下面的问题上。
给定以下关系 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 的闭包。有什么想法吗?
这里的键是ABD、ACD和BCD.
你走在正确的轨道上。将属性分成三组后,"only on the left"列表下的属性始终是键的一部分。这里的属性是 D.
"I also tried computing the closures of (AD), (BD), (CD), and (ED)"
由于您在获取 2 组属性时无法确定密钥,因此您应该尝试制作 3 组属性并检查它们的闭包。