【问题标题】:Database design for posts and comments帖子和评论的数据库设计
【发布时间】:2012-08-22 12:44:15
【问题描述】:

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

例如,如果我只使用一个表,我可以有一个 parent_id 列,所以如果它不是对任何内容的回复,它将为空,否则,它将具有父帖子的 id。另一方面,我可以创建一个 post 表和一个 cmets 表。评论也可以回复其他评论,这样很快就会让人感到困惑。

  *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。

【问题讨论】:

    标签: php mysql redbean


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      中的规则是:表称为实体,因此应用程序中的每个 entity 都应以表分隔和演示。在这里,虽然你认为posts和cmets每个都有相同类型的数据,但最后它们每个都是一个单独的实体,所以它们应该在两个表中分开。此行为不是个人意见。这是导致更顺利的应用程序开发的基本规则。

      【讨论】:

        猜你喜欢
        • 2016-09-24
        • 2011-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-30
        • 1970-01-01
        • 2019-07-31
        • 2015-04-17
        相关资源
        最近更新 更多