我有一個理論問題。我有關係R(A,B,C,D)和依賴B-> C,B-> D。我如何檢查是否屬於BCNF,如果不是我如何將其分解爲BCNF?問題來自一本書。我瞭解基礎知識,但用這個我沒有成功,有人可以向我解釋嗎?數據庫關係正常化到BCNF
0
A
回答
0
首先計算關閉集合R
。
- {A} = {A}
- {B} = {B,C,d}
- {C} = {C}
- {d} = {d}
- {A,B} = {A,B,C,D} (這是
R
的關鍵字,因此我們不必計算任何包含關鍵字AB
的閉包集合 - {A,C} = { A,C}
- {A,D} = {A,D}
- {B,C} = {B,C,d}
- {B,d} = {B,C,d}
- {C,d} = {C,d}
- {A ,C,D} = {A,B,C,D}(也是一個關鍵字,因爲它包含關閉中的所有屬性
R
)。 - {B,C,d} = {B,C,d}
集如{A,B,C}並沒有計算爲{A,B}(密鑰)是一個子集。接下來,我們必須確定新的FD(功能依賴)。我不會解釋這個過程,因爲我確定你的教科書會描述它。的依賴關係是:
- 乙 - 「ç
- 乙 - > d
- AB - 」ç
- AB - > d
- BC - > d
- BD - 「ç
- ACD - >乙:
現在,每次在它的左s表示沒有超密鑰FD ide,是BCNF違規行爲。我們可以使用這種違規行爲來拆分關係R
。我們違反的FD是B→C,B→D,BC→D和BD→C。我們可以將關係分解爲FD B→C。分裂關係的第一個「一半」將包含所有FD左側的屬性關閉元素,在這種情況下屬性B
。所以我們的第一個關係將是R11(B, C, D)
。我們的第二個關係將包含FD的左側(B
)和不屬於B關閉的屬性,屬性A
。所以我們得到關係R12(A,B)
。現在讓我們看看:關係R12
當然在BCNF中,因爲它只包含兩個屬性。現在我們來檢查關係R11
。此關係的新密鑰爲B
,因爲B
的結尾包含R11
的所有屬性。沒有任何FD關於R11
有效,因爲它們都在其左側包含B
。所以這兩個關係都在BCNF。我希望這對你來說已經夠清楚了。
編輯:只有現在注意到這個職位是4個月前...那麼我希望它仍然有用(可能是其他成員正在搜索這個主題)。
相關問題
- 1. 關係數據庫正常化
- 2. 關係數據庫中的BCNF/3NF
- 3. 轉換關係到BCNF
- 4. BCNF - 正常形式
- 5. 數據庫關係異常
- 6. 正常化數據庫
- 7. 正常化數據庫
- 8. 在3NF中找到關係但在BCNF中找不到關係
- 9. BCNF中的這種關係?
- 10. 將關係分解爲BCNF
- 11. 數據庫正常化是否正確?
- 12. 關係數據庫規範化問題
- 13. 數據庫對象關係可視化
- 14. 如何知道我的數據庫關係是否不正常?
- 15. 多對多關係數據庫不能正常工作
- 16. 正確的方式關係數據庫
- 17. 正確創建關係數據庫
- 18. 如何正常化類別數據庫
- 19. SQL數據庫結構。正常化?
- 20. 數據庫正常化詞彙表
- 21. 數據庫正常化 - 我想?
- 22. 數據庫正常化我需要它
- 23. 正常化在一個數據庫中
- 24. 訪問數據庫正常化
- 25. 如何正常化活動數據庫
- 26. 數據庫正常化困惑?
- 27. 正常化的預訂數據庫
- 28. 正常化數據庫的工具?
- 29. 數據庫設計:年表正常化
- 30. 確定數據庫是否正常化
什麼書是你學習BCNF,它是如何說識別BCNF,到BCNF的算法是什麼,以及你在這個練習中到目前爲止獲得的算法,以及你卡在哪裏?你正在有效地尋求一本教科書的一章。網上有很多書籍和幻燈片。請具體說明。 – philipxy