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

And*_*rko 5 sql rdbms data-structures

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

例如,有人实体(20个基本属性),学生实体(与人相同但存在几个新的特定字段),员工(与人相同但存在一些新字段)等

当您建议使用(而不是使用)以下数据建模方法时:

  • 一个包含所有可能字段的大表+ personType标记字段(学生或员工)
  • 表继承
  • 一个表用XML字段(或可能是另一种数据类型)来存储所有自定义字段
  • 其他东西,但也有关系......

先感谢您!

Mar*_*tos 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, ... }
Run Code Online (Sandbox Code Playgroud)

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