在数据库中实现子类化

时间:2011-08-24 15:44:29

标签: oop database-design

我正在开发一个应用程序,它将拥有一个将拥有许多基本字段和方法的父类,以及一些带有其他字段方法的子类。

好奇如何在数据库中实现最佳。为父类创建一个表,为子类创建一个单独的表并通过id字段链接它们是否有意义,或者为了便于访问和更简单的查询,是否更好地复制子类表中的父类字段?

3 个答案:

答案 0 :(得分:5)

你的问题的答案是肯定的,这些都是有效的方法。这取决于您在查询内容时想要完成的连接数,以及是否需要支持多态查询。 Here's an article on the subject by Scott Ambler.本文第2.6节有一个很好的表,列出了不同映射方法的优缺点。

答案 1 :(得分:3)

三种常用方式

  1. 每个层次结构的表 - 一个表用于所有内容,包含许多空列。

  2. 每个具体类别的表格;每个子类都会获得一个包含所有常见字段的表格。

  3. 每种类型(类)的表。这与关系设计中的 supertype/subtype approach 相同。

答案 2 :(得分:0)

你基本上是在谈论对象关系阻碍mismtach。 http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch

最简单的答案是,当数据位于关系数据库中时,您对数据的建模方式与对象形式时的数据建模方式不同。