資料庫學習筆記12 無損拆分和依賴保護概念

2022-08-24 20:09:13 字數 665 閱讀 7664

無損拆分,指的是把一張表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競爭 不解決問題 ...