關係模式規範化例項析解
摘要:關係模式是關聯式資料庫的重要組成部份,其規範化理論在整個模式設計中占有主導地位。下面我們試圖採用接近課堂教學的方式給出乙個完整例項,希望對初學者有所幫助。
眾所周知,關係模式是關聯式資料庫的重要組成部份,其好壞直接影響關聯式資料庫的效能。而關係模式的設計必須滿足一定的規範化要求,從而滿足不同的正規化級別。[1](p.46-52,57)在指導關係模式的設計中,規範化理論占有著主導地位,其基本思想是:消除資料依賴中不合理的部份,使各關係模式達到某種程度的分離,使乙個關係僅描述乙個實體或者實體間的一種聯絡。[2]關係模式及其規範化的理論是我們設計和優化關係模式的指南。作為一種優秀而成熟的理論,學習和實踐會有一定的難度,但在網際網路和相關書籍中難得有比較全面的例項,給我們學習和實踐造成不便。下面,我們試圖採用接近課堂教學的方式給出乙個完整的析解例項,以期對初學者有所幫助。
一、例項
假設某商業集團資料庫中有一關係模式r(商店編號,商品編號,數量,部門編號,負責人),如果規定:
(1) 每個商店的每種商品只在乙個部門銷售;
(2) 每個商店的每個部門只有乙個負責人;
(3) 每個商店的每種商品只有乙個庫存數量。
試回答下列問題:
(1) 根據上述規定,寫出關係模式r的基本函式依賴;
(2) 找出關係模式r的候選關鍵字;
(3) 試問關係模式r最高已經達到第幾正規化 為什麼
(4) 如果r已達3nf,是否已達bcnf 若不是bcnf,將其分解為bcnf模式集。
二、預處理
為了方便,我們用代號代表每個屬性:
a—商店編號
b—商品編號
c—部門編號
d—數量
e—負責人
這樣,有關係模式:
r(u,f)
u=三、根據上述規定,寫出關係模式r的基本函式依賴
為了消除關係模式在操作上的異常問題,優化資料模式,我們需要對關係模式進行規範化處理。而首先需要做的就是函式依賴,以便能確切地反映實體內部各屬性間的聯絡。[2](p.經過對資料語義的分析我們得出下面的依賴關係:
1.語義:每個商店的每種商品只在乙個部門銷售,即已知商店和商品名稱可以決定銷售部門
例:東店——海爾洗衣機—— —定在家電部銷售
所以得出函式依賴:ab→c
2.語義:每個商店的每個部門只有乙個負責人,即已知商店和部門名稱可以決定負責人
例:東店——家電部——部門經理一定是張三
所以得出函式依賴是:ac→e
3.每個商店的每種商品只有乙個庫存數量,即已知商店和商品名稱可以決定庫存數量
例:東店——海爾洗衣機——庫存10臺
所以得出函式依賴是:ab→d
這樣:在關係模式r(u,f)中,基本函式依賴集是:f=。
四、找出關係模式r的候選關鍵字
根據函式依賴和關鍵字的基本定義,我們可以說:只有在最小函式依賴集中才能科學、正確地尋找候選關鍵字。那麼何為最小函式依賴集 又怎麼求出f的最小函式依賴集呢 根據函式依賴的相關定理我們得知:給定函式依賴集f,如果f中每一函式依賴x->y∈f滿足:(1)x->y的右邊y為單個屬性(f為右規約的);(2)f為左規約(即f中任一函式依賴x→y∈f的左邊都不含多餘屬性);(3)f為非冗餘的(即如果存在f的真子集f』,使得f』≡f,則稱f是冗餘的,否則稱f是非冗餘的);則稱f為最小函式依賴集,或稱f是正則的。每乙個函式依賴都等價於乙個最小函式依賴集。[3](p.150)按照上面的三個條件進行最小化處理,我們可得到乙個求最小函式依賴集方法:第一步,為滿足條件1,根據分解性把右側是屬性組的函式依賴分解為單屬性的多個函式;第二步,為滿足條件2,逐一考察最新f中的函式依賴,消除左側冗餘屬性;為滿足條件3,逐一考察最新f中函式依賴x->y,檢查x->y是否被f-所蘊涵,如果是,則x->y是冗餘的,可以刪除。[4]所以,f的所謂最小函式依賴集就是去掉了多餘依賴的f。按上面提供的演算法依據具體計算如下:
1.根據分解性先分解所有依賴的右邊為單屬性:
可以看出:f=中所有依賴的右邊已為單屬性。
2.對所有依賴的左邊為多屬性的情況,消除左側冗餘屬性:
下面計算判斷ab→c中有無無關屬性:
(1)設a→c,在f=中計算a的閉包a+ :
首先,初始化a+ = ;經觀察,在f=中,屬性a不能「帶進」任何屬性。即a的閉包a+ 就是,也就是a+ = ,所以ab→c中b不是無關屬性。
(2)設b→c,在f=中計算b的閉包b+:
首先,初始化b+ = ;經觀察,在f=中,屬性b不能「帶進」任何屬性。即b的閉包b+就是,也就是b+ = ,所以ab→c中a不是無關屬性。
(3)同理,ac→e和ab→d中左邊亦無無關屬性。
3、下面計算在f=中有無冗餘依賴:
我們去掉ab→c,依賴集變為f=。
首先, 初始化+ = ;在f=中,有ab→d,即ab可以「帶進」d屬性 ,這時+ = ;經觀察已不能再「帶進」其它屬性。即的閉包+ 就是,也就是+ = 。
因為中不包含c,所以我們說ab→c不是冗餘依賴。
同理計算,ac→e和ab→d亦不是冗餘依賴。
到此,才能肯定f=已是最小函式依賴集。
4、尋找候選關鍵字也需要一定的計算,下面計算r的候選關鍵字:
在f=中,我們對所有屬性進行歸類如下:
l類屬性,即僅在依賴左邊出現的屬性:a,b
r類屬性,即僅在依賴左邊出現的屬性:e,d
lr類屬性,即既在依賴左邊又在依賴右邊出現的屬性:c
n類屬性,即既不在依賴左邊又不在依賴右邊出現的屬性:無
我們知道,l類屬性和n類屬性一定在候選關鍵字中,r類屬性一定不在候選關鍵字中。
所以,a,b一定在候選關鍵字中,e,d一定不在候選關鍵字中。這是定性的結果。
具體的候選關鍵字是什麼呢
首先,計算l類屬性ab的閉包:+ =,因為ab的閉包已經包含了所有r的屬性,所以,是唯一候選關鍵字。
對於lr類屬性參與候選關鍵字的相關計算稍嫌複雜,但這裡已經找出了關係模式r的唯一候選關鍵字。[3](p.148-150)
五、關係模式r最高已經達到第幾正規化 為什麼
很明顯,關係模式r(a,b,c,d,e)中的所有屬性值都是不可再分的原子項,所以該關係模式已滿足第一正規化。[1](p.53)那麼關係模式r(a,b,c,d,e)是否滿足2nf
根據正規化的相關定義我們得知:如果關係模式r(u,f)中的所有非主屬性都完全函式依賴於任一候選關鍵字,則該關係是第二正規化。[1](p.54)從上面的分析我們知道r(a,b,c,d,e)的唯一候選關鍵字是;非主屬性是:c、d、e ;函式依賴集是。所以:
ab→c
例:東店——海爾洗衣機—— —定在家電部銷售
ab→d
例:東店——海爾洗衣機(——只在家電部銷售)——庫存10臺
ab→e
例:東店——海爾洗衣機(——賣海爾洗衣機的部門——家電部)——部門經理是張三
關係模式r(a,b,c,d,e)已滿足2nf。
進一步分析:非主屬性c、d、e之間不存在相互依賴,即關係模式r(a,b,c,d,e)不存在非主屬性對候選關鍵字的傳遞依賴,根據第三正規化的定義,關係模式r(a,b,c,d,e)已滿足3nf。[1](p.55)
六、r已達3nf,是否已達bcnf 若不是bcnf,將其分解為bcnf模式集
由bc正規化的定義得知:如果關係模式每個決定因素都包含關鍵字(而不是被關鍵字所包含),則r滿足bc正規化。[1](p.56)分析:在f=中,有依賴ac→e的左邊不包含候選關鍵字,即ac→e是bcnf的違例。所以,關係模式r(a,b,c,d,e)不滿足bcnf。
1、下面分解關係模式r(a,b,c,d,e):
分解3nf,有一定的規則。
從bcnf違例ac→e入手,我們得到兩個新關係模式:r1(a,c,e)和r2(a,c,b,d)
r1由違例的所有屬性組成,r2由違例的決定因素和r的其餘屬性組成。即:r1(商店編號,部門編號,負責人),實際上描述了「負責人」這一件事。r2(商店編號,商品編號,部門編號,數量),實際上描述了「商品庫存」這一件事。已經做到了「一事一地」的原則了,應該能符合更高的正規化,但還得經過計算和判斷。
2、下面我們判斷r1是否滿足bcnf:
對於乙個新關係,不知道它的依賴集,不知道它的候選關鍵字,我們需要借助原r(a,b,c,d,e)的依賴集f=。
關係模式規範化
關係模式 關係模式相當於一張二維表的框架,在這個框架下填入資料,稱為關係模式的乙個例項,或者叫關係 r r a1,a2,a3.ai r是關係名,ai是關係的屬性名。乙個關係名對應一張表,關係名對應表名,屬性對應表中的列名。關係模式的簡化表示法 r。未經規範化的資料庫一般都有下述缺點 較大的資料冗餘,...
關係模式規範化
3nf規範化 通過該演算法可以獲得乙個保持函式依賴性並滿足3nf的關係模式分解 先求出fmin 1 x a,xa r 那麼xa單獨構成乙個關係模式 2 如果關係模式r中的某些屬性與函式依賴集f的左右部屬性均無關的話,將他們單獨作為乙個模式 3 出現x a1,x a2 可以合併成乙個關係模式 x a1...
關係模式的規範化
原文路徑 了解關係模式規範化的作用 掌握第一正規化 重點 掌握第二正規化 重點 掌握第三正規化 重點 回顧關係模式 關係模式 關係模式相當於一張二維表的框架,在這個框架下填入資料,稱為關係模式的乙個例項,或者叫關係 r r a1,a2,a3.ai r是關係名,ai是關係的屬性名。乙個關係名對應一張表...