首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自引用实体-多对多

自引用实体-多对多
EN

Stack Overflow用户
提问于 2010-11-29 06:39:07
回答 2查看 356关注 0票数 1

只是在一些关于这种数据库设计情况的建议之后。

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

表1:患者表2:索赔人

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

患者和索赔人的ID是其他表中的外键,如发票、收据等。

一个患者可以有多个索赔人(多个实体可以代表他付款),每个索赔人可以有多个病人。

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

我的想法是将这两个表合并为一个,并简单地将其命名为accounts,并使用claimantType字段来标识帐户的类型,无论是私人帐户、医疗保健帐户、企业帐户还是政府帐户。

对于此更改,我需要牢记哪些潜在的实际缺点?除了更改数据库中的其他链接表之外?

编辑:为了清楚起见,已经有了一个连接表PatientClaimants,它基本上只是将患者映射到索赔人。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-29 06:44:22

您可以(a)放入一个交叉表,将患者if与索赔if联系起来,或者(b)如您所讨论的,将它们合并在一起-但如果您已经有了数据,这可能会有问题。

您还可以设置一个人口统计表,显示患者和索赔人之间的公共数据,并引用简化的患者/索赔人表-这样就不会破坏现有结构。

票数 0
EN

Stack Overflow用户

发布于 2010-11-29 06:47:05

合并这两个表我相信是错误的。

病人永远都是人类。因此,它不能是一家企业或一个组织。

我相信你已经做到了:

代码语言:javascript
复制
Address
=======
......

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

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

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

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

在这里,PersonId或BusinessId其中之一可以为null。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4299539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档