最近在做一個派單系統資料庫設計,在設計中有些疑惑的地方中午在網上發起一個話題讨論. 我把這個讨論流程.發過來 大家可以可以看看.
也可以發表一下自己的意見.
對于主/外鍵/索引來說,在一些開發團隊中被認為是處理資料庫關系的利器,也被某些開發團隊認為是處理某些具體業務的魔鬼,您的觀點呢?在實際應用中您會采取哪種方式?
大家共同觀點:
主鍵和索引是不可少的,不僅可以優化資料檢索速度,開發人員還省不其它的工作,
沖突焦點:資料庫設計是否需要外鍵。這裡有兩個問題:一個是如何保證資料庫資料的完整性和一緻性;二是第一條對性能的影響
2009-11-11 13:07 changShaHacker
正方觀點:
1,由資料庫自身保證資料一緻性,完整性,更可靠,因為程式很難100%保證資料的完整性,而用外鍵即使在資料庫伺服器當機或者出現其他問題的時候,也能夠最大限度的保證資料的一緻性和完整性。
eg:資料庫和應用是一對多的關系,A應用會維護他那部分資料的完整性,系統一變大時,增加了B應用,A和B兩個應用也許是不同的開發團隊來做的。他們如何協調保證資料的完整性,而且一年以後如果又增加了C應用呢?
2,有主外鍵的資料庫設計可以增加ER圖的可讀性,這點在資料庫設計時非常重要。
3,外鍵在一定程度上說明的業務邏輯,會使設計周到具體全面
2009-11-11 13:08 TeDongDesiger
反方觀點:
1,可以用觸發器或應用程式保證資料的完整性
2,過分強調或者說使用主鍵/外鍵會平添開發難度,導緻表過多等問題
3,不用外鍵時資料管理簡單,操作友善,性能高(導入導出等操作,在insert, update, delete 資料的時候更快)
eg:在海量的資料庫中想都不要去想外鍵,試想,一個程式每天要insert數百萬條記錄,當存在外鍵限制的時候,每次要去掃描此記錄是否合格,一般還不止一個字段有外鍵,這樣掃描的數量是成級數的增長!我的一個程式入庫在3個小時做完,如果加上外鍵,需要28個小時!
結論:
1,在大型系統中(性能要求不高,安全要求高),使用外鍵;在大型系統中(性能要求高,安全自己控制),不用外鍵;小系統随便,最好用外鍵。
2,用外鍵要适當,不能過分追求
3,不用外鍵而用程式控制資料一緻性和完整性時,應該寫一層來保證,然後個個應用通過這個層來通路資料庫
歡迎各位發表觀點...
本文轉自chenkaiunion 51CTO部落格,原文連結:http://blog.51cto.com/chenkai/765295