决定使用单表继承时要考虑的因素

时间:2011-03-06 22:42:23

标签: ruby-on-rails activerecord associations single-table-inheritance

我正准备启动一个小项目,提供使用单表继承的机会。当我阅读关于Stackoverflow的STI之前的帖子时,似乎对论证的各方有一些强烈的意见。

我的申请与我的赛马爱好有关。马的联系被定义为其当前的赛马,训练师和所有者。骑师,教练和所有者可以使用三个单独的表(模型/类)或通过单个表继承作为一个具有多个子类的类来建模。

当面对这样的决定时,是否有一个问题的检查清单可供人们确定哪种方法更可取。我假设使用STI会减少潜在的连接数。还有其他实际考虑因素吗?

1 个答案:

答案 0 :(得分:0)

您应该考虑a few things

  1. 概念上,对象是单亲的子女吗?
    不要因为你的类共享一些属性而使用单表继承;确保它们之间实际存在OO继承关系和可理解的父类。
  2. 您是否需要对所有对象进行数据库查询?
    如果要将对象列在一起或对所有数据运行聚合查询,则可能需要在同一数据库表中的所有内容以提高速度和简单性。
  3. 对象是否有类似数据但行为不同?
    如果您有大量特定于模型的列,则应考虑使用多态关联。
  4. article linked更深入了解。