自我参照实体 - 很多东西

时间:2010-11-28 22:39:07

标签: c# database database-design entity-relationship

关于此数据库设计情况的一些建议。

所以我在数据库中有两个表。

表1:患者 表2:索赔人

患者持有私人患者的属性数据,因此有关此人,他/她的生日,姓名,医疗条件等的详细信息。 索赔人是代表患者支付的实体,因此索赔人可以是患者本人,另一个人,企业(支付工伤),私人医疗保健提供者,政府机构等等。

患者和索赔人的ID在其他表格中是外键,例如发票,收据等......

一名患者可以有多个申请人(多个实体可以代表他支付),每个申请人可以有多名患者。

在进一步调查中,我发现患者和索赔人的许多属性重叠,因为患者可以自己支付,因此是私人索赔人。

我的想法是将两个表合并为一个,只需将其称为帐户,并使用claimantType字段来标识帐户的类型,无论是私人,医疗保健,商业还是政府。

这一变化需要记住哪些潜在的实际缺点?除了更改数据库中的其他链接表?

编辑:只是为了说清楚,已经有一个联合表PatientClaimants,它基本上只是将病人映射到索赔人。谢谢!

2 个答案:

答案 0 :(得分:2)

合并我认为这两个表格错误

患者永远是人。所以它不能是企业或组织。

我相信你有:

Address
=======
......

Person
=======
AddressId (FK)

BusinessEntity
==============
AddressId  (FK)

Patient
=======
PersonId (FK)

Claimant
========
PersonId  (FK)
BusinessEntityId  (FK)

其中PersonId或BusinessId中的一个可以为null。

答案 1 :(得分:0)

您可以(a)放入一个将患者ID与申请人ID相关联的交叉表,或者(b)如您所讨论的,将它们合并在一起 - 但如果您已经有数据可能会有问题。

您还可以设置一个人口统计表,显示患者和索赔人之间的常见数据,并参考缩写的患者/索赔人表 - 这样您就不会破坏现有结构。