4

我有这个:

class User < ActiveRecord::Base
  has_many :serials
  has_many :sites, :through => :series
end

class Serial < ActiveRecord::Base
  belongs_to :user
  belongs_to :site
  has_many :episodes
end

class Site < ActiveRecord::Base
  has_many :serials
  has_many :users, :through => :serials
end

class Episode < ActiveRecord::Base
  belongs_to :serial
end

我想对 User.serials.episodes 做一些操作,但我知道这意味着各种巧妙的技巧。理论上,我可以将所有剧集数据放入串行(非规范化),然后在需要时进行 group_by 站点。

如果我有很多剧集需要查询,这会是个坏主意吗?

谢谢

4

2 回答 2

0

我不会费心去规范化。

如果您需要查看计数,可以查看关系上的 counter_cache 以保存查询。

你的外键上有正确的索引吗?如果是这样,从一个额外的连接中提取数据应该没什么大不了的,但您可能需要下拉到 SQL 以在一个查询中获取所有结果,而无需遍历 .serials:

User.serials.collect { |s| s.episodes }.uniq  # ack! this could be bad
于 2010-05-05T00:44:19.033 回答
0

这实际上取决于您需要使用此应用程序的规模。如果该应用程序不需要为大量的人提供服务,那就去吧。如果您从活动记录关联中获得了很多好处,那么请继续使用它们。随着您的应用程序扩展,您可能会发现自己用更直接的方法替换关联使用的特定实例来处理您的流量负载。

于 2010-04-22T15:57:34.800 回答