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

规范化方法(数据库)

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

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

    规范化方法 : 将非规范化关系模式分解成多个规范化模式的方法,亦即是将一个函数依赖模式(R,∑)分解成属于第3范式或属于BC范式的几个函数依赖模式,或将一个多值依赖模式(R,∑)分解成几个属于第4范式的几个多值依赖模式,或将一个连接依赖模式(R,∑)分解成几个属于第5范式的几个连接依赖模式的方法。
无损依赖地分解成属于第3范式的方法,是于1977年由Bernstein给出的。既无损连接又无损依赖地分解成属于第3范式的方法是于1979年由Biskup、Dayal及Berestein给出的。包含函数依赖及多值依赖的多值依赖模式无损连接地分解为第4范式的方法是于1978年由Aho、Beeri及Ulman给出的。无损连接地分解为第5范式的算法是于1979年由Linj及Demers给出的。
为了将一个函数依赖模式(R,∑)分解成几个属于第3范式的函数依赖模式,需要先计算与∑等价(等价请参看函数依赖条目)的正则最小函数依赖集(正则函数依赖集及最小函数依赖集请见函数依赖条目),即需要先计算与∑等价的满足以下条件的函数依赖集∑0:
(1)∑0中每个函数依赖右部都只有一个属性,
(2)∑0中不存在这样的函数依赖X→A,使得∑0*=(∑0-{X→A})*,即∑0中无多余依赖。
(3)∑0中不存在这样的函数依赖X→A及Y⊂X使∑0*=((∑0∪{Y→A}-{X→A})*,即每个函数依赖左部都无多余属性。
求给定的函数依赖集合∑的等价正则最小函数依赖集合的方法如下:
(1)右部化为单个属性形成∑1: 将∑中的每个函数依赖X→Y全用{X→A|A∈Y}来代替,即形成集合∑1={X→A|A∈Y,X→Y∈∑}。
(2)去掉多余依赖形成∑2:在∑1中依次取函数依赖X→A,令∑0`=∑1-{X→A},并求X∑′+,若A∈X∑′+,即(∑-{X→A})⊧X→A, 则删除X→A,删除后仍记为∑1。依次将函数依赖全部取完,并都做了相应的处理完后,将最终的∑1改记为∑2
(3)去掉左边的多余属性形成∑0: 逐个取出∑2中的每个X→A,做以下工作,设X=B1,…,Bm
①令X0=X,i=0。

③i<m则i=i+1转②,否则(i=m),则令∑0={Xm→A|X→A∈∑2}即为所求。
在计算出正则最小函数依赖集的基础上,将(R,∑)分解成几个无损连接无损依赖的属于第3范式的函数依赖模式的方法如下:
首先求出与∑等价的最小函数依赖集,并仍记为∑,然后按以下几种方法进行:
若有X→A∈∑且X∪{A}=R,则输出μ={R0,∑0)}结束,其中R0=R,∑0=∑。
若不是情况1,则把不在∑中出现的属性合在一起形成R0, 并令∑0={∅}。
对每一个Xi→Ai∈∑(i=1,…,n),令Ri=Xi∪{Ai},令∑i={X→Y|X→Y∈∑*,X, YRi}, 任取(R,∑)的一个键X`,令Rn+1=X`,令∑n+1={X→Y|X→Y∈∑*∧X,YRn+1}。
输出μ={(R0,∑0),(R1,∑1),…,(Rn+1,∑n+1)}结束。
将一个函数依赖模式(R,∑)分解成几个属于第BC范式的无损连接的函数依赖模式的算法是(下面用KEY(R,∑)表示函数依赖模式(R,∑)的全部键的集合):
(1)首先求出∑的等价的正则最小函数依赖集合,不失一般性我们仍记它为∑。
(2)令ρ1={(R,∑)}。
(3)若已知ρk(k=1,2,…),检查ρk中的每一个(Ri,∑i)是否都属于BCNF,若都属于,则ρk即为所求的ρ,输出ρ,算法终止。
(4)若ρk中有(Ri,∑i)不属于BCNF,那么必有X→A∈Xi*,A∉X且X∉KEY(Ri,∑i)。这时令Ri1=X∪{A},Ri2=Ri-{A},并令:ρk+1={(R1,∑1),…,(R_((i-1)),∑i-1),(Ri1,∑i1),(Ri2,∑i2),(Ri+1,∑i+1),…,(Rn,∑n)}。其中,∑i1={X→Y|X∑_((i))*⊧X→Y且X,YRi1},∑i2={X→Y|X∑_((i))*⊧X=Y且X,YRi2}。然后再回到步骤(3)。
已证明这个分解是无损连接的,但一般情况下不能保证是无损依赖的。
将一个不属于4NF的多值依赖模式分解为几个属于4NF的多值依赖模式的无损连接的方法是:
对于多值依赖模式(R,∑),令R1=R,∑1=∑,ρ1={(R1,∑1)},及i=1。
若已知ρi={(R1,∑1),…,(Ri,∑i)}中仍有(Rk,∑k)不属于4NF,则用(Rk1,∑k1)及(Rk2,∑k2)来代替(Rk,∑k),而其他多值依赖模式不变,生成一个ρi+1,这里Rk1=X∪Y,Rk2=Rk-Y,∑k1用以下方法给出: 对每个X→Y∈X∑_((i))*, 若XRk1, 则X→(Y∩Rk1)∈∑k1,对每个X→→Y∈X∑_((i))*,若XRk1,则X→→(Y∩Rk1)∈∑k1; Rk2用以下方法给出: 对每个X→Y∈X∑_((i))*,若XRk2, 则X→(Y∩Rk2)∈∑k2, 对每个X→→Y∈X∑_((i))*, 若XRk2,则X→→(Y∩Rk2)∈∑k2
直到某个ρn={(R1,∑1),…,(Rn,∑n)}中每个(Rk,∑k)都属于4NF为止,ρn即为所求。已证明这种分解是无损连接的但不一定是无损依赖的。
将一个不属于5NF的连接依赖模式分解为几个无损连接的属于5NF的连接依赖模式的方法是:
(1)对于连接依赖模式(R,∑),令R1=R,∑1=∑,ρ1={(R1,∑1)},及i=1。
(2)若已知ρi={(R1,∑1),…,(Ri,∑i)}中仍有(Rk,∑k)不属于5NF,则在∑k中取使其不属于5NF的连接依赖μ=Rk(1)⋈Rk(2)⋈…⋈Rk(p)。 用(Rk(i)),∑k(i))(i=1,…,p)来代替(Rk,∑k),而其他多连接赖模式不变,生成一个ρi+1,其中∑k(i)是∑在Rk(i)上的投影。
直到某个ρn={(R1,∑1),…,(Rn,∑n)}中每个(Rk,∑k)都属于5NF为止,ρn即为所求。
已证明这种分解是无损连接的。

关键词:数据,方法,规范化

74
73
25
news

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

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