是否保持函數(shù)依賴
函數(shù)依賴是通過某一個維度可以函數(shù)決定另一個部分,這里在關(guān)系模式中函數(shù)依賴一定是存在于屬性之間的,只要屬性在,函數(shù)依賴就存在與屬性之間,在考慮模式分解的過程中,分解前有一個關(guān)系模式,
比如屬性集如下:
學(xué)生(學(xué)號,姓名,系號,系名,系位置)
分解前的關(guān)系模式為:
F{學(xué)號→姓名,系號→系名,系號→系位置}
可以對這個關(guān)系模式進(jìn)行分解,可以分解為如下關(guān)系模式:
當(dāng)屬性存在,函數(shù)依賴會隨之保留下來,拆分屬性即函數(shù)依賴關(guān)系
學(xué)(學(xué)號,姓名) F1{學(xué)號→姓名}
系(系號,系名,系位置) F2{系號→系名,系號→系位置}
整個關(guān)系模式分解的過程當(dāng)中,到底有沒有保持函數(shù)依賴?
需要首先將原關(guān)系模式的函數(shù)依賴集合列出F,對分解之后的關(guān)系模式,一般會分解成多個F1、F2,它里面的關(guān)系模式又會有自己的函數(shù)依賴集合。
所謂的保持函數(shù)依賴就是將分解之后的函數(shù)依賴的集合合并起來,只要合并之后,與原來的函數(shù)依賴集合是保持等價的,我們就會說是保持函數(shù)依賴的。
在這個過程中,有些函數(shù)依賴是可以通過公理體系推導(dǎo)出來的,能夠推導(dǎo)出來的叫做冗余函數(shù)依賴,冗余函數(shù)依賴在是否保持函數(shù)依賴分解的判斷中,是不需要考慮的,因?yàn)榭梢酝ㄟ^推導(dǎo)而得出。
保持函數(shù)依賴分解定義
設(shè)數(shù)據(jù)庫模式ρ={R1,R2,…,Rk}是關(guān)系模式R的一個分解,F(xiàn)是R上的函數(shù)依賴集,ρ中每個模式Ri上的FD集是Fi。如果{F1,F(xiàn)2,…,F(xiàn)k}與F是等價的(即相互邏輯蘊(yùn)涵),那么稱分解ρ保持FD。
例題
例1:有關(guān)系模式R(A,B,C),F(xiàn)={A→B,B→C},將其拆分為:R1{A,B},R2{B,C},是否保持函數(shù)依賴。
R1{A,B},F(xiàn)1{A→B}
R2{B,C},F(xiàn)2{B→C}
F1,F(xiàn)2與F是等價的,所以保持函數(shù)依賴分解。
例2:有關(guān)系模式R(A,B,C),F(xiàn)={A→B,B→C,A→C},將其拆分為:R1{A,B},R2{B,C},是否保持函數(shù)依賴。
R1{A,B},F(xiàn)1{A→B}
R2{B,C},F(xiàn)2{B→C}
F1和F2可以推導(dǎo)出A→C,因此A→C是冗余函數(shù)依賴,不考慮。
F1,F(xiàn)2與F是等價的,所以保持函數(shù)依賴分解。
無損分解
什么是有損,什么是無損?
有損:不能還原
無損:可以還原
無損聯(lián)接分解:指將一個關(guān)系模式分解成若干個關(guān)系模式后,通過自然聯(lián)接和投影等運(yùn)算仍能還原到原來的關(guān)系模式。
一般會用表格法或公式法來驗(yàn)證是否是無損分解。
表格法
先畫出一個初始表,分解前所有的屬性寫作列名,然后將分解后的關(guān)系模式所出現(xiàn)的所有屬性畫√。這樣判斷同名屬性列很方便,同一列有√的就是同名屬性列。
例題
有關(guān)系模式:成績(學(xué)號,姓名,課程號,課程名,分?jǐn)?shù))
函數(shù)依賴:學(xué)號→姓名,課程號→課程名,(學(xué)號,課程號)→分?jǐn)?shù),若將其分解為:
成績(學(xué)號,課程號,分?jǐn)?shù))
學(xué)生(學(xué)號,姓名)
課程(課程號,課程名)
該分解是否為無損分解?
解析:
(1)首先看是否保持函數(shù)依賴?這個看下來沒問題
(2)看是否為無損分解?
我們對這三個關(guān)系模式來做自然連接。自然要做的兩個事:
①自然連接的條件是存在同名屬性列,有同名屬性列,取值相等。首先屬性上來看,同名屬性列重復(fù)不需要記錄。
②同名屬性列在還原的過程當(dāng)中,需要隨之還原一些非主屬性。非主屬性一定是由同名屬性列來決定,否則等值所取到的同名屬性列不知道是誰取的。(即以同名屬性列為左側(cè)決定因素的函數(shù)依賴有一個保留下來了,保留下來的結(jié)果是可以隨之還原右側(cè)被決定的因素)
成績?學(xué)生
由于有:學(xué)號→姓名,所以:
成績(學(xué)號,課程號,分?jǐn)?shù),姓名)
成績?學(xué)生?課程
由于有:
,所以:
成績(學(xué)號,課程號,分?jǐn)?shù),姓名,課程名)
然后針對都打√的行數(shù),區(qū)判斷是否保持函數(shù)依賴。
公式法
公式法只能適用于分解為兩個關(guān)系模式的情況,超過兩個就無法用公式法了。但是表格法是通用的。公式法一般只要證明交集推差集(兩個方向的差集)即可。
定理:如果R的分解為ρ={R1,R2},F(xiàn)為R滿足的函數(shù)依賴集合,分解ρ具有無損連接性的充分必要條件是:
R1∩R2→(R1-R2)
或R1∩R2→(R2-R1)
其中R1∩R2表示模式的交,為R1與R2的公共屬性組成,R1-R2或R2-R1表示模式的差集,R1-R2表示R1中去除R1和R2的公共屬性所組成。當(dāng)模式R分解成兩個關(guān)系模式R1和R2時,如果R1與R2的公共屬性能函數(shù)決定R1中或R2中的其他屬性,這樣的分解就具有無損連接性。文章來源:http://www.zghlxwxcb.cn/news/detail-478823.html
例題
設(shè)R=ABC,F(xiàn)={A→B},則分解ρ1={R1(AB),R2(AC)},與分解ρ2={R1(AB),R3(BC)}是否都為無損分解?
解析:
R1∩R2=A
R1-R2=B
R2-R1=C
A→B或A→C
R1∩R3=B
R1-R3=A
R3-R1=C
B→A或B→C文章來源地址http://www.zghlxwxcb.cn/news/detail-478823.html
到了這里,關(guān)于3.6.3數(shù)據(jù)庫系統(tǒng)-模式分解:是否保持函數(shù)依賴、保持函數(shù)依賴分解定義、無損分解、表格法、公式法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!