我坚持做出设计决定。似乎我的问题的答案总是取决于具体情况。这是我的情况:
在我的关系数据库中,我已经有了一个category和sub_category表。您可以创建链接到类别或子类别的帖子和评论。
在我的数据库中有一个帖子和一个评论表并在评论和帖子表中包含“类型”字段以区分帖子/评论是属于某个类别还是子类别是明智的。
或者将帖子和评论表拆分为category_post / category_comment和sub_category_post / sub_category_comment表是否更好?
我正在寻找能够优化速度的解决方案。我也希望遵循一个可扩展的架构模式,因为帖子和评论的大小可以很快增长。
由于
答案 0 :(得分:0)
第一个,绝对是:一个帖子表和一个评论表。我会给每个人一个category_id字段和一个subcategory_id字段,因此每个字段都可以链接到一个类别和/或子类别。我认为你不需要类型字段。
我很想进一步简化它,甚至没有一个单独的子类别表:相反,make category是一个“树”类型模型,即在类别中有一个category_id字段,因此类别可以嵌套。那么你可以有a)多个类别的嵌套级别,这可能是某个时刻的要求b)有一个类别和子类别之间没有逻辑差异的情况,而不是数据中定义的那个(即他们如何嵌套),这使你的应用程序更简单(和简单=好)。
所以:
#fields - category_id
Post
has_many :comments
belongs_to :category
#fields - post_id, category_id
Comment
belongs_to :post
belongs_to :category
#fields - parent_id
Category
has_many :posts
has_many :comments
belongs_to :parent, :class_name => "Category", :foreign_key => :parent_id
has_many :children, :class_name => "Category", :foreign_key => :parent_id