📅  最后修改于: 2023-12-03 15:22:22.443000             🧑  作者: Mango
在关系型数据库中,函数依赖(Functional Dependency,以下简称 FD)是指某一属性或属性组的值,可以唯一地决定另一个属性或属性组的值。例如,学生的学号能够唯一地决定该学生的姓名。FD 可以用 A -> B 表示,表示 A 属性(或属性组)的值决定了 B 属性(或属性组)的值。
候选键(Candidate Key)是关系模式中能够唯一标识一个元组的最小属性集。一个关系模式可能存在多个候选键。候选键的性质包括唯一性和最小性。
对于一个关系模式 R,我们可以使用函数依赖来查找候选键。具体的过程如下:
在这个过程中,我们需要用到函数依赖的推导和分解技巧。具体来说,我们可以通过分解出满足某个 FD 的属性集合,并验证是否包含候选键来判断 CK 是否为候选键。如果 CK 不是候选键,则可以通过分解出满足某个 FD 的属性集合,并验证是否包含 CK 来生成新的候选键。
假设我们有下面这个关系模式:
R(A, B, C, D, E)
我们知道下面这些 FD:
A -> B
C -> A
C -> D
E -> A
我们开始假设 {A, B, C, D, E}
是一个候选键。我们尝试移除其中的一个属性,得到下面的结果:
{B, C, D, E} -> A
A -> B
C -> A
C -> D
E -> A
很明显,{B, C, D, E}
并不能唯一标识元组。我们尝试将其分解,得到下面的结果:
{B, C, D} -> A
E -> A
通过验证,我们可以确定 {B, C, D}
是一个候选键。