应该在数据库中使用子类型/超类型吗?

时间:2011-10-01 21:55:15

标签: database-design relational-database

我有一个博客,文章,个人资料的评论表。注释表可以是超类型,comments_blog,comments_article,comments_profile可以是子类型。

是否应该在数据库设计中使用超类型/子类型,因为它是面向对象的设计或应该有3个不同的表?

1 个答案:

答案 0 :(得分:1)

这取决于细节。每种方法都有争论。基本上,表之间共享的数据越多,它就越有意义地“标准化”数据并使用“超类型/子类型”。请注意,如果采用这种方法,您的SQL可能变得非常复杂,您将不得不跨表加入。

另一种选择是使用一个表并使用像“comment_type”这样的简单列来区分它是博客,文章还是个人资料。这种方法的sql也很简单,只有where comment_type = 'whatever'。请务必将“comment_type”列编入索引。如果表中的列完全不同,则此方法不太有意义。