資料庫中使用外鍵和不使用外鍵有什麼區別

來源:互聯網
上載者:User

標籤:方式   欄位   操作   bsp   關係   最佳化   不同的   資料庫服務   訪問   

今天聽了一個企業技術總監的宣講,結果聽說在他開發系統的過程中,都沒有用到外鍵,這讓我很驚訝,趕緊上網搜尋了一些資料看了看,終於明白了不用外鍵的原因。
這是一篇關於是否使用外鍵的討論,講的很有道理:
對於主/外鍵/索引來說,在一些Team Dev中被認為是處理資料庫關係的利器,也被某些Team Dev認為是處理某些具體業務的魔鬼,您的觀點呢?在實際應用中您會採取哪種方式?
大家共同觀點:主鍵和索引是不可少的,不僅可以最佳化資料檢索速度,開發人員還省不其它的工作,
矛盾焦點:資料庫設計是否需要外鍵。這裡有兩個問題:一個是如何保證資料庫資料的完整性和一致性;二是第一條對效能的影響。

正方觀點:

      1,由資料庫自身保證資料一致性,完整性,更可靠,因為程式很難100%保證資料的完整性,而用外鍵即使在資料庫伺服器當機或者出現其他問題的時候,也能夠最大限度的保證資料的一致性和完整性。eg:資料庫和應用是一對多的關係,A應用會維護他那部分資料的完整性,系統一變大時,增加了B應用,A和B兩個應用也許是不同的Team Dev來做的。他們如何協調保證資料的完整性,而且一年以後如果又增加了C應用呢? 

                    2,有主外鍵的資料庫設計可以增加ER圖的可讀性,這點在資料庫設計時非常重要。

                    3,外鍵在一定程度上說明的商務邏輯,會使設計周到具體全面。

反方觀點:

      1,可以用觸發器或應用程式保證資料的完整性

                    2,過分強調或者說使用主鍵/外鍵會平添開發難度,導致表過多等問題

                    3,不用外鍵時資料管理簡單,操作方便,效能高(匯入匯出等操作,在insert,   update,   delete   資料的時候更快)eg:在海量的資料庫中想都不要去想外鍵,試想,一個程式每天要insert數百萬條記錄,當存在外鍵約束的時候,每次要去掃描此記錄是否合格,一般還不止一個欄位有外鍵,這樣掃描的數量是成級數的增長!我的一個程式入庫在3個小時做完,如果加上外鍵,需要28個小時!  

 

結論:

    1,在大型系統中(效能要求不高,安全要求高),使用外鍵;在大型系統中(效能要求高,安全自己控制),不用外鍵;小系統隨便,最好用外鍵。

            2,用外鍵要適當,不能過分追求

            3,不用外鍵而用程式控制資料一致性和完整性時,應該寫一層來保證,然後個個應用通過這個層來訪問資料庫。

資料庫中使用外鍵和不使用外鍵有什麼區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.