帖子和评论的数据库设计

joh*_*sel 6 php mysql redbean

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

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

  *Post*
    id
    title
    content
    image
    audio
    parent_id
Run Code Online (Sandbox Code Playgroud)

要么,

*Post*                        *Comments*
id                             id
title                          title
content                        content
image                          author_id 
audio                          post_id
author_id                      image
                               audio
Run Code Online (Sandbox Code Playgroud)

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

你对这个SO有什么想法?哪个会更有效率?我想为此使用redbeanphp.

G-N*_*get 2

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