18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 范式(数据库)

范式(数据库)

时间:2022-12-20 12:30:01 | 来源:信息时代

时间:2022-12-20 12:30:01 来源:信息时代

    范式 : 满足一定约束的关系数据库模式。人们定义了五种范式。第1范式,第2范式,第3范式是Codd首先提出的。Boyce-Codd范式是于1972年由Boyce及Codd联合提出的。第4范式是于1976~1978年由Zaniolo、Fagin、Delobel分别独立地提出。第5范式是于1979年由Fagin提出的。
设U是全部属性的集合,虽然只需要R1∪…∪Rn=U,Ω={R1,…,Rn}就是一个关系数据库模式,但对于一个给定的Ω上的各种依赖的集合∑,并不是每个关系数据库模式都是好的,有的可能有弊病。
对于函数依赖模式主要的弊病是冗余弊、插入弊、修改弊、删除弊。
为了能够给出没有弊病的关系数据库模式的形式化描述,人们定义了一些“范式”(normal form,NF)。对于函数依赖模式曾定义了以下四种范式:
第1范式(First normal form,1NF):
符合关系数据库条目中定义的那些关系的集合。即:
1NF={r|r是符合关系数据库定义的关系}。
第2范式(Second normal form,2NF):
2NF={(R,∑)|任何非主属性A都不存在键的真子集X`使∑⊧X`→A}。
容易看出,(R,∑)∈2NF等价于(R,∑)中不含对非主属性的部分依赖。
第3范式(Third normal form,3NF):
3NF={(R, ∑)|∑X→Y,Y⊈X,Y由非主属性组成, 则∃X1X而X1是键}。
容易看出(R,∑)∈3NF等价于(R,∑)中既不含部分依赖,又不含传递依赖。
BC范式(Boyce-Codd normal form,BCNF):
BCNF={(R, ∑)|∑⊦X→Y,Y⊈X, 则∃X1X而X1是键}。
由于2NF是所有对非主属性不存在部分依赖的函数依赖模式的集合,对传递依赖没有过问,而3NF是所有对非主属性既不存在部分依赖又不存在传递依赖的函数依赖模式的集合, 所以有1NF2NF3NF。又由于确实有属于2NF但不属于3NF的函数依赖模式存在, 因此, 还更严格地有2NF⊃3NF。
由BCNF及3NF的定义来看,3NF的定义只比BCNF的定义多了一个Y是非主属性,也就是说3NF只要求对非主属性检查合不合要求即可以了,对于主属性,合不合要求就不过问了,但BCNF不仅要求Y是非主属性时适合,而且还要求Y是主属性时也得适合,所以BCNF3NF。由于确实有函数依赖模式属于3NF,但不属于BCNF,所以,实际上更严格地有BCNF⊂3NF。
已经证明属于第3范式或BC范式的函数依赖模式是没有弊病的,并且每一个有弊病的函数依赖模式总可以通过分解把它变为几个与其等价的属于第3范式或BC范式的函数依赖模式。
对于多值依赖模式,定义了一个范式:
第4范式(Fourth normal form,4NF):
4NF={(R,∑)|若∑⊧X→→Y,Y⊈X, Y≠∅,X∪Y≠R, 则∃X`是(R,∑)的键, 使得(X`X)}。
这里(R,∑)的键仍是由∑中的函数依赖决定的键。如果(R,∑)∈4NF,则多值依赖模式会存在弊病。属于第4范式多值依赖模式是没有弊病的,并且每一个有弊病的多值依赖模式总可以通过分解把它变为几个与其等价的属于第4范式的多值依赖模式。
如果把函数依赖看作多值依赖的特殊情况,则函数依赖模式(R,∑)属于4NF就一定属于BCNF,这是因为:
设X→Y∉∑,于是∑⊦X→→Y。而(R,∑)∈4NF,所以, 若X→Y不是平凡依赖, 即Y≠且YX,则只要X∪Y≠R,就存在X`是(R,∑)的键,使得(X`X)。 然而X∪Y=R时,X本身就包含(R,∑)的键,所以,对∑中每个非平凡依赖X→Y,都存在X`是(R,∑)的键, 使得(X`X), 所以,(R,∑)∈BCNF。
对于连接依赖模式,定义了一个范式:
第5范式(Fiveth normal form,5NF):
5NF={(R,∑)|(R,∑)是连接依赖模式,且满足∑⊧∑″}。
这里∑={X→R|X是(R,∑)的键},而(R,∑)的键仍是按∑中的函数依赖求出的。 ∑″{⋈[ρ]|∑⊧⋈[ρ]},⋈[ρ]是一个连接依赖, 即∑″是∑所蕴涵的所有连接依赖。如果连接依赖模式不属于5NF,则也会存在弊病。属于第5范式连接依赖模式是没有弊病的,并且每一个有弊病的连接依赖模式总可以通过分解把它变为几个与其等价的属于第5范式的连接依赖模式。
如果把多值依赖看作连接依赖的特殊情况,则多值依赖模式(R,∑)属于5NF就一定属于4NF,这是因为:
设X→→Y是∑蕴涵的任一个多值依赖。在一个关系模式R的关系r适合多值依赖X→→Y的定义中(关系r适合多值依赖的定义请见多值依赖条目),如果令R1∩R2=R,R1-R2=Y,既是令R1=X∪Y,
R2=R-Y,则关系r适合多值依赖X→→Y的定义就等价于r=r[X∪Y]⋈r[R-Y],而r=r[X∪Y]⋈r[R-Y]就正是r适合连接依赖σ=⋈[X∪Y,R-Y]。 这样因为∑⊧σ, 所以σ∈。因为(R,∑)∈5NF, 所以∑`⊧, 从而∑⊧σ(这里的∑⊧的意义请见前面5NF的定义)。于是应用∑对σ的造型表T进行追赶必然是成功的(追赶及造型表请见广义依赖条目)。而σ的造型表T由两行组成,一行在X∪Y列上为识别符号,在其他列上为非识别符号。另一行在R-Y列上为识别符号,在其他列上为非识别符号。所以这两行在(X∪Y)∩(R-Y)列上符号相同。但∑中都是形如X0→R的函数依赖,其中X0是(R,∑)的键。∑中的这些函数依赖若能应用于T,显然必有某个X0是(X∪Y)∩(R-Y)的子集,但(X∪Y)∩(RY)X,所以必有某个(R,∑)的键X0是X的子集,所以,由4NF的定义知(R,∑)∈4NF。
至此,人们对于函数依赖、多值依赖及连接依赖已经依次提出了1NF、2NF、3NF、BCNF、4NF及5NF,它们每一个都比前一个要求更高,每一个都分别是前一个的子集(见图1)。


图1 各种范式的子集隶属关系

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭