我正在建立一个论坛,我想知道我是否应该有一个表来存储所有主要帖子,然后在另一个表中存储所有答案。
我总是将所有内容都存储在一张表中,以便计算并让用户评论每篇文章(在另一张表中发表评论)。
我该怎么办?优点和缺点?试图谷歌但没有找到任何东西。
谢谢你的帮助!
这是非常主观的,因为它取决于您的需求和意图。让我解释...
诸如此类的论坛通常采用两种形式之一。它们有时以主要帖子的形式出现,并带有后续评论。因此,从逻辑上讲,主要帖子将位于一张表中,而评论则位于另一张表中。Facebook 和 Stack Exchange 网站就是这样的例子。
在其他情况下,内容可能采用评论列表的形式。更多的传统论坛采取这种形式。在需要层次结构而不是纯日期排序的情况下,单表方法更有意义。
在这两种情况下,层次结构都可以通过创建parent
和child
列来处理。
我个人的偏好是使用一个表,除非主帖子包含评论不需要的附加数据的顺序。这只是一个提高效率的事情,但您绝对不希望数千或数百万行NULL
占用空间的 s 无济于事。要将帖子与评论区分开来,您可以使用任意数量的逻辑方案,例如不同的 ID 或标志列。
最终,这样的架构情况取决于所讨论的项目。这两种方法都有优点和缺点。在以后增加复杂性的情况下,使用多个表可以为您的项目提供更多的“面向未来”的方式。
我通常遵守规则every type of dataset gets a own table
。这样您就可以清晰地定义关系
你有像这样的类型
由于可以为帖子和答案添加评论,因此您可以添加两个桥接表来定义这种关系。
如果您将帖子和答案都保存到一个表中,则帖子表需要引用自己来定义帖子 - 答案是一对多的关系,这会使查询更加复杂。
如果您希望能够级联,post 可以有答案,answer 可以有答案等等,您可能会更好地使用一个 posts 表和一个指向帖子 id 的 parent_id
希望这可以帮助。
好吧 - 因为一个帖子可以有多个答案,所以我会选择一个单独的表格。
临:
骗局
与您在另一个表中已有评论的原因相同...