如您所知,有三个Armstrong's Axioms用于推断关系数据库的所有功能依赖关系。 (X,Y和Z是属性集)
我理解扩充和传递性,例如,如果我们有这样的模式:
SOME_SCHEMA(a,b,c,d)
具有这样的功能依赖性:
- a→b
- b→c
醇>
通过使用扩充,我们可以得到 ac→bc 或者通过使用传递性我们可以得到 a→c 等等,但是我不知道如何推断更多功能使用反身性公理的依赖性?一些属性是某个其他属性的子集是什么意思?
你能告诉我一个使用我的架构或创建自己的架构的例子吗?
答案 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