資料庫外來鍵,用是不用?
資料庫外來鍵,用是不用?
文章出處:
對於主/外來鍵/索引來說,在一些開發團隊中被認為是處理資料庫關係的利器,也被某些開發團隊認為是處理某些具體業務的魔鬼,您的觀點呢?在實際應用中您會採取哪種方式?
大家共同觀點:
主鍵和索引是不可少的,不僅可以最佳化資料檢索速度,開發人員還省不其它的工作,
矛盾焦點:資料庫設計是否需要外來鍵。這裡有兩個問題:一個是如何保證資料庫資料的完整性和一致性;二是第一條對效能的影響。
正方觀點:
1,由資料庫自身保證資料一致性,完整性,更可靠,因為程式很難100%保證資料的完整性,而用外來鍵即使在資料庫伺服器當機或者出現其他問題的時候,也能夠最大限度的保證資料的一致性和完整性。
eg:資料庫和應用是一對多的關係,A應用會維護他那部分資料的完整性,系統一變大時,增加了B應用,A和B兩個應用也許是不同的開發團隊來做的。他們如何協調保證資料的完整性,而且一年以後如果又增加了C應用呢?
2,有主外來鍵的資料庫設計可以增加ER圖的可讀性,這點在資料庫設計時非常重要。
3,外來鍵在一定程度上說明的業務邏輯,會使設計周到具體全面。
反方觀點:
1,可以用觸發器或應用程式保證資料的完整性
2,過分強調或者說使用主鍵/外來鍵會平添開發難度,導致表過多等問題
3,不用外來鍵時資料管理簡單,操作方便,效能高(匯入匯出等操作,在insert, update, delete 資料的時候更快)
eg:在海量的資料庫中想都不要去想外來鍵,試想,一個程式每天要insert數百萬條記錄,當存在外來鍵約束的時候,每次要去掃描此記錄是否合格,一般還不止一個欄位有外來鍵,這樣掃描的數量是成級數的增長!我的一個程式入庫在3個小時做完,如果加上外來鍵,需要28個小時!
結論:
1,在大型系統中(效能要求不高,安全要求高),使用外來鍵;在大型系統中(效能要求高,安全自己控制),不用外來鍵;小系統隨便,最好用外來鍵。
2,用外來鍵要適當,不能過分追求
3,不用外來鍵而用程式控制資料一致性和完整性時,應該寫一層來保證,然後個個應用透過這個層來訪問資料庫。
文章出處:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/161195/viewspace-612427/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫:外來鍵是什麼資料庫
- 菜鳥學資料庫(四)——超鍵、候選鍵、主鍵、外來鍵資料庫
- 快速刪除有外來鍵關聯的資料庫的資料資料庫
- 如何在MySQL資料庫中定義外來鍵ZMMySql資料庫
- 資料庫中沒有外來鍵的9個理由資料庫
- mysql資料庫匯入外來鍵約束問題MySql資料庫
- 資料庫約束 主鍵-唯一性-Check-外來鍵資料庫
- [資料庫]資料庫中為什麼不推薦使用外來鍵約束資料庫
- 修改外來鍵為validate時需要驗證資料是否符合外來鍵約束
- (轉)oracle資料庫中所有外來鍵約束失效SQL語句Oracle資料庫SQL
- 分散式資料庫環境中,外來鍵約束的問題??分散式資料庫
- MySQL 用隨機資料填充外來鍵表MySql隨機
- 資料庫的主外來鍵關係資料庫
- 20240722-0725 資料庫外來鍵報錯資料庫
- 為什麼有時Oracle資料庫不用索引來查詢資料?(轉)Oracle資料庫索引
- 資料庫-三正規化優化與不推薦使用外來鍵資料庫優化
- sqlserver外來鍵SQLServer
- MariaDB資料庫的外來鍵約束例項程式碼介紹詳解資料庫
- mysql~資料完整性考慮~外來鍵約束MySql
- indexedDB 內鍵與外來鍵Index
- 《資料庫系統概論》5.0——常見約束 大學生學習筆記(主鍵 外來鍵)資料庫筆記
- MYSQL的外來鍵MySql
- 外來鍵技術
- Mysql關於資料庫是否應該使用外來鍵約束詳解說明創磅MySql資料庫
- 邏輯備用資料庫主要作用是什麼。資料庫
- 使用Hashids來保護你的資料庫主鍵資料庫
- mysql中的外來鍵MySql
- 父表修改與外來鍵的關係(主鍵DML與外來鍵的關係)
- indexedDB 資料庫主鍵Index資料庫
- 資料庫 關鍵字資料庫
- 資料庫關鍵字資料庫
- Goldengate資料傳輸外來鍵問題OGG-00869Go
- 資料庫審計是什麼意思?作用是什麼?資料庫
- 資料庫主鍵、從鍵(易懂版)資料庫
- SQL刪除資料庫裡所有表的外來鍵,同時刪除所有使用者表SQL資料庫
- 為什麼不用資料庫儲存圖片?資料庫
- xtrabackup 不用lock tables來複製備庫
- SQL的主鍵和外來鍵約束SQL