關聯式資料庫的模式設計
本章的理論性較強,學習時有無從下手的感覺,在學習時應多加思考,從概念出發去理解理論,前後的理論有較強的聯絡,因此要逐個理解,但對於理論的證明等內容則不必深究,本章重點是函式依賴,無損聯接、保持依賴和正規化的概念。
一、關係模式的設計問題( 識記 )
關聯式資料庫 是以關係模型為基礎的資料庫,它利用關係來描述現實世界。乙個關係既可以用來描述乙個實體及其屬性 ,也可以用來描述實體間的聯絡。關係實質上就是一張二維表 ,表的 行稱為元組 ,列稱為屬性 .
關係模式是用來定義關係的,這裡的關係模式我們可以簡單地理解為乙個表的結構,乙個關聯式資料庫包含一組關係,也就是包含一組二維表,這些二維表結構體的集合就構成資料庫的模式(也可以理解為資料庫的結構)。
關聯式資料庫 設計理論包括三個方面內容: 資料依賴 、正規化 、模式設計方法。核心內容是資料依賴。
泛關係模式 :把現實問題的所有屬性組成乙個關係模式r(u),這個關係模式就稱為泛關係模式。
資料庫模式 :把泛關係模式用一組關係模式的集合ρ來表示時,這個ρ就是資料庫模式。
二、函式依賴(fd)
1、函式依賴的定義 ( 領會 ):設有關係模式r(a1,a2,……an)或簡記為r(u),x,y是u的子集,r是r的任一具體關係,如果對r的任意兩個元組t1,t2,由t1[x]=t2[x]導致t1[y]=t2[y],則稱x函式決定y,或y函式依賴於x,記為x→y.x→y為模式r的乙個函式依賴。
這個定義可以這樣理解 :有一張設計好的二維表,x,y是表的某些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上的x值相等,那麼必有t1行和t2行上的y值也相等,這就是說y函式依賴於x.
2、函式依賴的邏輯蘊涵 ( 識記 )
設f是關係模式r的乙個函式依賴集,x,y是r的屬性子集,如果從f中的函式依賴能夠推出x→y,則稱f邏輯蘊涵x→y,記為f|=x→y.
而函式依賴的閉包f + 是指被f邏輯蘊涵的函式依賴的全體構成的集合。
3、鍵和fd的關係 ( 領會 )
鍵是唯一標識實體的屬性集。對於鍵和函式依賴的關係:有兩個條件:設關係模式r(a1,a2……an),f是r上的函式依賴集,x是r的乙個子集,
(1)x→a1a2……an∈f + (它的意思是x能夠決定唯一的乙個元組)
(2)不存在x的真子集y,使得y也能決定唯一的乙個元組,則x就是r的乙個候選鍵。(它的意思是x能決定唯一的乙個元組但又沒有多餘的屬性集)
包含在任何乙個候選鍵中的屬性稱為主屬性 ,不包含在任何鍵中的屬性為非主屬性(非鍵屬性),注意主屬性應當包含在候選鍵中。
4、函式依賴(fd)的推理規則 ( 簡單應用 )
前面我們舉的例子中是以實際經驗來確定乙個函式依賴的邏輯蘊涵,但是我們需要乙個推理規則才能完全確定f或f+的所有函式依賴。
設有關係模式r(u),x,y,z,w均是u的子集,f是r上只涉及到u中屬性的函式依賴集,推理規則如下:
自反律 :如果y x u,則x→y在r上成立。
增廣律 :如果x→y為f所蘊涵,z u,則xz→yz在r上成立。(xz表示x∪z,下同)
傳遞律 :如果x→y和y→z在r上成立,則x→z在r上成立。
合併律 :如果x→y和x→z成立,那麼x→yz成立。
偽傳遞律 :如果x→y和wy→z成立,那麼wx→z成立。
分解律 :如果x→y和z y成立,那麼x→z成立。
5、函式依賴推理規則的完備性 ( 識記 )
函式依賴推理規則系統(自反律、增廣律和傳遞律)是完備的。由推理規則的完備性可得到兩個重要結論:
屬性集x + 中的每個屬性a,都有x→a被f邏輯蘊涵,即x + 是所有由f邏輯蘊含x→a的屬性a的集合。
f + 是所有利用amstrong推理規則從f匯出的函式依賴的集合
6、函式依賴集的等價和覆蓋 ( 識記)
在關係模式r(u)上的兩個函式依賴集f和g,如果 滿足f + =g + ,則稱f和g是 等價 的,稱f和g等價也稱f 覆蓋 g或g覆蓋f.
每個函式依賴集f都可以被乙個 右部只有單屬性的函式依賴集 g所覆蓋。
如果函式依賴集合f滿足:
(1)f中每乙個函式依賴的右部都是單屬性;
(2)f中的任一函式依賴x→a,其f-是不等價的;
(3)f中的任一函式依賴x→a,z為x的子集。(f-)∪與f不等價。
則稱f為最小函式依賴集合。
如果函式依賴集f和g等價,並且g是最小集,那麼稱g是f的乙個 最小覆蓋 .
這一段並不要求掌握最小集的求法,但是應當通過其求法理解最小集的概念 .
三、關係模式的分解特性
1、 模式分解中存在的問題 :( 識記 )
模式分解 就是將乙個泛關係模式 r分解成 資料庫模式ρ ,以ρ代替r的過程。它不僅僅是屬性集合的分解,它是對關係模式上的函式依賴集、以及關係模式的當前值分解的具體表現。
分解乙個模式有很多方法,但是有的分解會出現失去函式依賴、或出現插入、刪除異常等情況,而有的分解則不出現相關問題。
衡量乙個分解的標準有三種: 分解具有無損聯接 ; 分解要保持函式依賴 ;分解 既要保持依賴,又要具有無損聯接 .
那麼什麼是無損聯接呢?什麼又是保持依賴?
2、 無損聯接的定義和性質 ( 識記 )
設r是一關係模式,分解成ρ=,f是r上的乙個函式依賴集。無損聯接就是指r中每乙個滿足f的關係r(也就是乙個關係例項)都有r=π r1 (r)|x|π r2 (r)……|x|π r3 (r),即r為它在ri上的投影的自然聯接。
最簡單的理解, 也就是說,分解後的關係 自然連線後 完全等於 分解前的 關係,則這個分解相對於f是無損聯接分解。
設r的分解為ρ=,f為r所滿足的函式依賴集,則分解ρ具有無損聯接性的 充分必要條件 是:
r1∩r2→(r1-r2)
r1∩r2→(r2-r1)
也就是說,分解後的兩個模式的交能決定這兩個模式的差集,即r1、r2的公共屬性能夠函式決定r1或r2中的其他屬性 ,這樣的分解就必定是無損聯接分解 .
3、 保持函式依賴的分解 ( 識記 )
在分解過程中,要求模式分解的無損聯接是必要的,只有無損聯接分解才能保證任何乙個關係能由它的那些投影進行自然聯接得到恢復。
同時,分解關係模式時還應保證關係模式的函式依賴集在分解後仍在資料庫模式中保持不變,這就是保持函式依賴的問題。也就是所有分解出的模式所滿足的函式依賴的全體應當等價於原模式的函式依賴集。只有這樣才能確保整個資料庫中資料的語義完整性不受破壞。
四、關係模式的正規化( 領會 )
1、1nf、2nf、3nf、bcnf的定義:
1nf:第一正規化 .
即關係模式中的屬性的 值域 中 每乙個值 都是 不可再分解 的值。如果某個資料庫模式都是第一正規化的,則稱該資料庫模式是屬於第一正規化的資料庫模式
2nf:第二正規化 .
如果關係模式r為 第一正規化 ,並且r中每乙個 非主屬性 完全函式依賴於 r的某個候選鍵,則稱為 第二正規化模式 .
在這裡要先了解「非主屬性」、「完全函式依賴」、「候選鍵」這三個名詞的含義。
候選鍵 就是指可以唯一決定關係模式r中某元組值且不含有多餘屬性的屬性集。
非主屬性 也就是非鍵屬性,指關係模式r中不包含在任何建中的屬性。
設有函式依賴w→a,若存在x w,有x→a成立,那麼稱w→a是區域性依賴,否則就稱w→a是 完全函式依賴 .
在分析是否為第2正規化時,應 首先確定 候選鍵 ,然後把關係模式中的非主屬性與鍵的依賴關係進行考察,是否都為完全函式依賴,如是,則此關係模式為2nf.如果資料庫模式中每個關係模式都是2nf的,則此資料庫模式屬於2nf的資料庫模式。
3nf:第三正規化 .
如果關係模式r是 第二正規化 ,且 每 個 非主屬性 都 不 傳遞依賴 於r的 候選鍵 ,則稱r為第三正規化的模式。
這裡首先要了解 傳遞依賴 的含義: 在關係模式中,如果y→x,x→a,且x不決定y和a不屬於x,那麼y→a是傳遞依賴。
注意的是,這裡要求非主屬性都不傳遞依賴於候選鍵。
bcnf :這個正規化和第三正規化有聯絡,它是3nf的改進形式。若關係模式r是 第一正規化 ,且 每個屬性 都 不 傳遞依賴於r的候選鍵。這種關係模式就是bcnf模式。
縱觀四種正規化,可以發現它們之間存在如下關係:
5、 分解成bcnf模式集的演算法( 識記 )
對於任一關係模式,可找到乙個分解達到3nf,且具有無損聯接和保持函式依賴性。而對於bcnf分解,則可以保證無損聯接但不一定能保證保持函式依賴集。
無損聯接分解成bcnf模式集的演算法:
(1)置初值ρ=;
(2)如果ρ中所有關係模式都是bcnf,則轉(4);
(3)如果ρ中有乙個關係模式s不是bcnf,則s中必能找到乙個函式依賴集x→a有x不是s的鍵,且a不屬於x,設s 1 =xa,s 2 =s-a,用分解s 1 ,s 2 代替s,轉(2);
(4)分解結束。輸出ρ。
在這個過程中, 重點在於(3)步 ,判斷哪個關係不是bcnf,並找到x和a.這裡,s的判斷用bcnf的定義,而x不是s的鍵則依靠分析。
6、 分解成3nf模式集( 識記 )
演算法:(1)如果r中的某些屬性在f的所有依賴的左邊和右邊都不出現,那麼這些屬性可以從r中分出去,單獨構成乙個關係模式。
(2)如果f中有乙個依賴x→a有xa→r,則ρ=,轉(4)
(3)對於f中每乙個x→a,構成乙個關係模式xa,如果f有有x→a 1 ,x→a 2 ……x→a n ,則可以用模式xa 1 a 2 ……a n 代替n個模式xa 1 ,xa 2 ……xa n ;
(4)w分解結束,輸入ρ。
這個過程的 重點是這一句 「對於f中每乙個x→a,構成乙個關係模式xa」,這使我們的分解十分容易,然後依據合併律(合併律:如果x→y和x→z成立,那麼x→yz成立)將有關模式合併即得到所需3nf模式。
7、 模式設計方法的原則( 識記 )
關係模式r相對於函式依賴集f分解成資料庫模式ρ=,一般具有下面 四項特性 :
ρ中每個關係模式r i 上應具有某種 正規化性質 (3nf或bcnf)
無損聯接 性。
保持函式依賴 集。
最小性 ,即ρ中模式個數應最少且模式中屬性總數應最少。
乙個好的模式設計方法應符合下列三條原則:
表達性分離性
最小冗餘性
8、多值依賴。簡單了解一下。
關聯式資料庫設計理論
資料依賴是通過乙個關係中屬性間值的相等與否體現出來的資料間的相互關係,是現實世界屬性間相互聯絡的抽象,是資料內在的性質,是語義的體現。現在人們已經提出了很多種型別的資料依賴,其中最重要的是函式依賴 fd 和多值依賴 mvd 規範化理論致力於解決關係模式中不適合的資料依賴問題。而函式依賴和多值依賴是最...
資料庫筆記(三)關聯式資料庫設計理論
sname sdept mname cname grade 1學生 1 學院 1 院長 1 課程 1902 學生 2 學院 2 院長 2 課程 2802 學生 2 學院 2 院長 2 課程 1 100修改異常 修改了乙個記錄中的資訊,但是另乙個記錄中相同的資訊卻沒有被修改。刪除異常 刪除乙個資訊,那...
關係模式正規化級別判斷 關聯式資料庫設計理論
函式依賴 記 a b 表示 a 函式決定 b,也可以說 b 函式依賴於 a。如果 是關係的乙個或多個屬性的集合,該集合函式決定了關係的其它所有屬性並且是最小的,那麼該集合就稱為鍵碼。對於 a b,如果能找到 a 的真子集 a 使得 a b,那麼 a b 就是部分函式依賴,否則就是完全函式依賴。對於 ...