如果一个帖子有很多评论,并且评论与帖子基本相同(例如他们有标题,图片和音频等),我应该创建两个表还是只有一个?
例如,如果我只使用一个表,我可以有一个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。
答案 0 :(得分:2)
第二种选择会更好。在显示留言板时,您不关心评论,并且通过索引的父帖子ID列查找它们很快。帖子和评论可能会有不同的字段,因此将它们分开是正确的。第一个选项的父ID索引可以正常工作,但从概念上讲,它很混乱,你基本上创建了一个索引来使用一半或者有相关帖子的评论。
答案 1 :(得分:0)
database-design中的规则:表格称为实体,因此应用程序中的每个 entity 都应按表格分开并进行演示。在这里,虽然你认为帖子和评论都有相同类型的数据,但最后每个都是一个单独的实体,所以它们应该分成两个表。这种行为不是个人意见。这是导致应用程序开发更顺畅的基本规则。