【数据库设计】规范设计理论之数据依赖的公理系统(1)
知道范式的几种分类之后还并不能帮助我们设计一款好的数据库,在对关系进行拆解(指模式分解)之前,我们需要引入一个理论基础让设计过程变得有迹可循和具备一定的严谨性以此来支撑数据库背后的可靠性。
Armstrong公理系统
所谓公理就是那些不证自明的理论,比如欧几里得几何中:可以从任意一点向任意一点画一条直线、可以以任意一点和任意半径画成一个圆等,数据库中也有类似的公理。R<U,F>表示有关系R,且属性集为U,有函数依赖集合F的关系模式,用来描述数据库的关系模式和数据之间的约束关系。假如该关系模式中有任一关系r满足函数依赖X→Y,那么就说F逻辑蕴含X→Y,或者说X→Y是F的逻辑蕴含。根据已知的函数依赖比如A→B,B→C,就可以推理出A→C,或者说逻辑蕴含出A→C,而公理系统定义了几种可以推理的方法:
自反律
假如有U有子集X、Y,并且Y ⊆ X ⊆ U,很明显可以得出X→Y,自己当然可以推出自己,比如关系(Sno,Sname)→Sno。
增广律
有关系(Sno,Cno,Cname),其中存在Sno→Cno的函数依赖,那么也就意味着(Sno,Cname)→(Cno,Cname),就像a=b,那么a+c=b+c.定义是这样的:假设函数依赖集合F逻辑蕴含X→Y,且Z ⊆ U,那么存在XZ→YZ。
传递律
假如F逻辑蕴含X→Y和Y→Z,那么自然X→Z也是F的逻辑蕴含。
延伸规则
根据上面的三个定律可以推导出有下面的规则:
合并规则:若X→Y,Y→Z,则X→YZ。YZ是指Y和Z两个属性集合的并集。
分解规则:若X→Y,且Z⊆Y,那么很显然X→Z
伪传递规则:若X→Y,WY→Z,那么显然有WX→WY,再加上原来的WY→Z,因此自然有WX→Z.
引理1——基于公理
X → A1, A2, ..., An 成立的充分必要条件是 X → Ai (i = 1, 2, 3, ..., n) 成立。充分必要条件是指P⇔Q
两个条件可以互相推,也就意味着这两个条件在逻辑上时等价的。
例题
对于关系模式 R<U,F>
,U1,U2,U3,U4,U5,U6
是它的属性集 U 的子集,R 满足函数依赖为 {U1→U2U3
,U3U4→U5U6
},证明函数依赖 U1U4→U6
成立。
证明:
因为U1→U2U3
,由分解规则,所以有U1→U3
;
再然后,由增广律有U1U4→U3U4
;
又U3U4→U5U6
,由传递律有U1U4→U5U6
;
最后,由分解规则有U1U4→U6
;
函数依赖 U1U4→U6
得证。
闭包
借助上面所讲的公理系统,依靠一组函数依赖我们就可以推导出关系中其他的函数依赖,直到全部集结完毕,也叫闭包,指关系R中所蕴含的所有函数依赖,即关系模式 R<U,F>中,由F逻辑蕴含出的所有函数依赖集合,用符号F+表示。除了整个函数的闭包,也可以单指属性集闭包。比如关系R中U={A1, A2, ..., An}, 有属性集合X,当然还有其他的属性集合Y等,那么X属性集合的闭包就是X+F={A|X→A,A是F的逻辑蕴含},那么就称X+F是属性集X关于函数依赖集F的闭包——属性依赖集的闭包。
引理2——基于公理和闭包
U={A1, A2, ..., An} 是关系模式 R中所有属性的集合,F是 U 上的一组函数依赖,X⊆U,Y⊆U,X→Y 能由 F 根据 Armstrong 公理系统推出的充分必要条件是 Y⊆X+F。
所以当我们要使X→Y 的办法是Y⊆X+F,这意味着我们需要求出属性集X的闭包。
具体的算法明天更新。