帖子和评论的数据库设计

时间:2012-08-28 02:19:58

标签: php mysql redbean

如果一个帖子有很多评论,并且评论与帖子基本相同(例如他们有标题,图片和音频等),我应该创建两个表还是只有一个?

例如,如果我只使用一个表,我可以有一个parent_id列,所以如果它不是对任何内容的回复,那么它将为null,否则,它将具有父帖子的id。另一方面,我可以创建一个post表和一个注释表。评论也可以回复其他评论,因此这可能会让人感到困惑。

  *Post*
    id
    title
    content
    image
    audio
    parent_id

,或者

*Post*                        *Comments*
id                             id
title                          title
content                        content
image                          author_id 
audio                          post_id
author_id                      image
                               audio

第二个选项允许的是创建索引。事实上我甚至不需要添加author_id或post_id如果我从一开始就使用索引吗?

您对此有何看法?哪个会更有效率?我想为此使用redbeanphp。

2 个答案:

答案 0 :(得分:2)

第二种选择会更好。在显示留言板时,您不关心评论,并且通过索引的父帖子ID列查找它们很快。帖子和评论可能会有不同的字段,因此将它们分开是正确的。第一个选项的父ID索引可以正常工作,但从概念上讲,它很混乱,你基本上创建了一个索引来使用一半或者有相关帖子的评论。

答案 1 :(得分:0)

中的规则:表格称为实体,因此应用程序中的每个 entity 都应按表格分开并进行演示。在这里,虽然你认为帖子和评论都有相同类型的数据,但最后每个都是一个单独的实体,所以它们应该分成两个表。这种行为不是个人意见。这是导致应用程序开发更顺畅的基本规则。