2009-11-25 47 views
8

你知道Ruby on Rails多態關係有哪些優點和缺點?Ruby on Rails多態關係的優缺點

+1

不會把它作爲答案,因爲我沒有看過它,但這似乎是相當大的文章在這個主題:http://robots.thoughtbot.com/post/159809241/whats-the -deal-with-rails-polymorphic-associations – 2009-11-25 20:23:28

回答

13

優點:

  • 你可以到任何鏈接什麼很容易
  • 適應關係有助於容納不可預見的情況
  • 很容易實現關係
  • 偉大的即席系統

缺點:

  • 外鍵不實用
  • 指標包括複雜的另一個維度
  • 硬表之間的關係用STI
  • 時識別
  • 數據庫的繪圖工具,不能解釋
  • 並不總是可行的加盟模式
  • 強烈不鼓勵用於必須驗證數據完整性的系統

我很喜歡使用這種關係來記錄根據需要附加到大量內容的記錄,例如,可能適用於各種記錄的註釋或註釋記錄。

它不是非常適合於經常在JOIN中執行關係的情況。也就是說,多態關聯不應該處於記錄之間關係的中間,而應該是外圍的某種關係。

+0

您可以詳細說明爲什麼它不適合處於記錄之間關係的中間嗎?外鍵不實用,但完整性是在Rails層而不是DB處理的,對吧? – Turadg 2012-11-06 15:49:21

+2

在中間使用多態關聯意味着您的連接條件至少有三個組件,如果兩個關係都是多態的,則有四個組件。這可能會對性能產生嚴重的不利影響,因爲索引大小可能會隨着所涉及密鑰中元素的數量而顯着增加。更新的索引變得更加昂貴,所以僅索引所需的最小值是有利的。與往常一樣,花時間將任何建議的數據庫結構與大量代表您系統規模的數據進行基準比較。 – tadman 2012-11-06 17:10:19

+0

非常明確的答案,謝謝。 – Turadg 2012-11-07 19:27:59