父记录中的多个外键(Rails)

时间:2011-05-23 11:50:05

标签: ruby-on-rails performance has-many-through

我正试图摆脱我的连接表,支持对大型数据集更快的数据库设计。我计划这样做的方法是将子ID存储在父记录中。 像这样:

家长表:
id,child1_id,child2_id,child3_id,... child(100)_id

儿童表:
id,grandchild1_id,grandchild2_id,...孙子(100)_id

模型:
家长
has_many:children,:dependent => :破坏
accepts_nested_attributes_for:孩子们 儿童
belongs_to:parent has_many:grandchildren,:dependent => :破坏
accepts_nested_attributes_for:孙子郎 孙
belongs_to:child

我的最终结果是能够以相同的形式编辑父,子和孙。这已经可以通过使用连接表来实现,但我热衷于提高性能

当我依赖连接表提供的功能时,如何才能获得更好的数据库性能? 请帮忙,我已经在网上搜索了很多天:/谢谢!

2 个答案:

答案 0 :(得分:0)

这是糟糕的数据库设计。如果父母有超过100个孩子怎么办? 3意见建议:

  • 考虑使用NOSQL数据库存储。

  • 也许使用acts_as_tree。

  • 你能不能正常化它:

父母:id

Child:id,parent_id

孙子:id,child_id

答案 1 :(得分:0)

您确定性能有问题吗?如果您只是期待,您可能会过早优化。

如果你能够创建这么多列作为子项的数量,那么我几乎可以肯定你试图避免的数据库设计不是问题。只需确保数据库具有适当的索引。

工作(并由测试覆盖)应用程序是思考性能的良好起点。您可能会注意到使用最简单的方法可以接受性能。