繁体   English   中英

关系数据:实体继承方法。 最佳实践

[英]Relational Data: entity inheritance approaches. Best practice

有几种方法如何在关系数据库中存储实体层次结构

例如,有人实体(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, ... }

另一个后果是学生也可以是一名员工,这可能比继承图更接近现实生活。

看看hibernate继承映射文档 在那里,您会发现三种常见方法以及每种方法的优缺点列表。

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

如果您使用ORM,我担心没有其他通用选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM