2010-07-18 73 views
5

有几种方法如何存储在关系数据库关系数据:实体继承方法。最佳实践

比如有个人实体(20个基本属性),学生实体(一样的人,但一些新的特定字段存在),员工实体层级(与人一样,但有一些新的领域存在)等等

当你劝告使用(而不是使用)以下数据建模方法:

  • 一个大表与所有可能的领域+ personType标记字段(学生或员工)
  • 表继承
  • 一个表与XML场(或者另一种数据类型)来存储所有的自定义字段
  • 别的东西也关系...

预先感谢您!

回答

6

数据库建模事实而不是对象,每个表都应该对相对独立的事实进行建模。这样做的结果是,你的表应该是这个样子:

person { person_id PK, name, dob, ... } 
student { person_id PK FK(person.person_id), admission_id, year_started, ... } 
employee { person_id PK FK(person.person_id), salary_bracket, ... } 

另外一个后果是,学生也可以是员工,不是会继承图这或许机型现实生活更接近。

0

如果您使用的是ORM来实现您的类,您正在使用的ORM工具将为您提供选项,通常有两个选项,一个类一个表或一个父类一个表和每个子类的每个表。我使用Devexpress.com的XPO,一个ORM框架。它提供了这两种选择。

如果您使用ORM,恐怕没有其他通用选项。

Ying