关系数据:实体继承方法。最佳实践
问题描述:
有几种方法如何存储在关系数据库关系数据:实体继承方法。最佳实践
比如有个人实体(20个基本属性),学生实体(一样的人,但一些新的特定字段存在),员工实体层级(与人一样,但有一些新的领域存在)等等
当你劝告使用(而不是使用)以下数据建模方法:
- 一个大表与所有可能的领域+ personType标记字段(学生或员工)
- 表继承
- 一个表与XML场(或者另一种数据类型)来存储所有的自定义字段
- 别的东西也关系...
预先感谢您!
答
数据库建模事实而不是对象,每个表都应该对相对独立的事实进行建模。这样做的结果是,你的表应该是这个样子:
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, ... }
另外一个后果是,学生也可以是员工,不是会继承图这或许机型现实生活更接近。
答
如果您使用的是ORM来实现您的类,您正在使用的ORM工具将为您提供选项,通常有两个选项,一个类一个表或一个父类一个表和每个子类的每个表。我使用Devexpress.com的XPO,一个ORM框架。它提供了这两种选择。
如果您使用ORM,恐怕没有其他通用选项。
Ying