時間:2022-12-20 12:30:01 | 來源:信息時代
時間:2022-12-20 12:30:01 來源:信息時代
范式 : 滿足一定約束的關系數(shù)據(jù)庫模式。人們定義了五種范式。第1范式,第2范式,第3范式是Codd首先提出的。Boyce-Codd范式是于1972年由Boyce及Codd聯(lián)合提出的。第4范式是于1976~1978年由Zaniolo、Fagin、Delobel分別獨立地提出。第5范式是于1979年由Fagin提出的。
設U是全部屬性的集合,雖然只需要R1∪…∪Rn=U,Ω={R1,…,Rn}就是一個關系數(shù)據(jù)庫模式,但對于一個給定的Ω上的各種依賴的集合∑,并不是每個關系數(shù)據(jù)庫模式都是好的,有的可能有弊病。
對于函數(shù)依賴模式主要的弊病是冗余弊、插入弊、修改弊、刪除弊。
為了能夠給出沒有弊病的關系數(shù)據(jù)庫模式的形式化描述,人們定義了一些“范式”(normal form,NF)。對于函數(shù)依賴模式曾定義了以下四種范式:
第1范式(First normal form,1NF):
符合關系數(shù)據(jù)庫條目中定義的那些關系的集合。即:
1NF={r|r是符合關系數(shù)據(jù)庫定義的關系}。
第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是所有對非主屬性不存在部分依賴的函數(shù)依賴模式的集合,對傳遞依賴沒有過問,而3NF是所有對非主屬性既不存在部分依賴又不存在傳遞依賴的函數(shù)依賴模式的集合, 所以有1NF2NF3NF。又由于確實有屬于2NF但不屬于3NF的函數(shù)依賴模式存在, 因此, 還更嚴格地有2NF⊃3NF。
由BCNF及3NF的定義來看,3NF的定義只比BCNF的定義多了一個Y是非主屬性,也就是說3NF只要求對非主屬性檢查合不合要求即可以了,對于主屬性,合不合要求就不過問了,但BCNF不僅要求Y是非主屬性時適合,而且還要求Y是主屬性時也得適合,所以BCNF3NF。由于確實有函數(shù)依賴模式屬于3NF,但不屬于BCNF,所以,實際上更嚴格地有BCNF⊂3NF。
已經(jīng)證明屬于第3范式或BC范式的函數(shù)依賴模式是沒有弊病的,并且每一個有弊病的函數(shù)依賴模式總可以通過分解把它變?yōu)閹讉€與其等價的屬于第3范式或BC范式的函數(shù)依賴模式。
對于多值依賴模式,定義了一個范式:
第4范式(Fourth normal form,4NF):
4NF={(R,∑)|若∑⊧X→→Y,Y⊈X, Y≠∅,X∪Y≠R, 則∃X`是(R,∑)的鍵, 使得(X`X)}。
這里(R,∑)的鍵仍是由∑中的函數(shù)依賴決定的鍵。如果(R,∑)∈4NF,則多值依賴模式會存在弊病。屬于第4范式多值依賴模式是沒有弊病的,并且每一個有弊病的多值依賴模式總可以通過分解把它變?yōu)閹讉€與其等價的屬于第4范式的多值依賴模式。
如果把函數(shù)依賴看作多值依賴的特殊情況,則函數(shù)依賴模式(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,∑)的鍵仍是按∑中的函數(shù)依賴求出的。 ∑″{⋈[ρ]|∑⊧⋈[ρ]},⋈[ρ]是一個連接依賴, 即∑″是∑所蘊涵的所有連接依賴。如果連接依賴模式不屬于5NF,則也會存在弊病。屬于第5范式連接依賴模式是沒有弊病的,并且每一個有弊病的連接依賴模式總可以通過分解把它變?yōu)閹讉€與其等價的屬于第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的函數(shù)依賴,其中X0是(R,∑)的鍵?!浦械倪@些函數(shù)依賴若能應用于T,顯然必有某個X0是(X∪Y)∩(R-Y)的子集,但(X∪Y)∩(RY)X,所以必有某個(R,∑)的鍵X0是X的子集,所以,由4NF的定義知(R,∑)∈4NF。
至此,人們對于函數(shù)依賴、多值依賴及連接依賴已經(jīng)依次提出了1NF、2NF、3NF、BCNF、4NF及5NF,它們每一個都比前一個要求更高,每一個都分別是前一個的子集(見圖1)。
圖1 各種范式的子集隸屬關系
微信公眾號
版權所有? 億企邦 1997-2022 保留一切法律許可權利。