如果新闻文章、体育文章和商业文章之间的唯一区别是类别(即所有类型的文章都只有标题、作者、发布日期、字数、正文、评论等,并且没有专门的列),那么您可以使用一个带有CategoryID的文章表
如果一篇体育文章与一篇商业文章有如此大的不同,以至于他们共享的唯一属性是身体,那么不同的桌子将是一种方式;您不希望一个文章表在a行上有一堆空列“因为这些列仅用于体育文章,这是一篇商业文章”,而在B行上有一堆不同的空列“因为这是一篇体育文章,这些列仅用于商业”
偶尔出现空值是可以接受的。。比如,如果你有一条规则,“人们可以给商业文章的作者写推特,因为他们很友善、有礼貌,但将作者的推特手柄放在体育文章上会煽动对手的团队打斗”,那么你的文章表AuthorTwitterHandle列对于体育文章可以为空,对于商业文章可以填充-但本质上,这里并没有具体说明商业文章的属性,永远不能应用于其他文章。有一天,一位新的首席执行官可能会决定启用体育文章推特功能。。如果你能想出10个合法的额外属性,一篇商业文章会有其他文章不会有,你总是可以为这些属性制作一个额外的表,并通过
BusinessArticlesExtraProperties.ArticleID = Articles.ID
键入join。。这类似于面向对象编程的继承机制