2016-02-27 43 views

回答

1

我們可以先將關係R轉換爲3NF,然後轉換爲BCNF。

要轉換的關係R進入3NF一組函數依賴(FD's),你可以使用伯恩斯坦的合成。要應用伯恩斯坦的合成 -

  • 首先我們確保給定的FD's最小覆蓋
  • 我們把每一個FD並使其自己的子模式。
  • 第三我們試圖那些子模式

例如你的情況相結合:

R = {A,B,C,d,E,F, G,H,I,J,K,L}
FD的= {AB-> CDEF,G-> HI,ABJ-> K,C-> L}

首先我們檢查FD's是否是一個最小的蓋(單右側,沒有多餘的左側屬性,沒有多餘的FD

  • 辛格爾頓RHS:我們寫的FD與單RHS。所以現在我們有FD爲{AB→C,AB→D,AB→E,AB→F,G→H,G→I,ABJ→K,C-> L}
  • 無額外的LHS屬性:我們刪除多餘的LHS屬性(如果有的話)。這裏沒有多餘的LHS屬性。
  • 沒有冗餘FD:我們刪除了冗餘依賴關係(如果有的話)。現在FD是{AB→C,AB→D,AB→E,AB→F,G→H,G→I,ABJ→K,C-> L}

第二我們使每個FD它自己的子模式。所以現在我們有 - (對於每個關係鍵是粗體

ř = {A,B,C}
ř = {A,B, d}
ř = {A,B,E}
- [R 4 = {A,B,F}
ř = {ģ,H}
ř = {ģ,I}
ř = {A,B,J,K}
ř = {ç,L}

第三我們結合所有子 - 具有相同LHS的模式。所以現在我們有 -

小號 = {A,B,C,d,E,F}
小號 = {ģ,H,I}
小號 = {A,B,J,K}
小號 = {ç,L}

由於上述分解關係都不包含密鑰R,因此我們需要創建一個附加的關係模式,其中包含的關鍵字形式爲R。這是爲了確保保留依賴關係的無損連接分解。因此,我們添加 -

小號 = {A,B,G,J}

ABGJ是原來的關係R

這在3NF的關鍵。現在檢查BCNF我們檢查是否有任何這些關係(S ,S ,S ,S ,S )的違反的BCNF條件(即爲函數依賴X->Y左手側(X必須一個超密鑰)。在這種情況下,這些都沒有違反BCNF,因此它也被分解爲BCNF

注 -這些示例中某些步驟的重要性可能不明確。看看其他例子herehere

+0

3NF不正確。首先,在S3中,L不應該存在(它不由A B J確定)。然後,您應該添加一個與原始關係(A B G J)的關係的關係,因爲沒有分解關係包含它。 – Renzo

+0

@Renzo謝謝你指出。 S3中的L是一個錯字,但我完全忘記了用R的關鍵字添加另一個關係,因爲沒有分解關係包含它。 – PuRaK

+0

非常感謝你,我真的很困惑,謝謝 –