1、黃三益2008 資料庫的核心理論與實務第四版,8-1,第八章 正規化,好的關聯綱目特性意義明確資料不重複儲存屬性值很少有空值關聯的JOIN不會產生虛假序列值函數相依基本正規化第一正規式第二正規式第三正規式進階正規式Boyce-Codd正規式第四正規式第五正規式,黃三益2008 資料庫的核心理論與實務第四版,8-2,好的關聯綱目特性,意義明確 記載迷你世界裡的同一類實體或關係以下的關聯包括現實世界裡的交易和會員實體,所以意義不明確,黃三益2008 資料庫的核心理論與實務第四版,8-3,好的關聯綱目特性(Cont.),資料不重複儲存空間浪費更新異常以下關聯(OrderProduct)裡任賢齊專輯三
2、的資料重複儲存,黃三益2008 資料庫的核心理論與實務第四版,8-4,好的關聯綱目特性(Cont.),有三種更新異常新增異常INSERT INTO TransactionMember(tNo, mId, name)VALUES (93000, c0927777, Chen) ;刪除異常DELETETransactionMemberWHERE tNo = 90111;修改異常UPDATE TransactionMemberSET name = HuangWHERE tNo = 92333;,黃三益2008 資料庫的核心理論與實務第四版,8-5,練習8-1,考慮圖8-2(b)的OrderProdu
3、ct範例關聯,請問刪除哪一筆記錄後會造成刪除異常? Ans:除了第3筆和第8筆記錄外 ,刪除其他記錄都會造成該商品資訊消失,而形成刪除異常。,黃三益2008 資料庫的核心理論與實務第四版,8-6,好的關聯綱目特性(Cont.),屬性值很少有空值一個設計不良的綱目可能會造成有些屬性有許多空值 缺點浪費空間 彙總函數應用在有空值的屬性時,其意義不明確 空值的含義不唯一,黃三益2008 資料庫的核心理論與實務第四版,8-7,好的關聯綱目特性(Cont.),以上三種問題都是因為關聯裡有太多屬性但將一個關聯切割成兩個時,不可以亂切如下頁圖關聯的RecordProduct關聯不可以切成Record2和Pr
4、oduct2兩個關聯因為將Reocrd2和Product2關聯JOIN後產生虛假序列值產生了兩筆虛假序列值(以藍色底色顯示),黃三益2008 資料庫的核心理論與實務第四版,8-8,好的關聯綱目特性(Cont.),若將一個關聯綱目分解成數個,分解的方式要注意 無損JOIN的分解(Lossless join decomposition):切割之後的兩個關聯,其共同屬性必須是其中一個關聯的關聯鍵上例的分解(Product2和Record2關聯)不滿足無損JOIN的分解,因為共同屬性category在兩個關聯裡都不是關聯鍵,黃三益2008 資料庫的核心理論與實務第四版,8-9,黃三益2008 資料庫的
5、核心理論與實務第四版,8-10,函數相依,定義:兩個(群)屬性間存在的一種類似函數(function)裡定義域(domain)和對應域(co-domain)的關係mIdname, birthday 每個mId剛好有一組name, birthday不會有一個mId有兩組或以上的name, birthday請注意name mId不成立因為可能有同名同姓的會員 對於函數相依XY, 我們稱 X決定Y 或Y 函數相依於X,黃三益2008 資料庫的核心理論與實務第四版,8-11,函數相依(Cont.),根據定義,一個關聯的任何關聯鍵皆可決定其所有屬性屬性和屬性間的函數相依是一種語意的關係,必須由人工仔細推
6、敲來訂定但有些函數相依仍然可以有規則可以推論而得,黃三益2008 資料庫的核心理論與實務第四版,8-12,函數相依(Cont.),函數相依的推導規則IR1:X Y XYIR2:XY XZYZIR3:XY , YZ XZ一個屬性集合的泛封閉集合:給定一些函數相依,我們可以推導出這些屬性可以決定的所有屬性,稱為泛封閉集合,黃三益2008 資料庫的核心理論與實務第四版,8-13,函數相依(Cont.),圖8-7(a)tNo+ = tNo, transmId, method, transTime, pId, name, birthdaytransMid+ = transMid, pId, name,
7、birthday 圖8-7(b) pNo+ = pNo, pName, unitPrice, categorymId, cartTime, pNo+ = mId, cartTime, pNo, amount, pName, unitPrice, category,黃三益2008 資料庫的核心理論與實務第四版,8-14,練習8-2,由圖8-7(b)的函數相依,計算mId, pNo+ Ans:pNo+ = pNo, pName, unitPrice, categorymId, pNo+ = mId, pNo, pName, unitPrice, category,黃三益2008 資料庫的核心理論與
8、實務第四版,8-15,正規化,定義:將關聯綱目轉化成正規式的過程基本正規式第一正規式第二正規式第三正規式高等正規式BCNF第四正規式第五正規式,黃三益2008 資料庫的核心理論與實務第四版,8-16,第一正規式,R滿足第一正規式(1NF)如果R的每個屬性都是簡單且單值每個合法的關聯綱目都滿足第一正規式如何分解多值屬性 處理方式一:維持同樣的屬性,但關聯主鍵要加上該多值屬性。處理方式二:產生另一個關聯,此關聯包括原主鍵和該多值屬性,黃三益2008 資料庫的核心理論與實務第四版,8-17,多值屬性處理方式一,黃三益2008 資料庫的核心理論與實務第四版,8-18,多值屬性處理方式二,黃三益2008
9、 資料庫的核心理論與實務第四版,8-19,練習8-3,考慮圖8-8(a)的Transaction_Product,請用第二種方式將其變成1NFAns:,黃三益2008 資料庫的核心理論與實務第四版,8-20,第二正規式,第二正規式(簡稱2NF)是根據完全函數相依的概念一個函數相依XY,如果我們可以從X裡找出部分元素X,使得XY仍然成立,則稱XY為一個部分函數相依否則稱XY為完全函數相依下圖OrderProduct關聯裡 mId, cartTime, pNopName是一個部分函數相依 因為存在pNopNamemId, cartTime, pNoamount是一個完全函數相依,黃三益2008 資
10、料庫的核心理論與實務第四版,8-21,第二正規式(Cont.),一個關聯綱目R滿足第二正規式(2NF)如果 對於R的每一個關聯鍵K,所有非K的屬性都完全函數相依於K下圖的OrderProduct關聯綱目不滿足2NF,因為pName部分函數相依於主鍵Because pNo pName,黃三益2008 資料庫的核心理論與實務第四版,8-22,第二正規式(Cont.),可以將OrderProduct關聯分解成Order和Product兩個關聯,便滿足2NF。如下:,黃三益2008 資料庫的核心理論與實務第四版,8-23,第二正規式(Cont.),下圖的TransactionMember 關聯有一個次
11、要鍵(transMid, seq)name部分函數相依於transMid, seq ,因此不滿足2NF 可分解成Transaction和Member兩個關聯,以滿足2NF,黃三益2008 資料庫的核心理論與實務第四版,8-24,練習8-4,考慮圖8-8(b)的Transaction_Product關聯綱目,請問其是否滿足2NF?Ans因為tNo,product transMid, method, transTime , 且tNo transMid, method, transTime所以, transMid, method, transTime為部份函數相依於tNo, product,故不符合
12、第二正規式,黃三益2008 資料庫的核心理論與實務第四版,8-25,第三正規式,第三正規式(簡稱3NF)是根據遞移函數相依的概念 對於一個函數相依XY,如果存在著另外兩個函數相依:XZ和ZY,且Z不為超級鍵,則稱XY為遞移函數相依 下圖TransactionMember關聯 tNoname是一個遞移函數相依 因為tNotransMid且 transMid name,且transMid不為超級鍵,黃三益2008 資料庫的核心理論與實務第四版,8-26,第三正規式(Cont.),一個關聯綱目R滿足3NF,如果R滿足2NF。對於每一個關聯鍵K,R的每一個非鍵屬性都不可遞移函數相依於K Transac
13、tionMember不滿足3NF tNoname是一個遞移函數相依,而tNo為主鍵,8-27,第三正規式(Cont.),可分解如下:,黃三益2008 資料庫的核心理論與實務第四版,8-28,練習8-5,考慮下圖Member關聯的函數相依,有人說此關聯不滿足3NF,因為mIdname是遞移函數相依,可以由mIdpId和pIdname推導而得。你認為呢?Ans:如上圖函數相依所示, 雖然mIdpId且pIdname , 但是考慮遞移函數相依的定義:若存在XZ和ZY,且Z不為超級鍵,則稱XY為遞移函數相依。因為pId是屬於Member的身分證字號,已是唯一的資料,也就是超級鍵。所以mIdname並不
14、是遞移函數相依。因此Member關聯滿足3NF,黃三益2008 資料庫的核心理論與實務第四版,8-29,Boyce-Codd正規式,一個關聯綱目R滿足BCNF,如果對於R的每一個函數相依AB,A都是超級鍵滿足BCNF的關聯綱目必然也滿足2NF和3NF若R不滿足2NF,則對於一個關聯鍵X來說,存在著部分函數相依XY ,也就是XY ,XX 。所以Y可由非超級鍵X所決定若R不滿足3NF,則存在著非鍵屬性Y是遞移函數相依於關聯鍵X。也就是有XZ和ZY,且Z不是超級鍵。所以Y可由非超級鍵Z所決定,黃三益2008 資料庫的核心理論與實務第四版,8-30,Boyce-Codd正規式(Cont.),有些關聯綱
15、目滿足3NF但卻不滿足BCNF,黃三益2008 資料庫的核心理論與實務第四版,8-31,Boyce-Codd正規式(Cont.),Transaction1,Transaction2,黃三益2008 資料庫的核心理論與實務第四版,8-32,Boyce-Codd正規式(Cont.),上頁Transaction關聯滿足3NF(但不滿足BCNF)上頁Transaction1和Transaction2滿足BCNF何者較好?考慮所有函數相依(tNo, pNo)amount(tNo, pNo)salePrice(tNo, pNo)invNo invNotNo(invNo, pNo)amount(invNo,
16、 pNo)salePrice,黃三益2008 資料庫的核心理論與實務第四版,8-33,Boyce-Codd正規式(Cont.),只有Transaction關聯時,設定主鍵可決定(tNo, pNo)amount(tNo, pNo)salePrice(tNo, pNo)invNo分解成Transaction1和Transaction2關聯時,設定主鍵可決定(invNo, pNo)amount(invNo, pNo)salePriceinvNotNo當分解成Transaction1和Transaction2關聯時,若仍想維持函數相依 (tNo, pNo)amount ,則需做跨關聯的檢查保留函數相依
17、的分解 :關聯綱目分解後各函數相依仍可藉由檢查單一關聯來確定BCNF常無法保留所有函數相依,黃三益2008 資料庫的核心理論與實務第四版,8-34,練習8-6,有人可能認為8-12(b)的關聯綱目沒有比較省空間,請修改圖8-12範例關聯裡的記錄,使得空間的節省會較多 Ans:,3NF,BCNF,黃三益2008 資料庫的核心理論與實務第四版,8-35,第四正規式,第四正規式(簡稱4NF)是源於多值相依的概念多值相依XY:給定一個X的屬性值,便有一組Y的屬性值 pNoauthorpNotransaction,黃三益2008 資料庫的核心理論與實務第四版,8-36,第四正規式(Cont.),在Pro
18、ductAuthor關聯裡的多值相依pNoauthor和ProductTransaction關聯裡的多值相依pNotransaction稱為微不足道的多值相依一個關聯綱目R滿足4NF,如果每一個R的非微不足道的多值相依其左方都是超級鍵滿足4NF也必定滿足BCNF,ProductAuthor,ProductTransaction,黃三益2008 資料庫的核心理論與實務第四版,8-37,第五正規式,一個關聯綱目R滿足5 NF:R無法再被分解成數個關聯R1, R2, , Rk,使得R1*R2* *Rk=R,或R可以被分解成數個關聯R1, R2, , Rk,使得R1*R2* *Rk=R,但是每一個Ri, 1ik,都是R的超級鍵。 5NF限制條件的發現和檢查不易,也因此在實作上通常不予考慮,包含相依,考慮兩個關聯R和S的兩個屬性集合X和Y,如果R(X)的任一屬性值必然都存在於S(Y)裡,則稱R(X)包含相依於S(Y),以符號R(X)S(Y)表示。考慮Browse(mId, pNo, bTime)和Purchase(mId, pNo, pTime),若會員必須瀏覽過商品才能購買該商品則Purchase(mId, pNo) Browse(mId, pNo)在實務上,包含相依可透過SQL的ASSERTATION或TRIGGER來設定,黃三益2008 資料庫的核心理論與實務第四版,8-38,