给定与FD的关系,计算属性集的闭包

时间:2014-06-01 13:44:13

标签: database relational-database functional-dependencies

  

考虑关系模式R = ABCDG以及功能依赖(FD)

AB  -> C
C   -> A
BC  -> D
ACD -> D
D   -> EG
BE  -> C
CG  -> BD
CE  -> AG
     

计算BDCA的关闭。

我们如何找到它们?

2 个答案:

答案 0 :(得分:2)

一组功能依赖项 F 闭包,意味着 F 逻辑上隐含的所有功能依赖项。例如,给定

  • BC -> D
  • D -> EG

我们可以应用Armstrong's axioms来推导

  • D -> E
  • D -> G
  • BC -> E
  • BC -> G

等等。

当您导出 F 隐含的每个FD时,您对 F 闭包相对于R.例如,您希望导出BD和CA逻辑上隐含的每个FD。

据我所知,关于关系数据库理论的每本教科书都包含一个或多个算法来计算一组函数依赖关系。您最好的选择是遵循教科书中的一种算法(如果有的话)。

答案 1 :(得分:0)

这是一种简单的算法,用于计算一组属性X的闭合:

Closure(X, F)
1  INITIALIZE V:= X
2  WHILE there is a Y -> Z in F such that:
   - Y is contained in V and
   - Z is not contained in V
3       DO add Z to V
4  RETURN V