使用函数依赖关系查找属性闭包和候选键

功能依赖是什么?

如果两个元组对X具有相同的值,对Y也具有相同的值,则关系中的函数依赖关系X->Y成立,即X唯一地确定Y。

null

在表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公理。

  1. 自反性 :如果 Y 十、 然后 十、 Y 例如。;设X表示{E-ID,E-NAME},Y表示{E-ID}。{E-ID,E-NAME}->E-ID对于关系是真的。
  2. 增强 :如果 十、 Y 然后 XZ YZ。 例如。;设X代表{E-ID},Y代表{E-NAME},Z代表{E-CITY}。因为{E-ID}->E-NAME对于关系是真的,所以{E-ID,E-CITY}->{E-NAME,E-CITY}也将是真的。
  3. 及物性 :如果 十、 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}也将是真的。
  4. 属性闭包: 在功能上依赖于属性A的属性集称为A的属性闭包,它可以表示为A + .

查找属性闭包的步骤

Q.给定关系R的FD集,属性闭包集S是a的集

  1. 将A添加到S。
  2. 递归地添加属性,这些属性在功能上可以从集合S的属性中确定,直到完成为止。

从表1可以看出,FD是

给定R( 电子身份证 ,电子名称,电子城市,电子州)

FDs = { E-ID->E-NAME, E-ID->E-CITY, E-ID->E-STATE, E-CITY->E-STATE }

E-ID的属性闭包可以计算为:

  1. 将E-ID添加到集合{E-ID}
  2. 添加可以从集合的任何属性派生的属性。在本例中,E-NAME和E-CITY、E-STATE可以从E-ID中派生出来。因此,它们也是闭包的一部分。
  3. 由于还有一个与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提供。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享