6

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

例如,如果我只使用一个表,我可以有一个 parent_id 列,所以如果它不是对任何内容的回复,它将为空,否则,它将具有父帖子的 id。另一方面,我可以创建一个帖子表和一个评论表。评论也可以回复其他评论,因此这可能会很快变得混乱。

  *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 如果我从一开始就使用索引,我会吗?

你对这个 SO 有什么看法?哪个效率更高?我正在考虑为此使用redbeanphp。

4

2 回答 2

2

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

于 2012-08-28T02:24:06.283 回答
1

作为中的规则:表称为实体,因此应用程序中的每个实体都应通过表分隔和演示。在这里,虽然您认为帖子和评论每个都有相同类型的数据,但最终它们每个都是一个单独的实体,因此它们应该分开在两个表中。此行为不是个人意见。这是导致更顺利的应用程序开发的基本规则。

于 2014-03-28T04:34:42.483 回答