最大功能依赖数(包括平凡数)

时间:2014-10-08 01:43:31

标签: database functional-dependencies

在一个关系R中,N属性有多少函数依赖(包括平凡)?

我知道那些琐碎的依赖关系是右手边是左手边的一部分,但我不知道如何计算依赖关系的上限。

非常感谢有关答案及其处理方法的任何信息。

    -

1 个答案:

答案 0 :(得分:0)

最大可能的功能依赖性数量是

  • 可能的左侧数量*可能的右侧数量

我们包含了微不足道的功能依赖关系,因此可能的左侧数量等于可能的右侧数量。所以这简化为

  • (可能的左侧数量) 2

我们说你有R {∅AB}。有三个属性。 1 可能的左侧数量是

  • 一次取1个属性的组合,加上
  • 一次取2个属性的组合,加上
  • 一次3个属性的组合

等于3+3+1或7.因此对于具有三个属性的任何R,最多有7个 2 可能的函数依赖性:49。属性的顺序并不重要,所以我们使用公式进行组合,而不是排列。

如果你从R {∅ABC}开始,你有

  • 一次取1个属性的组合,加上
  • 一次取2个属性的组合,加上
  • 一次3个属性的组合,加上
  • 一次4个属性的组合

等于4+6+4+1或15.因此对于具有四个属性的任何R,最多有15个 2 可能的函数依赖性:225。

了解此公式后,使用电子表格可以轻松完成这些计算。使用Ruby或Python等脚本语言编写程序来生成所有可能的函数依赖也很容易。

The Wikipedia article on combinations提供了如何使用和不使用阶乘来计算组合的示例。

R {∅AB}的所有可能组合:

A->A A->B A->∅ A->AB A->A∅ A->B∅ A->AB∅ 
B->A B->B B->∅ B->AB B->A∅ B->B∅ B->AB∅ 
∅->A ∅->B ∅->∅ ∅->AB ∅->A∅ ∅->B∅ ∅->AB∅ 
AB->A AB->B AB->∅ AB->AB AB->A∅ AB->B∅ AB->AB∅ 
A∅->A A∅->B A∅->∅ A∅->AB A∅->A∅ A∅->B∅ A∅->AB∅ 
B∅->A B∅->B B∅->∅ B∅->AB B∅->A∅ B∅->B∅ B∅->AB∅ 
AB∅->A AB∅->B AB∅->∅ AB∅->AB AB∅->A∅ AB∅->B∅ AB∅->AB∅

  1. 大多数人忽略空集。他们说R {∅AB}只有两个属性A和B,他们把它写成R {AB}。