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

5
有几种方法可以在关系型数据库中存储实体层次结构,例如人员实体(20个基本属性),学生实体(与人员相同,但具有一些新的特定字段),员工实体(与人员相同,但具有一些新的字段)等等。
以下是建议使用和不使用以下数据建模方法的情况:
1.一个大表格,包含所有可能的字段+personType标记字段(学生或员工) 建议:不要使用此方法,因为它会导致表格过于庞大,难以维护和查询。
2.表格继承 建议:这是一种好的方法,因为它允许您创建具有公共属性的父表,并从中派生出子表,以添加特定于每个子类型的属性。
3.一个带有XML字段(或可能是另一种数据类型)的表格来存储所有自定义字段 建议:如果您需要存储动态字段,则可以使用此方法。但是,它可能会导致查询效率较低。
4.其他一些关系型方法... 建议:取决于具体情况,可以使用其他方法,但必须考虑到查询效率和数据维护性。
谢谢!
3个回答

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, ... }

另一个结果是,学生也可以成为员工,这可能比继承图更贴近现实生活。


3

0

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

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

Ying


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接