Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 数据库中是否应使用子类型/超类型?_Database Design_Relational Database - Fatal编程技术网

Database design 数据库中是否应使用子类型/超类型?

Database design 数据库中是否应使用子类型/超类型?,database-design,relational-database,Database Design,Relational Database,我有一个博客、文章、个人资料的评论表。评论表可以是超类型,评论、博客、评论、文章、评论、个人资料可以是子类型 由于超类型/子类型是面向对象的设计,所以应该在数据库设计中使用它还是应该有3个不同的表?这取决于详细信息。每种方法都有各自的理由。基本上,表之间共享的数据越多,就越有必要“规范化”数据并使用您所说的“超类型/子类型”。请注意,如果采用这种方法,您的sql可能会变得非常复杂,您必须跨表连接 另一种选择是有一个表,并使用简单的列(如“comment_type”)来区分它是博客、文章还是个人资

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


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

这取决于详细信息。每种方法都有各自的理由。基本上,表之间共享的数据越多,就越有必要“规范化”数据并使用您所说的“超类型/子类型”。请注意,如果采用这种方法,您的sql可能会变得非常复杂,您必须跨表连接


另一种选择是有一个表,并使用简单的列(如“comment_type”)来区分它是博客、文章还是个人资料。这种方法的sql也非常简单,它只是一个
注释类型='whatever'
。确保为“注释类型”列编制索引。如果表中的列差别很大,这种方法就没有什么意义了。

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