關係模式規範化例項析解

2021-09-01 16:17:36 字數 4071 閱讀 4027

關係模式規範化例項析解

摘要:關係模式是關聯式資料庫的重要組成部份,其規範化理論在整個模式設計中占有主導地位。下面我們試圖採用接近課堂教學的方式給出乙個完整例項,希望對初學者有所幫助。

眾所周知,關係模式是關聯式資料庫的重要組成部份,其好壞直接影響關聯式資料庫的效能。而關係模式的設計必須滿足一定的規範化要求,從而滿足不同的正規化級別。[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是關係的屬性名。乙個關係名對應一張表...