2012-01-06 141 views
6

我應該使用每個相關表的外鍵還是不應該? 如果我應該使用,爲什麼?我應該真的使用外鍵嗎?

+0

可能重複[外鍵真的有必要在數據庫設計?(http://stackoverflow.com /問題/ 18717 /是,外國鍵,真的,有必要-IN-A-數據庫設計) – cHao 2012-01-06 07:31:34

回答

6

「所有相關表格」並不總是清晰的,所以它不是一個明顯的情況。可以有表格有一個共同的列,但可能永遠不會看到對方。

但是,防止錯誤越過主要防禦措施並允許輸入不容易追蹤的數據很方便。

如果你有適當的索引,它們不會幫助提高查詢的效率,而且一個好的應用程序會過濾足夠的輸入以避免它們被需要。但是錯誤會發生,而且這是一種廉價的防線。

如果您只是習慣於設計數據庫,那麼一旦擁有基本的父母/子女關係後,他們不會花費大量時間擔心和精細細節。

下面是一些background--

What's wrong with foreign keys?

4

是的,您應該。外鍵只是幫助您建立關係並確保您的數據庫中有正確信息的約束。您應該使用它們來防止任何錯誤的數據輸入。

6

您應該。有三個要點:

  • 根據您的數據庫系統中,你可以得到更好的性能
  • 外鍵確保數據的完整性,例如可以幫助避免孤立記錄等
  • 他們一個明確的方式來記錄你的數據庫結構,它可以通過工具進行可視化使用,代碼生成等
6

是。但在中等水平。這有助於查詢數據。它有助於索引數據,因此查詢速度更快。它也有助於維護實體之間的關係。

5

使用外鍵是依據之一(如果不是唯一的),關係型數據庫的主要概念。你當然應該在需要的地方使用外鍵。因爲這有助於:

  1. 確保數據的有效性和完整性
  2. 節省大量的額外空間

第一個手動裝置,而不是增加一個值,會到現場對於其他記錄,您只需從您在相關主鍵表中選擇的記錄中重複。如果您嘗試在另一個表中輸入一些不存在的主鍵,則會被拒絕(在某些數據庫中,您可以調整此行爲)。

第二個意思是你不必每次都寫「美利堅合衆國」,這需要比寫「美利堅合衆國」ID更多的空間。

1

目前實際上越來越遠離基於外鍵的關係數據庫。像MongoDB這樣的文檔數據庫系統變得越來越流行。這主要是因爲這個世界正隨着雲變得更加分散。

這意味着有時不合理或高效地假設立即數據一致性。

如果您有興趣,請閱讀基於NoSQL的數據庫,MongoDB CouchDB和容量平衡。

它有點爲我們的關係訓練有素的頭腦,瞭解一個奇怪的事情,但很多大型的網絡解決方案