用于推断功能依赖性的反身性公理

时间:2013-01-23 00:44:37

标签: sql database relational-database functional-dependencies

如您所知,有三个Armstrong's Axioms用于推断关系数据库的所有功能依赖关系。 (X,Y和Z是属性集)

  1. 反身性如果X⊆Y,则Y→X
  2. 增强如果X→Y,那么任何Z的XZ→YZ
  3. 传递性如果X→Y和Y→Z,则X→Z
  4. 我理解扩充和传递性,例如,如果我们有这样的模式:

      

    SOME_SCHEMA(a,b,c,d)

    具有这样的功能依赖性:

      
        
    1. a→b
    2.   
    3. b→c
    4.   

    通过使用扩充,我们可以得到 ac→bc 或者通过使用传递性我们可以得到 a→c 等等,但是我不知道如何推断更多功能使用反身性公理的依赖性?一些属性是某个其他属性的子集是什么意思?

    你能告诉我一个使用我的架构或创建自己的架构的例子吗?

1 个答案:

答案 0 :(得分:4)

Transivty规则也可以这样陈述:

A1, A2, …, An → Ai

其中i是介于1和n之间的任何数字。我认为这条规则的定义有点清楚。 A1是A1到An的子集,因此可以推断出上述依赖性。

这些类型的依赖项称为普通依赖项。最简单的形式是:

A → A

如您所见,A是A的子集,因此通过反身性的定义,我们可以推断出上述依赖性。

这真的不是一个非常有用的公理,前两个公理都不是很有用,但是为了形式,我们可以得到最后的公理,这是非常有用的。

要使用您的示例,我们可以说以下内容。鉴于我们有表:

SOME_SCHEMA(a, b, c, d)

我们可以推断出这样的依赖关系:

a, b, c, d → a
a, b, c, d → a, c

还有更多相同性质的依赖。

顺便说一下,这里有一些很好的幻灯片,可以很好地解释功能依赖性。还有一些关于阿姆斯特朗规则的幻灯片。我在学习这些东西时发现这些有用:Functional Dependency Slides