0
A
回答
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。
相關問題
- 1. BCNF分解和鍵
- 2. 將關係分解爲BCNF
- 3. BCNF分解
- 4. BCNF分解嗎?
- 5. 可分解爲BCNF
- 6. 將以下關係分解爲BCNF
- 7. 無法這一關係分解成BCNF
- 8. 我需要幫助分解關係BCNF
- 9. 有關BCNF分解的具體情況
- 10. BCNF分解(數據庫設計)
- 11. 關於超級關鍵字?
- 12. BCNF(3.5NF)分解問題
- 13. 轉換關係到BCNF
- 14. 分割關係,以實現BCNF
- 15. BCNF分解後獲得相同的FD?
- 16. 線程和超級關鍵字
- 17. Java - 使用「超級」關鍵字
- 18. Ruby中的超級關鍵字
- 19. 超級關鍵字的含義
- 20. IOS超級關鍵字導致錯誤
- 21. 這個關係的超級鍵
- 22. '超級'關鍵字意外在這裏
- 23. 虛擬鍵盤在關閉超級按鈕/設置時自動打開
- 24. 瞭解超級
- 25. 歸到BCNF
- 26. 減少到BCNF
- 27. 數據庫關係正常化到BCNF
- 28. 候選鍵或超級鍵
- 29. 如何爲eclipse設置超級/ Windows/mod4鍵綁定
- 30. 瞭解'自我'並將自我設定爲超級
3NF不正確。首先,在S3中,L不應該存在(它不由A B J確定)。然後,您應該添加一個與原始關係(A B G J)的關係的關係,因爲沒有分解關係包含它。 – Renzo
@Renzo謝謝你指出。 S3中的L是一個錯字,但我完全忘記了用R的關鍵字添加另一個關係,因爲沒有分解關係包含它。 – PuRaK
非常感謝你,我真的很困惑,謝謝 –