2008-10-29 48 views

回答

26

是的。確保您沒有孤兒(沒有父母的條目),並根據使用情況,如果您定義級聯刪除,則在刪除父母時,其所有孩子也將被刪除。

與其他外鍵一樣,缺點是輕微的性能下降。

+4

「無子孤兒」? ;-) – Yarik 2008-11-15 20:23:06

4

是的,你應該把它作爲一個外鍵。

好處將是一個更好的冗餘數據模型。

13

是的,你應該。如果在數據庫關係中有一個屬性作爲同一數據庫中另一個關係的主鍵,則應將其設置爲FK。

您將享受advantages associated to foreign keys

  • 假設關係的合理設計,外鍵約束變得更加困難了程序員不一致性引入數據庫。
  • 集中數據庫服務器對這些約束的檢查使得不必在應用程序端執行這些檢查。這消除了不同的應用程序可能不以相同的方式檢查約束的可能性。
  • 使用級聯更新和刪除可以簡化應用程序代碼。
  • 正確設計的外鍵規則有助於記錄表之間的關係。

缺點:

  • 如果定義外鍵,有時是很難進行批量操作。
  • 也許它意味着更多的磁盤使用和輕微的性能影響。
5

是的,你應該。

優勢(如任何外鍵):

  • 確保PARENT_ID引用表中的一個真正的行
  • 防止有孩子,或確保刪除級聯刪除父的意外刪除孩子們也
  • 提供信息的優化器可以使用

我想不出任何真正的缺點。