单独的表类别或使用连接?

时间:2017-12-05 10:34:07

标签: mysql

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

使用表格设计会更高效地将所有文章都放在一个带有文章类型表关系链接的单个表格中,然后我可以进行连接以获取所有体育文章。

或者为每种类型的文章设置单独的表格会更有效率,一个用于新闻,一个用于体育,一个用于商业。

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

---编辑

表结构是一样的。例如标题,文章内容,日期等。

1 个答案:

答案 0 :(得分:1)

如果新闻文章,体育文章和商业文章之间的唯一区别是类别(即所有类型的文章只有标题,作者,发布日期,WordCount,正文,评论允许等,并且没有专门的列)然后你使用一个带有CategoryID的Articles表

如果一篇体育文章与商业文章大不相同,那么他们共享的唯一属性就是身体,那么不同的表格将是最佳选择。你不想要一个在A行和第34行上有一堆空列的文章表;因为这些列仅用于体育文章,这是一篇商业文章" B行和34行上有一组不同的空值;因为这是一篇体育文章而且这些专栏只适用于商业"

偶尔会出现空的情况是可以接受的。就像你有一条规则那样,人们可以向商业文章的作者发送推文,因为他们会很善良和有礼貌,但是将作者的Twitter处理文章放在一篇体育文章上将会引发竞争对手的团队暴力和战斗。然后,您的文章表AuthorTwitterHandle列对于体育文章可以为null并填充商业文章 - 但实质上它不是商业文章的特定属性,永远不能应用于其他文章。有一天,新的首席执行官可能会决定在体育文章上启用推特...如果你能想到例如商业文章可能拥有的10个合法的额外属性,其他文章不会,您可以随时为这些属性创建一个额外的表,并通过BusinessArticlesExtraProperties.ArticleID = Articles.ID类型连接将它们与文章表关联。这是类似于面向对象编程的继承机制