数据库设计...远程相关的模型

时间:2012-01-28 13:51:25

标签: ruby-on-rails database-design

假设我有三种型号:

class Parent < ActiveRecord::Base
  has_many :children
end

class Child < ActiveRecord::Base
    belongs_to :parent
    has_many :grandchildren
end

class Grandchild < ActiveRecord::Base
    belongs_to :children
end

我会做很多查询来找到父母的孙子。进行多重连接是最有效的,还是最好将Parent添加到has_many: :grandchildrenGrandchildbelongs_to :parent?似乎这会导致模型失去同步的可能性,尽管在这个特定的应用程序中,关系一旦建立就永远不会改变。

另外,如果我们谈论的模型更加疏远,那么说三个或四个连接起来呢?

更新:澄清一下,我所建模的并非真正的父母/子女/孙子女。我认为更通用的名称会让它更清晰,但我可以看到这些通用名称实际上让它更加混乱。这更像是公司产品有零件订单,我需要找到与公司相关的订单。对不起,感到困惑。

1 个答案:

答案 0 :(得分:0)

曾孙子呢?等

你想要一个普通的“人”类self-join

此外,还有acts_as_treeancestry之类的内容,以及各种各样的实现,使这些事情变得微不足道。一些优化用于检索,并且可以在单个调用中加载整个层次结构。