數(shù)據(jù)庫系統(tǒng)原理期末考試題 數(shù)據(jù)庫閉包怎么計(jì)算?
數(shù)據(jù)庫閉包怎么計(jì)算?閉包是直接或間接從屬性派生的所有屬性的集合。例如,f={a->B,B->C,a->D,e->F}。如果B和D可以直接從a得到,C可以間接得到,那么a的閉包就是{a,
數(shù)據(jù)庫閉包怎么計(jì)算?
閉包是直接或間接從屬性派生的所有屬性的集合。例如,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}。由于閉包會(huì)使函數(shù)中的變量都保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會(huì)造成網(wǎng)頁性能問題,可能導(dǎo)致ie內(nèi)存泄漏。解決方法是刪除所有局部變量后再使用。2閉包將在父函數(shù)外部,并更改父函數(shù)內(nèi)部變量的值。因此,如果將父函數(shù)用作對(duì)象,將閉包用作其公共方法,將內(nèi)部變量用作其私有值,則必須小心不要更改父函數(shù)的內(nèi)部變量的值。
數(shù)據(jù)庫閉包的計(jì)算?
已知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對(duì)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)。對(duì)于算法6。五十、 設(shè)AI=| x(I)|,{AI}構(gòu)成一個(gè)步長大于1的嚴(yán)格遞增序列,序列的上界為| u |,因此算法最多終止| u |-| x |。