一、數(shù)據(jù)關(guān)系
關(guān)系數(shù)據(jù)庫可能存在的問題
1.數(shù)據(jù)冗余(必然存在并炮,但應(yīng)該盡量少)
2.更新冗余
3.插入冗余
4.刪除冗余
數(shù)據(jù)依賴(屬性之間以值是否相等體現(xiàn)出來的一種約束關(guān)系)
1)函數(shù)依賴(給定元組中的一些屬性,可確定另外的屬性必然的取值--一個)
--非平凡的函數(shù)依賴:Y依賴于X,Y不包含于X
--平凡函數(shù)依賴:Y依賴于X,且Y包含于X
--互相函數(shù)依賴:X依賴于Y,Y依賴于X
--完全函數(shù)依賴:Y依賴于X,但Y不依賴與X的任意真子集
--部分函數(shù)依賴:Y依賴于X,且Y不完全依賴于X
--傳遞函數(shù)依賴:Y非平凡依賴于X,且Y與X不是互相函數(shù)依賴,Z非平方依賴于Y滑沧,則Z對X傳遞依賴
2)多值依賴(給定元組中的一些屬性媳禁,可確定另外的屬性可能的取值--一組)
--含義:X, Y, Z三個屬性集之和是屬性集U,多值依賴X->->Y成立當(dāng)且僅當(dāng)對R(U)的任一個關(guān)系r肪康,r在(X,Z)上的每個值對應(yīng)一組Y的值,這組值僅決定于X值而與Z值無關(guān)撩穿。
--平凡的多值依賴(集合屬性中分為兩個真子集):Z=空集
--非平凡的多值依賴:Z≠空集
--對稱性:若Y多值依賴于X磷支,則Z也多值依賴于X
--傳遞性:若Y多值依賴于X,Z多值依賴于Y,則X多值依賴于Z-Y
--若Y依賴于X食寡,則Y也多值依賴于X
碼(一碼定一組)
--候選碼:屬性集合完全函數(shù)依賴于候選碼(候選碼是不可分割的主屬性集合雾狈,分了就不是候選碼了),主碼是候選碼抵皱,候選碼不一定是主碼
--超碼:屬性集合部分函數(shù)依賴于超碼
--主屬性:包含在候選碼中的屬性
--非主屬性:不包含在任何候選碼中的屬性
--全碼:整個屬性組都是主碼或者候選碼
--外碼:本關(guān)系模式中某個屬性或?qū)傩越M是非碼善榛,但這個屬性或者屬性組是另一個關(guān)系模式的碼
二、范式(低一級范式關(guān)系模式可以通過模式分解轉(zhuǎn)換成多個高一級的關(guān)系模式的集合)
第一范式(1NF):每個分量都是不可分的基本數(shù)據(jù)項
--意義:關(guān)系數(shù)據(jù)庫的基本要求叨叙,防止出現(xiàn)表中表的情況锭弊,當(dāng)然某些時候這也是可以做出讓步的,比如個人表的家庭住址╮(╯▽╰)╭
--設(shè)計:每列都是基本數(shù)據(jù)項擂错,原子數(shù)據(jù)
第二范式(2NF):若R∈1NF味滞,且每個非主屬性完全函數(shù)依賴于任何一個候選碼
--意義:在第一范式的基礎(chǔ)上消除了非主屬性對碼的部分函數(shù)依賴,從而減少了數(shù)據(jù)冗余、更新異常剑鞍、插入異常和刪除異常
--設(shè)計:碼的真子集不是碼
第三范式(3NF):若R∈2NF昨凡,且R中不存在非主屬性對碼的傳遞依賴(一般走到這)
--意義:在第二范式的基礎(chǔ)上消除了非主屬性對碼的傳遞依賴,從而減少了數(shù)據(jù)冗余蚁署、更新異常便脊、插入異常和刪除異常
--設(shè)計:表中主鍵是唯一碼(或者本表僅僅有兩個碼,且兩碼互為補集)光戈、若外碼存在哪痰,則外碼應(yīng)是其原表的主鍵
BCNF(擴(kuò)充的第三范式):若R∈1NF,當(dāng)Y非平凡函數(shù)依賴于X時久妆,X必有碼
--意義:第三范式的基礎(chǔ)上消除主屬性對于碼的部分依賴與傳遞函數(shù)依賴晌杰,減少了刪除異常、插入異常和更新異常
--設(shè)計:不同主屬性相互無依賴關(guān)系
第四范式(4NF):若R∈1NF筷弦,當(dāng)Y非平凡多值依賴于X時肋演,X必有碼
--意義:屬性之間不允許有非平凡且非函數(shù)依賴的多值依賴,減少維護(hù)數(shù)據(jù)一致性的工作
--設(shè)計:兩個互補的屬性集合烂琴,且都是碼爹殊,即全碼,才允許有多對多的關(guān)系出現(xiàn)奸绷,否則本表只允許一對一的函數(shù)依賴關(guān)系
第五范式(5NF):將表切割成盡量小的塊梗夸,排除所有的冗余(一般不會走到這步)
三、數(shù)據(jù)依賴的公理系統(tǒng)(Armstrong公理系統(tǒng))
設(shè)U為屬性集總體健盒,F(xiàn)是U上的一組函數(shù)依賴绒瘦,于是有關(guān)系模式R<U,F>,對R<U,F>有以下推理規(guī)則:
自反律
若Y?X?U,則X→Y為F所蘊含
增廣律
若X→Y為F所蘊含,且Z?U扣癣,則X∪Z→Y∪Z為F所蘊含
傳遞律
若X→Y為F所蘊含,且Y→Z為F所蘊含憨降,則X→Z為F所蘊含
合并規(guī)則
若X→Y,X→Z,則 X→Y∪Z
分解規(guī)則
若X→Y, 且Z?Y父虑,則X→Z
偽傳遞規(guī)則
若X→Y,WY→Z授药,則WX→Z
函數(shù)依賴集等價
--若F的函數(shù)依賴集閉包=G的函數(shù)依賴集閉包士嚎,則說F覆蓋G,反之亦可,也可以說F與G等價
閉包(函數(shù)依賴集悔叽,屬性集)
--函數(shù)依賴集的閉包:在關(guān)系模式<R,F>中為F所邏輯蘊含的函數(shù)依賴的全體稱為F的閉包
--屬性集的閉包:在關(guān)系模式<R,F>中莱衩,能由F根據(jù)Armstrong公理導(dǎo)出的對X函數(shù)依賴的所有屬性集的并集稱為X關(guān)于函數(shù)依賴集F的閉包
Armstrong公理是有效的,完備的:
--有效性:由F出發(fā)娇澎,根據(jù)Armstrong公理推導(dǎo)出來的每一個函數(shù)依賴一定在F的閉包中
--完備性:F的函數(shù)依賴集的閉包的每個函數(shù)依賴笨蚁,必定可以由F出發(fā)根據(jù)Armstrong公理推導(dǎo)出來
極小依賴集
--F中任一函數(shù)依賴表達(dá)式的箭頭右邊只有一個屬性,即是說F中的每個函數(shù)依賴都只能決定一個屬性,沒有冗余的被決定屬性
--F中不存在函數(shù)依賴X→A使F等價F-{X→A},即是說F中的函數(shù)依賴都是不可缺少的括细,換句話說F中沒有冗余的函數(shù)依賴
--F中不存在函數(shù)依賴X→A伪很,Z?X,使F-{X→A}∪{Z→A}與F等價,即是說函數(shù)依賴表達(dá)式的決定因素應(yīng)該盡可能簡奋单,沒有真子集與其等價锉试,決定因素中無冗余屬性
--總結(jié):對F而言,沒有冗余的函數(shù)依賴項览濒,對函數(shù)依賴表達(dá)式而言呆盖,決定因素盡量精簡(有時候決定因素必須為多個屬性,所以只能盡量精簡)贷笛,被決定因素只有一個屬性絮短。
最小覆蓋(最小函數(shù)依賴集)
每個函數(shù)依賴集均等價于一個極小函數(shù)依賴集F',稱F'為F的最小依賴集
模式分解(屬性是分配的基本單位)
分解后函數(shù)關(guān)系講不明白昨忆,就跳過了丁频,只講判定方法和分解方法
模式分解的意義:
--因為現(xiàn)有的模式可能會存在一些數(shù)據(jù)增刪改的弊端,需要尋找一種等價的關(guān)系模式,使得以上弊端得以解決
無損分解:
--對關(guān)系模式分解時邑贴,原關(guān)系模型下任一合法的關(guān)系值在分解之后應(yīng)能通過自然聯(lián)接運算恢復(fù)起來席里,即未丟失信息的分解即無損分解。反之拢驾,則稱為有損分解
判定公式:對于R<U,F>的一個分解ρ={R[1]<U[1],F[1]>,R[2]<U[2],F[2]>},如果U[1]∩U[2]→U[1]-U[2]∈F的閉包
建議:對著實例調(diào)試一次就都知道了奖磁,官方說法太玄了
分解的限制:
1.要求保留函數(shù)依賴(數(shù)據(jù)間關(guān)系),一定可以達(dá)到3NF,但是不一定能達(dá)到BCNF繁疤,此時可以還做到無損連接
2.只要求分解具有無損連接性咖为,則一定可以達(dá)到4NF
分解算法
(1)得到保留函數(shù)依賴的3NF(合成法):
--將R<U,F>中的F極小化處理,得到F"
--找出所有不在F"中出現(xiàn)的屬性稠腊,記為U",把這些屬性構(gòu)成一個關(guān)系模式R"<U"',F"'>,把這些屬性從U中去掉躁染,得到U"
①--若有X→A∈F",且XA=U",則ρ={R},結(jié)束
②--或者,對F按具有相同左部(決定因素)的原則分k組架忌,每組函數(shù)依賴集涉及的全部屬性形成一個屬性集U[i]分別組成對應(yīng)的R[i]關(guān)系模式吞彤,算法結(jié)束。此時的ρ={R[1]<U[1],F[1]>,...R[k]<U[k],F[k]>∪R"<U"',F"'>}是R<U,F>的保留函數(shù)依賴的一個分解叹放,且對于每個R[i]都屬于3NF
(2)保留函數(shù)依賴和無損連接的3NF
--設(shè)X是R<U,F>的碼饰恕,R已由合成法分解為ρ,令t=ρ∪{R*<X,F[x]>(R*中只有碼)}
--若有某個U[i],X?U[i],將R*<X,F[x]>從t中去掉井仰,或者U[i]?X埋嵌,將R<X,F[x]>從t中去掉。這步得到t'
--t'就是所求的分解
--即是說:合成法的計算結(jié)果ρ與由原表的主屬性組成新表r取并俱恶,且用r與ρ中的子表U[i]進(jìn)行對比雹嗦,去除冗余的表(包含r時r冗余范舀,被r包含時U[i]冗余)
(3)轉(zhuǎn)化為BCNF的無損連接分解(僅①適用)
--將分解ρ的子表中可以起決定因素作用的主屬性集(無法構(gòu)成碼)與其被決定因素單獨提取成一個新表,原R[i]中刪除掉對應(yīng)的被決定屬性
(4)U=X+Y+Z如果R<U,D>中X→→Y成立俐银,則R的分解ρ={R[1]<X尿背,Y>,R[2]<X,Z>}具有無損連接性
--即是說:將多值依賴的不符合4NF的表分解為多個函數(shù)依賴的表