【发布时间】:2011-10-06 10:19:32
【问题描述】:
考虑以下开放医疗案例及其相应保险的部分数据模型:
**Cases**
CaseId (PK)
PatientId (FK)
CaseNote
...
**CaseInsuranceProfiles**
CaseId (PK)(FK)
InsuranceId (PK)(FK)
InsuranceType {Primary, Secondary, Tertiary} (PK)(FK)
EffectiveDate
**Insurances**
InsuranceId (PK)
InsuranceName
InsuranceAddress
InsuranceCity
...
不幸的是,这种模型存在问题。它不允许案例对于每个保险和保险类型的实例具有重复记录。例如,如果有问题的案例有两份来自保险 A 的主要保险单(在某些州是允许的)。为了规范化数据并为 CaseInsuranceProfiles 表提供一个不是复合键的唯一标识符,我已将模型改进为以下内容:
**Cases**
CaseId (PK)
PatientId (FK)
CaseNote
...
**CaseInsuranceProfiles**
InsuranceProfileId (PK)
CaseId (FK)
InsuranceId (FK)
InsuranceType {Primary, Secondary, Tertiary}
EffectiveDate
**Insurances**
InsuranceId (PK)
InsuranceName
InsuranceAddress
InsuranceCity
...
但是,此模型提出了一个新模型,即我的代理键 (InsuranceProfileId) 仍然不能唯一标识每条记录。任何人都可以建议对数据模型进行更改,以使我能够正确地唯一标识每条记录吗?
注意:我意识到我可以创建一个类似于:
**CaseInsuranceProfiles**
InsuranceProfileId (PK)
CaseId (FK)
InsuranceId (FK)
PrimaryInsurance
SecondaryInsurance
TertiaryInsurance
EffectiveDate
但是,这不允许我考虑多种初级、二级或三级保险。此外,我的目标是确定每个案例的保险概况,换句话说,我希望能够使用一个键来显示特定案例的所有保险。提前致谢!
【问题讨论】:
-
如果您有两份来自保险公司 A 的主要保险单,您如何区分它们?保单号码?纸的颜色?
-
保单号码最容易使用。谢谢!
标签: sql database tsql database-design data-modeling