2011-10-01 100 views
0

我有一个博客,文章,配置文件的评论表。评论表可以是超类型和comments_blog,comments_article,comments_profile可以是子类型。应该在数据库中使用子类型/超类型吗?

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

回答

1

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

另一种选择是让一个表使用像'comment_type'这样的简单列来区分它是博客,文章还是个人档案。这种方法的sql也会很简单,它只是一个where comment_type = 'whatever'。一定要为'comment_type'列索引。如果表格中的列显着不同,则这种方法的意义不大。

+0

同意。我想补充一点,这取决于您将使用多少通用代码来访问和修改这些不同类型的评论。如果您的代码使用超类型/子类型类,那么您的数据存储更有可能从具有类似结构中受益。 –

相关问题