功能依赖是什么?
如果两个元组对X具有相同的值,对Y也具有相同的值,则关系中的函数依赖关系X->Y成立,即X唯一地确定Y。
在表1中给出的员工关系中,
- FD E-ID->E-NAME 因为每个E-ID都有一个唯一的E-NAME值。
- FD 电子身份->电子城市 和 电子城市->电子州 也成立。
- FD电子名称->电子标识 不成立 因为E-NAME“John”不是唯一确定E-ID的。有两个E-ID对应于John(E001和E003)。
受雇者
电子身份证 | 电子名称 | 电子城市 | 电子状态 |
---|---|---|---|
E001 | 约翰 | 德里 | 德里 |
E002 | 玛丽 | 德里 | 德里 |
E003 | 约翰 | 诺伊达 | 共和党。 |
表1
表1中给出的员工关系的FD集为:
{E-ID->E-NAME, E-ID->E-CITY, E-ID->E-STATE, E-CITY->E-STATE}
普通与非普通函数依赖关系: 一个微不足道的函数依赖关系是关系中始终存在的依赖关系。
X->Y will always hold if X ⊇ Y
在上面给出的例子中, 电子身份证,电子姓名->电子身份证 是一个微不足道的函数依赖项,将始终保持,因为{E-ID,E-NAME}⊃ {E-ID}。从表中还可以看出,对于{E-ID,E-NAME}的每个值,E-ID的值都是唯一的,因此{E-ID,E-NAME}在功能上决定了E-ID。
如果函数依赖项不是微不足道的,则称之为 非平凡函数依赖 .非平凡的函数依赖关系可能存在,也可能不存在。例如; E-ID->E-NAME 是一个非平凡的函数依赖项,在上述关系中成立。
函数依赖的性质
允许 十、 , Y 和 Z 是关系中的属性集 R 函数依赖的几个性质在R中总是成立的,也称为Armstrong公理。
- 自反性 :如果 Y 是 十、 然后 十、 → Y 例如。;设X表示{E-ID,E-NAME},Y表示{E-ID}。{E-ID,E-NAME}->E-ID对于关系是真的。
- 增强 :如果 十、 → Y 然后 XZ → YZ。 例如。;设X代表{E-ID},Y代表{E-NAME},Z代表{E-CITY}。因为{E-ID}->E-NAME对于关系是真的,所以{E-ID,E-CITY}->{E-NAME,E-CITY}也将是真的。
- 及物性 :如果 十、 → Y 和 Y → Z 然后 十、 → Z 例如。;设X代表{E-ID},Y代表{E-CITY},Z代表{E-STATE}。因为{E-ID}->{E-CITY}和{E-CITY}->{E-STATE}对关系是真的,所以{E-ID}->{E-STATE}也将是真的。
- 属性闭包: 在功能上依赖于属性A的属性集称为A的属性闭包,它可以表示为A + .
查找属性闭包的步骤
Q.给定关系R的FD集,属性闭包集S是a的集
- 将A添加到S。
- 递归地添加属性,这些属性在功能上可以从集合S的属性中确定,直到完成为止。
从表1可以看出,FD是
给定R( 电子身份证 ,电子名称,电子城市,电子州)
FDs = { E-ID->E-NAME, E-ID->E-CITY, E-ID->E-STATE, E-CITY->E-STATE }
E-ID的属性闭包可以计算为:
- 将E-ID添加到集合{E-ID}
- 添加可以从集合的任何属性派生的属性。在本例中,E-NAME和E-CITY、E-STATE可以从E-ID中派生出来。因此,它们也是闭包的一部分。
- 由于还有一个与E-ID相关的属性,所以结果是:
(E-ID)+ = {E-ID, E-NAME, E-CITY, E-STATE }
同样地,
(E-NAME)+ = {E-NAME} (E-CITY)+ = {E-CITY, E_STATE}
Q.找到给定FDs R(ABCDE)={AB->C,B->D,C->E,D->A}的属性闭包 找到(B) + ,我们将使用各种FD在集合中添加属性,如下表所示。
在闭包中添加的属性 | FD使用 |
---|---|
{B} | 琐事 |
{B,D} | B->D |
{B,D,A} | D->A |
{B,D,A,C} | AB->C |
{B,D,A,C,E} | C->E |
- 我们可以找到(C,D) + 通过将C和D添加到集合中(平凡性),然后使用(C->E)将E添加到集合中,然后使用(D->A)将A添加到集合中。
(C,D)+ = {C,D,E,A}
- 类似地,我们可以找到(B,C) + 通过将B和C添加到集合中(平凡性),然后使用(B->D)将D添加到集合中,然后使用(C->E)将E添加到集合中,然后使用(D->A)将A添加到集合中
(B,C)+ ={B,C,D,E,A}
候选密钥
候选关键是 最小属性集 可以用来唯一标识元组的关系。例如,表1中给出的每个员工关系元组都可以通过 电子身份证 它也是最小的。因此,这将是关系的候选关键。
候选密钥可能是主键,也可能不是主键。
超级钥匙
超级关键是 属性集 可以用来唯一标识元组的关系。例如,表1中给出的每个员工关系元组都可以通过 E-ID或(E-ID,E-NAME)或(E-ID,E-CITY)或(E-ID,E-STATE)或(E_-ID,E-NAME,E-STATE) 所有这些都是员工关系的超级关键。
Note: A candidate key is always a super key but vice versa is not true.
Q.使用FD集查找关系的候选键和超级键 这个 属性集 其属性闭包是关系的所有属性的集合,称为关系的超键。例如,表1中显示的员工关系设置了以下FD。 {E-ID->E-NAME,E-ID->E-CITY,E-ID->E-STATE,E-CITY->E-STATE} 让我们计算不同属性集的属性闭包:
(E-ID)+ = {E-ID, E-NAME,E-CITY,E-STATE} (E-ID,E-NAME)+ = {E-ID, E-NAME,E-CITY,E-STATE} (E-ID,E-CITY)+ = {E-ID, E-NAME,E-CITY,E-STATE} (E-ID,E-STATE)+ = {E-ID, E-NAME,E-CITY,E-STATE} (E-ID,E-CITY,E-STATE)+ = {E-ID, E-NAME,E-CITY,E-STATE} (E-NAME)+ = {E-NAME} (E-CITY)+ = {E-CITY,E-STATE}
As(电子身份证) + ,(E-ID,E-NAME) + ,(电子身份证,电子城市) + ,(电子身份证,电子州) + ,(电子身份证、电子城市、电子州) + 给出关系雇员的所有属性集。所有这些都是关系的超级关键。
这个 最小属性集 其属性闭包是关系的所有属性的集合,称为关系的候选键。如上所示,(E-ID) + 是关系的所有属性的集合,它是最小的。所以E-ID将是候选密钥。另一方面(E-ID,E-NAME) + 也是所有属性的集合,但它不是最小的,因为它的子集(E-ID) + 等于所有属性的集合。所以(E-ID,E-NAME)不是候选密钥。
文章由Sonal Tuteja提供。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论