Ruby on Rails多态关系的优缺点

Szy*_*ski 8 ruby database activerecord ruby-on-rails

您对Ruby on Rails多态关系有什么优缺点?

tad*_*man 15

好处:

  • 您可以轻松地将任何内容链接到任何内容
  • 适应性关系有助于适应不可预见的情况
  • 很容易实现关系
  • 非常适合ad-hoc系统

缺点:

  • 外键不实用
  • 索引包括复杂性的另一个维度
  • 使用STI时难以识别的表之间的关系
  • 数据库图表工具无法解释
  • 连接模型并不总是实用的
  • 强烈劝阻必须验证数据完整性的系统

我非常喜欢将这种关系用于根据需要附加到大量内容的记录,例如,可以应用于各种记录的注释或注释记录.

它不太适合经常在JOIN中执行关系的情况.也就是说,多态关联不应该在记录之间的关系中间,而应该在周边的某些东西上.

  • 在中间使用多态关联意味着您的连接条件至少有三个组件,如果两个关系都是多态的,则四个组件.这会对性能产生严重的不利影响,因为索引大小会随着所涉及的密钥中的元素数量而显着增长.更新的索引变得更加昂贵,因此仅索引所需的最小值是有利的.与往常一样,花时间对任何建议的数据库结构进行基准测试,其中包含大量代表您系统的大量数据. (2认同)