【问题标题】:bulletin-board database design布告栏数据库设计
【发布时间】:2012-08-04 18:49:48
【问题描述】:

假设我需要为公告牌网站设计一个数据库。
类似于 stackoverflow 的东西,这意味着有一个主题和一系列帖子
但是,没有线程帖子(不是基于树的设计)

我想到了两个主要选项:

  1. 主题表和帖子表。帖子有“topic_id”字段
  2. 没有主题表。只有一个大的 Post 表。

您认为更可取的选择是什么?

【问题讨论】:

    标签: database database-design


    【解决方案1】:

    好吧,stackoverflow 是一种基于标签的设计,其中一篇文章可能有多个主题/标签。

    因此,要在关系式设计中捕捉到这一点,您将拥有三个表:

    1. POST(post_id、作者等)
    2. 主题(topic_id、名称等)
    3. POSTTOPIC(post_id,topic_id)

    POSTTOPIC 的原因是因为一个帖子可能有多个标签。使用#3,可以很容易地为帖子分配/取消分配标签或查找具有特定主题的帖子。 POST 中的列都无法容纳。

    【讨论】:

    • 这在 Post 和 Topic 之间创建了多对多的关系。所以它可以允许一个帖子用于多个主题,除非添加某种形式的约束来防止这种情况。在主题与帖子之间建立一对多关系会更常见。要支持标签,请添加一个带有 PostTag 表的单独标签表,以在标签和帖子之间创建多对多关系。
    • 我认为标签和主题是等价的。
    猜你喜欢
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多