如何在关系数据库中存储实体层次结构有几种方法
例如,有人实体(20个基本属性),学生实体(与人相同但存在几个新的特定字段),员工(与人相同但存在一些新字段)e.t.c。
当您建议使用(而不是使用)以下数据建模方法时:
提前谢谢!
答案 0 :(得分: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, ... }
另一个后果是,学生也可以是一名雇员,这可能比继承图更接近现实生活。
答案 1 :(得分:3)
查看hibernate inheritance mapping docs。在那里,您可以找到三种常用方法以及每种方法的优缺点列表。
答案 2 :(得分:0)