求閉包的例題數(shù)據(jù)庫 數(shù)據(jù)庫保持函數(shù)依賴的判定步驟,最好有例子?
~R(a,B,C,d)是一種關(guān)系模式,其函數(shù)依賴集F={a→B,C→d},ρ={R1(AB),R2(CD)}。計(jì)算了R1和R2,檢驗(yàn)了分解的保函數(shù)依賴性。解決方法:找到最小依賴集1,判斷a→B是否冗余
~R(a,B,C,d)是一種關(guān)系模式,其函數(shù)依賴集F={a→B,C→d},ρ={R1(AB),R2(CD)}。計(jì)算了R1和R2,檢驗(yàn)了分解的保函數(shù)依賴性。解決方法:找到最小依賴集1,判斷a→B是否冗余。如果是冗余的,設(shè)g={C→D},則a的閉包是a.B不屬于a的閉包,因此a→B不是冗余的。類似地,C→D不是冗余的,所以最低的函數(shù)依賴集是f={a→B,C→D},所以得到ρ={R1(AB),R2(CD)}
已知的關(guān)系模式R<U,f>,其中u={a,B,C,D,e};f={AB→C,B→D,C→e,EC→B,AC→B}。求(AB)F,設(shè)x(0)=AB;(1)計(jì)算x(1):逐個(gè)掃描F集合中的每個(gè)函數(shù)依賴項(xiàng),找出左邊是a、B或AB的函數(shù)依賴項(xiàng),得到兩個(gè)結(jié)果:AB→C、B→D。所以x(1)=AB∪CD=ABCD。(2) 因?yàn)閤(0)≠x(1),我們找出左部是ABCD子集的函數(shù)依賴,得到ab→C,B→D,C→e,AC→B,那么x(2)=x(1)∪BCDE=ABCDE。(3) 因?yàn)閤(2)=u,算法停止,所以(AB)f=ABCDE。求屬性集X(X?U)關(guān)于函數(shù)依賴集f對U的閉包XF輸入:X,f輸出:XF步驟:(1)設(shè)X(0)=X,I=0(2)求B,其中B={a |(?V)(?W)(V→W?f∧V?X(I)∪a?W)};(3)X(I 1)=B∪X(I)(4)判斷X(I 1)=X(I)(5)如果相等或X(I)=U,則X(I)為XF,算法停止。(6) 如果不是,I=I,返回步驟(2)。對于算法6。五十、 設(shè)AI=| x(I)|,{AI}構(gòu)成一個(gè)步長大于1的嚴(yán)格遞增序列,序列的上界為| u |,因此算法最多終止| u |-| x |。
數(shù)據(jù)庫保持函數(shù)依賴的判定步驟,最好有例子?
閉包是直接或間接從屬性派生的所有屬性的集合。例如,f={a->B,B->C,a->D,e->F}。如果B和D可以直接從a得到,C可以間接得到,那么a的閉包就是{a,B,C,D}。示例:設(shè)R(a,B,C,D,e,g)有一個(gè)函數(shù)依賴集F={ab→C,BC→ad,D→e,CG→B},求出ab的閉包。解決方法:首先,從ab開始,設(shè)x={a,B},因?yàn)楹瘮?shù)依賴ab→C,左邊的所有屬性都在x中,所以可以把右邊的C加到x中,此時(shí),x={a,B,C}。第二,考慮函數(shù)依賴關(guān)系BC→ad,左邊的B和C在X中,右邊的D不在X中,把它加到X中,此時(shí),X={a,B,C,D}。然后考慮函數(shù)依賴關(guān)系D→E。類似地,E可以添加到x,其中x={a,B,C,D,E}。上面的方法不能再向x添加屬性,所以我們得到{a,B}={a,B,C,D,e}。由于閉包會使函數(shù)中的變量都保存在內(nèi)存中,內(nèi)存消耗非常大,因此不能濫用閉包,否則會造成網(wǎng)頁性能問題,可能導(dǎo)致ie內(nèi)存泄漏。解決方法是在退出函數(shù)前刪除所有未使用的局部變量。2閉包將在父函數(shù)外部,并更改父函數(shù)內(nèi)部變量的值。因此,如果將父函數(shù)用作對象,將閉包用作其公共方法,將內(nèi)部變量用作其私有值,則必須小心不要更改父函數(shù)的內(nèi)部變量的值。
數(shù)據(jù)庫閉包的計(jì)算?
你好!首先,我們可以看到,C→D對R2保持函數(shù)依賴,而a→D、B→D對R1和R2不保持函數(shù)依賴,因此進(jìn)一步判斷的算法如下:對于F上的每個(gè)α→β,使用以下過程:①設(shè)結(jié)果=α,②t=(結(jié)果∩RI)∩RI;結(jié)果=結(jié)果∪t(第二個(gè)為RI)step={R1(…),R2(…),…,RN(…)},此步驟遍歷分解的關(guān)系模式)應(yīng)該注意,這里的屬性閉包是在函數(shù)依賴集F下計(jì)算的。如果結(jié)果包含β的所有屬性,然后函數(shù)依賴性α→β被保持(當(dāng)且僅當(dāng)F的所有依賴性在上述過程中被保持)。
首先判斷a→D:對于R1,讓result=a,result∩R1=a,a=ad,t=a∩R1=a,result=a;對于R2,讓result=a,result∩R2=空集,空集不能閉合,那么t=空集,result=a??梢园l(fā)現(xiàn)無論R1還是R2,最終結(jié)果都是a,不包含D,所以a→D不保持。在這里,可以得出結(jié)論,分解并不保持功能依賴性。對于B→D,使用相同的方法:對于R1,讓result=B,result∩R1=B,B=BD,t=B∩R1=B,result=B;對于R2,讓result=B,result∩R2=空集,空集沒有閉包,t=空集,result=B;result不包含D,因此不保留B→D,分解也不保持函數(shù)依賴性。
數(shù)據(jù)庫閉包怎么計(jì)算?
Ab->C引入Ab閉包,即{ABC}C->A結(jié)合上一步{ABC}BC->D結(jié)合上一步{ABCD}ACD->B結(jié)合上一步{ABCD}D->eg結(jié)合上一步{abcdeg}be C結(jié)合上一步{abcdeg}CG->bd結(jié)合上一步{abcdeg}ce->ag與前面的步驟{abcdeg}結(jié)合,所以R的候選代碼是ab