無損拆分,指的是把一張表r拆成r1和r2,那麼r=natural join of (r1,r2)。
對於乙個關係例項r和乙個其所擁有的函式依賴集f+ ,r拆封出r1,r2為無損拆分當:
r1與r2的並集->r1 or r1與r2的並集->r2 在f+ 中存在時
當然這裡是可以用屬性閉包的。
對於依賴保護,這個也是在拆分條件下說的,對於乙個拆封出的關係例項r1,其擁有的依賴集為原集中f+ 中只有r1中元素的所有依賴的集合。
那麼要測試一拆分是否為依賴保護,我們只需要將所有的拆分出的關係例項r所屬的f做乙個並集f』,然後求其閉包f』+ 檢視是否與f+相等
1.對於每個拆分出來的關係例項進行測試,看其是否滿足原集f中的所有函式依賴,若滿足,則為依賴保護,但是這個只是乙個充分條件,並非必要條件。
2對於每乙個在原集f中的f:la(a)->la(b),做以下演算法:
set result=a;
while(result change)
for(ri in the decomposition)
set t=(result並ri)+ 並ri
result=result並t
這裡的+指的是在f下的屬性閉包。
當做完以後,若la(b)為result的子集,則該函式依賴被儲存了
在此不對這個演算法的正確性做證明。
資料庫 無損分解和保持依賴
以下的論述都基於這樣乙個前提 r是具有函式依賴集f的關係模式,r1 r2 是r的乙個分解。首先我們給出乙個看似無關卻非常重要的概念 屬性集的閉包。令 為一屬性集。我們稱在函式依賴集f下由 函式確定的所有屬性的集合為f下 的閉包,記為 下面給出乙個計算 的演算法,該演算法的輸入是函式依賴集f和屬性集 ...
資料庫水平拆分和垂直拆分區別
size medium size x small color blue 資料庫水平拆分和垂直拆分區別 案例 簡單購物系統暫設涉及如下表 1.產品表 資料量10w,穩定 2.訂單表 資料量200w,且有增長趨勢 3.使用者表 資料量100w,且有增長趨勢 以mysql為例講述下水平拆分和垂直拆分,my...
資料庫水平拆分和垂直拆分區別
案例 簡單購物 系統暫設涉及如下表 1.產品表 資料量10w,穩定 2.訂單表 資料量200w,且有增長趨勢 3.使用者表 資料量100w,且有增長趨勢 以mysql為例講述下水平拆分和垂直拆分,mysql能容忍的數量級在百萬靜態資料可以到千萬 垂直拆分 解決問題 表與表之間的io競爭 不解決問題 ...