1

在此处输入图像描述

到目前为止,我正在使用上述模式构建一个索赔数据库。三个三部分的关键tblPatient在于唯一标识个人对某个问题的索赔X。只要入院/出院日期不同,patientID就会出现相同的情况。tblPatient

该数据库还关注(未显示)问题X 无关的声明。这些声明将用另一个由 3 部分组成的键 , 来patientID, claimsFromDate标识claimsThroughDate。因此,tblPatient.admissionDateandtblPatient.DischargeDate不必等于claimsFromDateand claimsThroughDate,如果它们相等,那是偶然的。

由于tblPatient.patientID重复多次(对于那些访问不止一次的人),我不能简单地将其复制到另一个表而不破坏主键的唯一约束。我需要能够与patientID其余的索赔联系起来。我是否需要重新设计我tblPatient的只有一个字段作为主键,或者包括已经存在的三部分键并使用它?

4

1 回答 1

4

首先:在一个完美、纯粹的数据库世界中,您可以将患者数据库分成两个 - 一个包含患者,另一个称为“PatientClaims”等。如果您不关心患者 ID 之外的患者特定数据,那么您至少应该重命名该表。

同样的纯粹方法也会告诉您主键被定义为“唯一标识行的唯一数据集” - 这可能是您的三个字段。(我可以假设您可以省略 DischargeDate,但前提是您确定这样做的逻辑是合理的)

但是,看到您必须使用: 1. 一个由三部分组成的键,这永远不会令人愉快 2. 在两个表中拥有该键组合,并且可能不得不加入它们

我建议使用您选择的数据库可用的任何自动增量功能简单地定义一个新键 - 例如“ClaimID”。

不相关的注释:你的整个州/县双表集看起来有点奇怪 - 但这可能只是我不明白你在建模什么。

于 2012-06-13T21:05:09.773 回答