資料庫概論之無損分解

2021-10-16 05:04:29 字數 2195 閱讀 6289

無損分解指的是對關係模式分解時,原關係模型下任一合法的關係值在分解之後應能通過自然聯接運算恢復起來。反之,則稱為有損分解。

設r是乙個關係模式,f是r上的乙個依賴集,r分解為關係模式的集合p=。如果對於r中滿足f的每乙個關係r,都有r=πr1(r)⋈πr2(r)⋈..πrn(r)則稱分解相對於f是無損連線分解,否則有有損連線。

構造乙個k行n列的**,每列對應乙個屬性aj(j=1,2,..n),每行對應乙個模式ri(ui)=(i=1,2...k)的屬性集合。如果aj在ui中,那麼**的第i行j列處添上記號aj,否則添上記號bij.

複查f的每乙個函式依賴,並且修改**中的元素,直到**不能修改為止。

3.修改結束後一行全是a,則p相對於f是無損分解。

設有關係模式r(u,f),其中u=,f=->c,->a}。r(u,f)的乙個模式分解

第一步,構造乙個k行n列的**,每列對應乙個屬性aj(j=1,2,..n),每行對應乙個模式ri(ui)=(i=1,2...k)的屬性集合。如果aj在ui中,那麼**的第i行j列處添上記號aj,否則添上記號bij.ab

cdea1

b12b13

a4b15

a1a2

b23b24

b25b31

a2b33

b34a5

b41b42

a3a4

a5a1

b52b53

b54a5

第二步根據f中a->c,由於第一行,第二行,第五行在a列中的值為a1相同,在c列中的值不相同,所以根據 如果y分量中沒有aj,就用下標較小的bij替換另乙個符號,把c列中的值都變為最小的bij,即b13,**如下:ab

cdea1

b12b13

a4b15

a1a2

b13b24

b25b31

a2b33

b34a5

b41b42

a3a4

a5a1

b52b13

b54a5

第三步根據f中b->c,由於第二行,第三行,第五行在b列中的值為a2相同,在c列中的值不相同,所以根據 如果y分量中沒有aj,就用下標較小的bij替換另乙個符號,把c列中的值都變為最小的bij,即b13,**如下:ab

cdea1

b12b13

a4b15

a1a2

b13b24

b25b31

a2b13

b34a5

b41b42

a3a4

a5a1

b52b13

b54a5

第四步根據f中c->d,由於第一行,第二行,第三行,第五行在b列中的值為b13相等,在d列中的值不相同,所以根據 如果y分量中有乙個是aj,則另乙個也變成aj,第一行中在d列的值為a4,所以第二行,第三行,第五行也要變成a4,**如下: ab

cdea1

b12b13

a4b15

a1a2

b13a4

b25b31

a2b13

a4a5

b41b42

a3a4

a5a1

b52b13

a4a5

第五步根據f中->c,由於第三行,第四行,第五行在d列和e列中的值分別為a4和a5相等,在c列中的值不相同,所以根據 如果y分量中有乙個是aj,則另乙個也變成aj,第四行中在c列的值為a3,所以第三行,第五行也要變成a3,**如下:ab

cdea1

b12b13

a4b15

a1a2

b13a4

b25b31

a2a3

a4a5

b41b42

a3a4

a5a1

b52a3

a4a5

第六步根據f中->a,由於第三行,第四行,第五行在c列和e列中的值分別為a3和a5相等,在c列中的值不相同,所以根據 如果y分量中有乙個是aj,則另乙個也變成aj,第六行中在a列的值為a1,所以第三行,第四行也要變成a1,**如下:ab

cdea1

b12b13

a4b15

a1a2

b13a4

b25a1

a2a3

a4a5

a1b42

a3a4

a5a1

b52a3

a4a5

到以上幾步我們第三行就全部為a,所以這個模式分解是無損的。 

資料庫 無損分解和保持依賴

以下的論述都基於這樣乙個前提 r是具有函式依賴集f的關係模式,r1 r2 是r的乙個分解。首先我們給出乙個看似無關卻非常重要的概念 屬性集的閉包。令 為一屬性集。我們稱在函式依賴集f下由 函式確定的所有屬性的集合為f下 的閉包,記為 下面給出乙個計算 的演算法,該演算法的輸入是函式依賴集f和屬性集 ...

資料庫系統概論 模式分解

參考課件 模式分解 例1 u a,b,c,d,e,g f 若r不是3nf,將r分解為無損且保持函式依賴的3nf。解 先要求出最小依賴集,由前面,候選鍵為ag,fm 第一步 左部相同原則分組 對fm按具有相同左部的原則分組,然後左部 右部。u1 b de bde u2 dgc u3 agb 第二步 看...

資料庫 無損分解和保持依賴的判斷

批評一下自己,昨天又貪玩了,啥都沒乾。於是今天好好努力,將昨天的那份補上。這幾天做了幾份資料庫方面的試題,其他的沒什麼好說的,在無損分解這裡每次都不知道怎麼做。主要原因是書上對這一塊講解很少,我基本上沒怎麼注意就略過了。但是這幾天做了幾套試題,幾乎每套都有關於無損分解的試題,讓我不得不重視了起來。首...