0

我正在建立一个论坛,我想知道我是否应该有一个表来存储所有主要帖子,然后在另一个表中存储所有答案。

我总是将所有内容都存储在一张表中,以便计算并让用户评论每篇文章(在另一张表中发表评论)。

我该怎么办?优点和缺点?试图谷歌但没有找到任何东西。

谢谢你的帮助!

4

3 回答 3

0

这是非常主观的,因为它取决于您的需求和意图。让我解释...

诸如此类的论坛通常采用两种形式之一。它们有时以主要帖子的形式出现,并带有后续评论。因此,从逻辑上讲,主要帖子将位于一张表中,而评论则位于另一张表中。Facebook 和 Stack Exchange 网站就是这样的例子。

在其他情况下,内容可能采用评论列表的形式。更多的传统论坛采取这种形式。在需要层次结构而不是纯日期排序的情况下,单表方法更有意义。

在这两种情况下,层次结构都可以通过创建parentchild列来处理。

我个人的偏好是使用一个表,除非主帖子包含评论不需要的附加数据的顺序。这只是一个提高效率的事情,但您绝对不希望数千或数百万行NULL占用空间的 s 无济于事。要将帖子与评论区分开来,您可以使用任意数量的逻辑方案,例如不同的 ID 或标志列。

最终,这样的架构情况取决于所讨论的项目。这两种方法都有优点和缺点。在以后增加复杂性的情况下,使用多个表可以为您的项目提供更多的“面向未来”的方式。

于 2013-01-01T11:11:46.477 回答
0

我通常遵守规则every type of dataset gets a own table。这样您就可以清晰地定义关系

你有像这样的类型

  • 用户类型(例如 guest、user、mod、admin)
  • 用户(有一个 userType_id)
  • 帖子(有一个 user_id)
  • 答案(有一个 post_id)
  • 评论(有一个 post_id,有一个 answer_id)

由于可以为帖子和答案添加评论,因此您可以添加两个桥接表来定义这种关系。

  • comment_to_answer(有一个comment_id,有一个answer_id)
  • comment_to_question(有一个comment_id,有一个question_id)

如果您将帖子和答案都保存到一个表中,则帖子表需要引用自己来定义帖子 - 答案是一对多的关系,这会使查询更加复杂。

如果您希望能够级联,post 可以有答案,answer 可以有答案等等,您可能会更好地使用一个 posts 表和一个指向帖子 id 的 parent_id

希望这可以帮助。

于 2013-01-01T11:16:46.687 回答
-1

好吧 - 因为一个帖子可以有多个答案,所以我会选择一个单独的表格。

临:

  • 更少的冗余信息
  • 答案可以独立于帖子更新/删除
  • 更容易计算问题/答案

骗局

  • 非(好吧,也许您需要为某些查询加入表,但是这不算数)

与您在另一个表中已有评论的原因相同...

于 2013-01-01T11:00:36.560 回答