簡體   English   中英

您喜歡哪種數據庫設計? 一種與實際的物理關系或一種模仿它的物理關系?

[英]What database design do you favor; one with actual physical relations or one that mimics it?

設計關系數據庫時的最佳實踐是什么? 要在表之間建立物理關系(從表到表之間繪制一條實際線)還是僅模仿這種關系?

例如

TableA具有列

ID, Name

TableB具有列

ID, CNIC, TableA_ID 

現在, TableA_ID上沒有實際的外鍵約束,但是仍然存儲映射到TableA的ID列的值。

我認為后者是好的,並且我相信前者會變慢並且存在級聯操作問題?

數據庫的主要工作之一是確保數據完整性
數據完整性的一部分是引用完整性
關系數據庫可確保具有外鍵約束的引用完整性。

刪除約束,然后刪除數據庫防止損壞數據的功能。

因此,在關聯表時始終應指定外鍵,即使是以性能損失為代價(通常可以忽略不計)。

即使約束不存在,您也無法模仿它-即使您有一個前端應用程序可以驗證輸入到數據庫中的所有數據-沒有什么可以阻止開發人員,DBA或直接訪問該數據庫的任何人數據庫錯誤地輸入損壞的數據。

關系模型不包含任何形式的物理鏈接。 一個關系(表)可以使用“鍵-外鍵”對來引用另一個關系(“鍵”可能不是主要的)。 為了確保引用的完整性,需要使用外鍵約束。 默認情況下,應在設計中使用外鍵約束。

通常,數據庫設計人員可以在FK列上添加索引,並且不考慮任何其他性能問題,因為它們在生產中得到了很好的管理(即臨時禁用FK檢查,批量加載操作忽略FK等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM