1.7關(guān)系數(shù)據(jù)庫(kù)規(guī)范化理論
為了使數(shù)據(jù)庫(kù)設(shè)計(jì)的方法走向完備,人們研究了規(guī)范化理論,指導(dǎo)我們?cè)O(shè)計(jì)規(guī)范的數(shù)據(jù)庫(kù)模式。按屬性間依賴情況來(lái)區(qū)分,關(guān)系規(guī)范化的程度為第一范式、第二范式、第三范式、BCNF范式和第四范式等。
函數(shù)依賴
數(shù)據(jù)依賴是現(xiàn)實(shí)世界中屬性間聯(lián)系和約束的抽象,是數(shù)據(jù)的內(nèi)在性質(zhì)。
函數(shù)依賴(functional dependency,F(xiàn)D )是一種最重要、最基本的數(shù)據(jù)依賴。其具體定義如下:
設(shè)有關(guān)系模式R(U),X和Y是屬性集U的子集,F(xiàn)D是行為X→Y的一個(gè)命題,只要r是R的關(guān)系,對(duì)r中任意兩個(gè)元組都有“X值相等蘊(yùn)涵Y值相等”,那么函數(shù)依賴X→Y在關(guān)系模式R(U)中成立。
FD與侯選鍵之間的關(guān)系:若存在X->U,并且不存在X的任意真子集X1,使得X1->U成立,那么就稱X為關(guān)系的一個(gè)侯選鍵。
函數(shù)依賴還有幾條推理規(guī)則:
自反性;增廣性;傳遞性;并規(guī)則;分解規(guī)則;偽傳遞規(guī)則;
◆模式分解:目的是消除冗余和操作異常問(wèn)題
模式分解的三個(gè)定義:
l 分解具有“無(wú)損連接性”
l 分解要“保持函數(shù)依賴”
l 分解既要“保持函數(shù)依賴”,又要具有“無(wú)損連接性”。
關(guān)系模式分解的兩個(gè)特性實(shí)際涉及到兩個(gè)數(shù)據(jù)庫(kù)模式的等價(jià)性問(wèn)題。包括數(shù)據(jù)等價(jià)和依賴等價(jià)兩個(gè)方面:
數(shù)據(jù)等價(jià):兩個(gè)數(shù)據(jù)庫(kù)實(shí)例應(yīng)表示同樣的信息內(nèi)容,用“無(wú)損聯(lián)接”衡量。
依賴等價(jià):兩個(gè)數(shù)據(jù)庫(kù)模式應(yīng)有相互邏輯關(guān)系的函數(shù)依賴集,此時(shí)數(shù)據(jù)的語(yǔ)義是不會(huì)出現(xiàn)差錯(cuò)的。
例:關(guān)系模式 S-L-C(SNO,SDEPT,SLOC,CNO,G)中,SLOC為學(xué)生的住處,并且每個(gè)系的學(xué)生住在同一個(gè)地方。
這里碼為(SNO,CNO)。函數(shù)依賴有:
用投影分解把關(guān)系模式S-L-C分解為3NF范式,且保持函數(shù)依賴。
解法:
、 對(duì)R〈U,F〉中的函數(shù)依賴集F進(jìn)行“極小化處理”。
F= { SNO,CNO→G,SNO→SDEPT,SDEPT→SLOC }。
⑵ R中沒(méi)有不在F中出現(xiàn)的屬性。
、 不存在X→AÎF,且XA=U,接著做第 = 4 \* GB2 ⑷步。
、 對(duì)F按具有相同左部的原則分組。
r={SC{ SNO,CNO,G },SNO,CNO→G},S-D〈{ SNO,SDEPT }, SNO→SDEPT〉,
D-L〈{ SDEPT,SLOC }, SDEPT→SLOC〉}
◆范式
范式(normal form,NF)是衡量關(guān)系模式的優(yōu)劣的標(biāo)準(zhǔn)。范式有很多種,與數(shù)據(jù)依賴有著直接的聯(lián)系。
第一范式1NF
如果關(guān)系模式R中,每個(gè)分量是不可分的數(shù)據(jù)項(xiàng),就稱R屬于第一范式。
第二范式2NF
若關(guān)系模式R屬于1NF,且每個(gè)非主屬性完全函數(shù)依賴于候選關(guān)鍵字,則稱R屬于第二范式。
第三范式3NF
若關(guān)系模式R屬于1NF,且每個(gè)非主屬性都不傳遞依賴于R的候選關(guān)鍵字,則稱R屬于第三范式。
這里的主屬性是指鍵的屬性,而不是任何鍵的屬性就是非主屬性
BC范式BCNF
若關(guān)系模式R屬于1NF,且每個(gè)屬性都不傳遞依賴于R的候選關(guān)鍵字,則稱R屬于BC范式。
由上可知,4種范式之間的關(guān)系:BCNF<3NF<2NF<1NF
相關(guān)推薦:推薦:2010年計(jì)算機(jī)軟件水平考試必備完美攻略北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |