我正试图摆脱我的连接表,支持对大型数据集更快的数据库设计。我计划这样做的方法是将子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
我的最终结果是能够以相同的形式编辑父,子和孙。这已经可以通过使用连接表来实现,但我热衷于提高性能
当我依赖连接表提供的功能时,如何才能获得更好的数据库性能? 请帮忙,我已经在网上搜索了很多天:/谢谢!
答案 0 :(得分:0)
这是糟糕的数据库设计。如果父母有超过100个孩子怎么办? 3意见建议:
考虑使用NOSQL数据库存储。
也许使用acts_as_tree。
你能不能正常化它:
父母:id
Child:id,parent_id
孙子:id,child_id
答案 1 :(得分:0)
您确定性能有问题吗?如果您只是期待,您可能会过早优化。
如果你能够创建这么多列作为子项的数量,那么我几乎可以肯定你试图避免的数据库设计不是问题。只需确保数据库具有适当的索引。
工作(并由测试覆盖)应用程序是思考性能的良好起点。您可能会注意到使用最简单的方法可以接受性能。