數(shù)據(jù)依賴埋嵌,通過對一個關(guān)系中屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間的相互關(guān)系破加;是現(xiàn)實世界屬性間相互聯(lián)系的抽象;是數(shù)據(jù)內(nèi)在的性質(zhì)莉恼;是語義的體現(xiàn)拌喉。
數(shù)據(jù)依賴的類型:函數(shù)依賴(FD)速那,多值依賴(MVD)俐银。
關(guān)系模式中存在的問題:數(shù)據(jù)冗余太大;更新異常端仰;插入異常捶惜;刪除異常。原因:由存在于模式中的某些數(shù)據(jù)依賴引起的荔烧。解決方法:通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴吱七。
規(guī)范化理論是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴鹤竭。
函數(shù)依賴踊餐,設(shè)R(U)是一個屬性集U上的關(guān)系模式,X和Y是U的子集臀稚。若對于R(U)的任意一個可能的關(guān)系r吝岭,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等吧寺,則稱 “X函數(shù)確定Y” 或 “Y函數(shù)依賴于X”窜管,記作X→Y。X稱為這個函數(shù)依賴的決定屬性集(Determinant)稚机。Y=f(X)幕帆。
函數(shù)依賴不是指關(guān)系模式R的某個或某些關(guān)系實例滿足的約束條件,而是指R的所有關(guān)系實例均要滿足的約束條件赖条。函數(shù)依賴是語義范疇的概念失乾,只能根據(jù)數(shù)據(jù)的語義來確定函數(shù)依賴常熙。
在關(guān)系模式R(U)中,對于U的子集X和Y仗扬,如果X→Y症概,但Y 不屬于 X,則稱X→Y是非平凡的函數(shù)依賴早芭。若X→Y彼城,但Y 屬于 X, 則稱X→Y是平凡的函數(shù)依賴。
在關(guān)系模式R(U)中退个,如果X→Y募壕,并且對于X的任何一個真子集X’,都有X’ 不決定 Y, 則稱Y完全函數(shù)依賴于X语盈,記作X F→ Y舱馅。若X→Y,但Y不完全函數(shù)依賴于X刀荒,則稱Y部分函數(shù)依賴于X代嗤,記作X P→ Y。
在關(guān)系模式R(U)中缠借,如果X→Y干毅,Y→Z,且Y 不屬于 X泼返,Y硝逢!→X,則稱Z傳遞函數(shù)依賴于X绅喉。注: 如果Y→X渠鸽, 即X←→Y,則Z直接依賴于X柴罐。
設(shè)K為關(guān)系模式R<U,F>中的屬性或?qū)傩越M合徽缚。若K F→ U,則K稱為R的一個侯選碼(Candidate Key)革屠。若關(guān)系模式R有多個候選碼凿试,則選定其中的一個做為主碼(Primary key)。
關(guān)系模式 R 中屬性或?qū)傩越MX 并非R 的碼屠阻,但 X 是另一個關(guān)系模式的碼红省,則稱 X 是R 的外部碼(Foreign key)也稱外碼。
范式是符合某一種級別的關(guān)系模式的集合国觉;關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求吧恃,滿足不同程度要求的為不同范式。
某一關(guān)系模式R為第n范式麻诀,可簡記為R∈nNF痕寓。
如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項傲醉,則R∈1NF。第一范式是對關(guān)系模式的最起碼的要求呻率,不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫硬毕;但是滿足第一范式的關(guān)系模式不一定是一個好的關(guān)系模式。
若關(guān)系模式R∈1NF礼仗,并且每一個非主屬性都完全函數(shù)依賴于R的碼吐咳,則R∈2NF。采用投影分解法將一個1NF的關(guān)系分解為多個2NF的關(guān)系元践,可以在一定程度上減輕原關(guān)系中存在的插入異常韭脊、刪除異常、數(shù)據(jù)冗余度大单旁、修改復(fù)雜等問題沪羔,但并不能完全消除各種異常和數(shù)據(jù)冗余。
關(guān)系模式R<U,F>中若不存在這樣的碼X象浑、屬性組Y及非主屬性Z(Z 不屬于 Y), 使得X→Y蔫饰,Y !→ X,Y→Z愉豺,成立篓吁,則稱R ∈ 3NF。若R∈3NF粒氧,則R的每一個非主屬性既不部分函數(shù)依賴于候選碼越除,也不傳遞函數(shù)依賴于候選碼节腐。采用投影分解法將一個2NF的關(guān)系分解成多個3NF的關(guān)系外盯,可以在一定程度上解決原關(guān)系中存在的問題,但不能完全消除翼雀。
設(shè)關(guān)系模式R<U,F>∈1NF饱苟,如果對于R的每個函數(shù)依賴X→Y,若Y不屬于X狼渊,則X必含有候選碼箱熬,那么R∈BCNF。每一個決定屬性集都包含候選碼狈邑;R中的所有屬性都完全函數(shù)依賴于碼城须。沒有任何屬性對碼的部分函數(shù)依賴和傳遞函數(shù)依賴。如果R∈3NF米苹,且R只有一個候選碼糕伐,則R必屬于BCNF。所有非主屬性完全函數(shù)依賴于每個候選碼蘸嘶;所有主屬性完全函數(shù)依賴于每個不包含它的候選碼良瞧;沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性陪汽。
關(guān)系數(shù)據(jù)庫的規(guī)范化理論是數(shù)據(jù)庫邏輯設(shè)計的工具;一個關(guān)系只要其分量都是不可分的數(shù)據(jù)項褥蚯,它就是規(guī)范化的關(guān)系挚冤,但只是最基本的規(guī)范化;規(guī)范化可以有多個不同級別赞庶。一個低一級范式的關(guān)系模式训挡,通過模式分解可以轉(zhuǎn)換為若干個高一級范式的關(guān)系模式集合,這種過程就叫關(guān)系模式的規(guī)范化歧强。
關(guān)系模式規(guī)范化的基本步驟舍哄。1NF→2NF,消除非主屬性對碼的部分函數(shù)依賴誊锭;2NF→3NF表悬,消除非主屬性對碼的傳遞函數(shù)依賴;3NF→BCNF丧靡,消除主屬性對碼的部分依賴和傳遞依賴蟆沫;BCNF→4NF,消除非平凡且非函數(shù)依賴的多值依賴温治。整體思想:消除決定屬性集非碼的非平凡函數(shù)依賴饭庞。
規(guī)范化的基本思想:消除不合適的數(shù)據(jù)依賴;各關(guān)系模式達到某種程度上的“分離”熬荆;采用“一事一地”的模式設(shè)計原則舟山;所謂規(guī)范化實質(zhì)上是概念的單一化。
對于滿足一組函數(shù)依賴 F 的關(guān)系模式R<U,F>卤恳,其任何一個關(guān)系r累盗,若函數(shù)依賴X→Y都成立, 則稱F邏輯蘊含X →Y。
一套推理規(guī)則突琳,是模式分解算法的理論基礎(chǔ)若债。用途:求出給定關(guān)系模式的碼;從一組函數(shù)依賴求得蘊含的函數(shù)依賴拆融。
Armstrong公理系統(tǒng)蠢琳。關(guān)系模式R<U,F>來說有以下的推理規(guī)則: Al.自反律(Reflexivity):若Y 屬于?X 屬于 U,則X →Y為F所蘊含镜豹。 A2.增廣律(Augmentation):若X→Y為F所蘊含傲须,且Z 屬于 U,則XZ→YZ為F所蘊含趟脂。A3.傳遞律(Transitivity):若X→Y及Y→Z為F所蘊含泰讽,則X→Z為F所蘊含。
導(dǎo)出規(guī)則。合并規(guī)則:由X→Y菇绵,X→Z肄渗,有X→YZ。(A2咬最, A3)偽傳遞規(guī)則:由X→Y翎嫡,WY→Z,有XW→Z永乌。(A2惑申, A3)分解規(guī)則:由X→Y及 Z屬于Y,有X→Z翅雏。(A1圈驼,A3)
根據(jù)合并規(guī)則和分解規(guī)則,X→A1 A2…Ak成立的充分必要條件是X→Ai成立(i=l望几,2绩脆,…,k)橄抹。
在關(guān)系模式R<U,F>中為F所邏輯蘊含的函數(shù)依賴的全體叫作 F的閉包靴迫,記為F+。
設(shè)F為屬性集U上的一組函數(shù)依賴楼誓,X屬于U玉锌, XF+ ={ A|X→A能由F 根據(jù)Armstrong公理導(dǎo)出},XF+稱為屬性集X關(guān)于函數(shù)依賴集F 的閉包疟羹。
設(shè)F為屬性集U上的一組函數(shù)依賴主守,X,Y 屬于 U榄融,X→Y能由F 根據(jù)Armstrong公理導(dǎo)出的充分必要條件是Y 屬于 XF+参淫。
如果G+=F+,就說函數(shù)依賴集F覆蓋G(F是G的覆蓋剃袍,或G是F的覆蓋)黄刚,或F與G等價捎谨。F+ = G+ 的充分必要條件是F 屬于 G+民效,和G 屬于 F+。
如果函數(shù)依賴集F滿足下列條件涛救,則稱F為一個極小函數(shù)依賴集畏邢。亦稱為最小依賴集或最小覆蓋。F中任一函數(shù)依賴的右部僅含有一個屬性检吆;F中不存在這樣的函數(shù)依賴X→A舒萎,使得F與F-{X→A}等價;F中不存在這樣的函數(shù)依賴X→A蹭沛,X有真子集Z使得F-{X→A}?∪ {Z→A}與F等價臂寝。
每一個函數(shù)依賴集F均等價于一個極小函數(shù)依賴集Fm章鲤。此Fm稱為F的最小依賴集。
三種模式分解的等價定義:分解具有無損連接性咆贬;分解要保持函數(shù)依賴败徊;分解既要保持函數(shù)依賴,又要具有無損連接性掏缎。
關(guān)系模式R<U,F>的一個分解:ρ={ R1<U1,F1>皱蹦,R2<U2,F2>,…眷蜈,Rn<Un,Fn>}沪哺,U=U1∪U2∪…∪Un,且不存在 Ui 屬于 Uj酌儒,F(xiàn)i 為 F在 Ui 上的投影辜妓。
函數(shù)依賴集合{X→Y | X→Y 屬于 F+∧XY 屬于 Ui}的一個覆蓋 Fi 叫作 F 在屬性 Ui 上的投影。
關(guān)系模式R的一個分解 ρ={ R1忌怎,R2嫌拣, …,Rn}呆躲。若R與R1异逐、R2、…插掂、Rn自然連接的結(jié)果相等灰瞻,則稱關(guān)系模式R的這個分解ρ具有無損連接性(Lossless join)。具有無損連接性的分解保證不丟失信息辅甥;無損連接性不一定能解決插入異常酝润、刪除異常、修改復(fù)雜璃弄、數(shù)據(jù)冗余等問題要销。
設(shè)關(guān)系模式R被分解為若干個關(guān)系模式R1,R2夏块,…疏咐,Rn(其中U=U1∪U2∪…∪Un,且不存在Ui 屬于 Uj脐供,F(xiàn)i為F在Ui上的投影)浑塞,若F所邏輯蘊含的函數(shù)依賴一定也由分解得到的某個關(guān)系模式中的函數(shù)依賴Fi所邏輯蘊含,則稱關(guān)系模式R的這個分解是保持函數(shù)依賴的(Preserve dependency)政己。
如果一個分解具有無損連接性酌壕,則它能夠保證不丟失信息;如果一個分解保持了函數(shù)依賴,則它可以減輕或解決各種異常情況卵牍;分解具有無損連接性和分解保持函數(shù)依賴是兩個互相獨立的標(biāo)準(zhǔn)果港。具有無損連接性的分解不一定能夠保持函數(shù)依賴。同樣糊昙,保持函數(shù)依賴的分解也不一定具有無損連接性京腥。
判別一個分解的無損連接性。建立一個n列k行的表溅蛉。填入ai公浪,或bij;對每個函數(shù)依賴做下列操作:找到Xi所對應(yīng)的列中具有相同符號那些行船侧,若其中有ai 欠气,則全部改成ai ;否則全部行號最小的bij 镜撩。若某個bij被更改预柒,那么該表中其它相同bij均做相同的更改;比較掃描后有無變化袁梗,無變化則終止宜鸯。若表中有全a行,則分解具有無損連接性遮怜。