我正在尝试简化应用程序的数据库。在该数据库中,我有两个表,分别是PatientMedicalRecord。我知道两个表被称为一对一关系,前提是Table-A中的任何给定行都可以在at most中包含Table-B一行(这意味着可以有零个匹配项)。

但就我而言,它不是at most,而是exactly。即,Patient中的每一行都应在exactly中具有MedicalRecord一行(没有病历的患者将不存在)。

Patient表包含其ID为PK的患者的所有个人详细信息。
MedicalRecord talbe的详细信息包括他的血型,血红蛋白,bp等,其id分别为PKFK

我的问题是,我可以合并这两个表并创建一个表吗?

Patient:个人详细信息和血型,血红蛋白,bp等

最佳答案

“ bp” =“血压”?然后,您不能合并表。取而代之的是1:1-每个病人可以有许多读数。在读数中记录和绘制趋势非常重要。

Patient中仅输入真正恒定的值-名称,生日(不是年龄;计算),性别,种族(某些种族比其他种族更容易患某些疾病),而不是身高/体重。等等。

当然,患者可能会更改名称(婚姻,法律诉讼等),但这是一个例外,它不会影响架构设计,只是迫使您使用patient_id而不是patient_name作为唯一键。

每个患者都必须有一个MedicalRecord吗?那就是“业务逻辑”;在应用程序中对其进行测试; (在这种情况下)不依赖数据库中的任何内容。

两个表都将具有patient_idPatients将其作为PRIMARY KEYMedicalRecord would have INDEXed`。 1:1就是全部。

在表格实际上是1:1(可选为1:0/1)的情况下,我建议合并表格。 (有例外。)

10-04 16:01