解释DBMS中属性的闭包


属性x的闭包是关于F的所有对x函数依赖的属性的集合。它用X+表示,表示X可以确定什么。

算法

让我们看看计算X+的算法

  • 步骤1 - X+ =X
  • 步骤2 - 重复直到X+不再改变
    • 对于F中的每个FD Y->Z
      • 如果Y ⊆ X+ 则X+ = X+ U Z

示例1

考虑一个关系R(A,B,C,D,E,F)

F: E->A, E->D, A->C, A->D, AE->F, AG->K.

找到E或E+的闭包

解决方案

E或E+的闭包如下:

  E+ = E
    =EA       {for E->A add A}
    =EAD      {for E->D add D}
    =EADC     {for A->C add C}
    =EADC     {for A->D D already added}
    =EADCF    {for AE->F add F}
    =EADCF    {for AG->K don’t add k AG ⊄ D+)

示例2

设关系R(A,B,C,D,E,F)

F: B->C, BC->AD, D->E, CF->B. 找到B的闭包。

解决方案

B的闭包如下:

B+ = {B,C,A,D,E}

闭包用于查找R的候选键并计算F+

R的候选键:如果X->{R},则X是R的候选键

例如,

R(A,B,C,D,E,F) 其中F:A->BC, B->D, C->DE, BC->F. 然后,找到R的候选键。

解决方案

A+= {A,B,C,D,E,F}={R}=>A是一个候选键

B+= {B,D} => B不是候选键

C+= {C,D,E} => C不是候选键

BC+= {B,C,D,E,F} => BC不是候选键

F的闭包 (F+):F+是所有可以从F推断/推导出的FD的集合。通过在F上重复使用Armstrong公理,我们可以计算所有FD。

示例

R(A,B,C,D,E) 和F: A->B,B->C, C->D, A->E. 找到F的闭包

解决方案

A+= {A,B,C,D,E}

B+= {B,C,D}

C+= {C,D}

F+= {A->A, A->B, A->C, A->D, A->E, B->B, B->C, B->D, C->C, C->D}

更新于: 2021年7月3日

17K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告