代码之家  ›  专栏  ›  技术社区  ›  panthro

为类别单独表还是使用联接?

  •  0
  • panthro  · 技术社区  · 7 年前

    我的网站有各种各样的文章,总是只在特定类别下显示,例如新闻、体育、商业。

    如果有一个表设计,其中所有文章都在一个表中,并且有一个到文章类型表的关系链接,那么我可以做一个连接来获取所有体育文章,例如。

    或者为每种类型的文章分别设置一个表格,一个用于新闻,一个用于体育,一个用于商业,这样会更有效吗。

    请注意,我永远不会超过这三个类别。

    ---编辑

    表结构将是相同的。e、 g.标题、文章内容、日期等。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Caius Jard    7 年前

    如果新闻文章、体育文章和商业文章之间的唯一区别是类别(即所有类型的文章都只有标题、作者、发布日期、字数、正文、评论等,并且没有专门的列),那么您可以使用一个带有CategoryID的文章表

    如果一篇体育文章与一篇商业文章有如此大的不同,以至于他们共享的唯一属性是身体,那么不同的桌子将是一种方式;您不希望一个文章表在a行上有一堆空列“因为这些列仅用于体育文章,这是一篇商业文章”,而在B行上有一堆不同的空列“因为这是一篇体育文章,这些列仅用于商业”

    偶尔出现空值是可以接受的。。比如,如果你有一条规则,“人们可以给商业文章的作者写推特,因为他们很友善、有礼貌,但将作者的推特手柄放在体育文章上会煽动对手的团队打斗”,那么你的文章表AuthorTwitterHandle列对于体育文章可以为空,对于商业文章可以填充-但本质上,这里并没有具体说明商业文章的属性,永远不能应用于其他文章。有一天,一位新的首席执行官可能会决定启用体育文章推特功能。。如果你能想出10个合法的额外属性,一篇商业文章会有其他文章不会有,你总是可以为这些属性制作一个额外的表,并通过 BusinessArticlesExtraProperties.ArticleID = Articles.ID 键入join。。这类似于面向对象编程的继承机制