任何人都知道關係數據庫系統中的級聯事件?它是如何工作的,它如何幫助以及是否有缺點。謝謝。RDBMS數據完整性問題
0
A
回答
1
級聯事件真的很簡單。例如,假設您的User
表具有屬性和主鍵username
,而0123'表的屬性爲username
和email address
。現在很有可能我們可能會將的Email
作爲User
的參考(外鍵)到username
,因爲我們希望每個有電子郵件的用戶也都在我們的User
表中。現在想想如果你在User
中刪除了一個用戶會發生什麼。是否應刪除Email
中的所有匹配行?如果不是,你會怎麼做?一些DBMS會拋出一個錯誤,說「你不能這麼做!引用存在,我們不知道該怎麼處理它們!」。這是級聯事件的來源。如果DMBS支持級聯事件,則可以選擇指定DMBS是否實際引發該錯誤,或者可能刪除所有匹配(在Email
中的username
)行,因此沒有「懸掛「引用。這被稱爲級聯刪除。
還有其他級聯選項!如果我們嘗試將User
中的username
更新爲其他內容,則會發生另一個問題。沒有級聯選項,如果在Email
中有匹配的行,我們可能會引發錯誤。但是通過級聯選項,我們可以選擇使用新的username
自動更新Email
中的username
。這就是所謂的級聯更新。
這些是兩個主要的,但絕不是現有的一些DBMS中存在的「級聯」選項。
如果有幫助,可以將「級聯」修改看作「遞歸」修改,因爲它們是同義詞,是「級聯」的含義。修改「級聯」到使用相同屬性的其他表。
想想這個功能的優缺點。我們現在可以指定我們希望在不同表格中將「級聯」更改爲屬性時想要發生的事情。允許這些功能的一個可能的缺點是,我們現在有機會引起比我們想象的更大規模的修改(取決於設計)。在User
中更改username
可能會導致不同表中的更改Email
,即使我們不打算!
希望這會有所幫助。
相關問題
- 1. 數據完整性問題
- 2. 數據完整性問題C#
- 3. 緩存完整性問題
- 4. ASP.net web應用程序數據完整性問題
- 5. 排序頁面時的數據庫完整性問題
- 6. 如何使用domdocument處理數據完整性問題?
- 7. 我的RDBMS或我的應用程序句柄數據庫參照完整性?
- 8. 修復數據完整性
- 9. 數據完整性攻擊
- 10. MySQL數據的完整性?
- 11. 參考數據完整性
- 12. Rails和數據完整性
- 13. HTTPS和數據完整性
- 14. 完整的數據庫完整性(5倍多表)vs模擬rdbms中的oo概念
- 15. db2參照完整性問題
- 16. 列檢查約束完整性問題
- 17. 在RDBMS中存儲完整的圖形
- 18. 用數字檢查數據完整性
- 19. 數據完整性和限制
- 20. Spring JPA - 數據完整性關係
- 21. MongoDB - 自動維護數據完整性
- 22. 數據庫設計完整性檢查
- 23. 貓鼬和數據完整性
- 24. 最佳數據庫完整性?
- 25. 請求驗證/數據完整性
- 26. #SQL服務器數據完整性表?
- 27. Filemaker Web發佈和數據完整性
- 28. 在Drupal中保留數據完整性:
- 29. Google表格後端數據完整性
- 30. 需要數據庫完整性幫助