我正在尝试简化应用程序的数据库。在该数据库中,我有两个表,分别是Patient
和MedicalRecord
。我知道两个表被称为一对一关系,前提是Table-A
中的任何给定行都可以在at most
中包含Table-B
一行(这意味着可以有零个匹配项)。
但就我而言,它不是at most
,而是exactly
。即,Patient
中的每一行都应在exactly
中具有MedicalRecord
一行(没有病历的患者将不存在)。Patient
表包含其ID为PK
的患者的所有个人详细信息。MedicalRecord
talbe的详细信息包括他的血型,血红蛋白,bp等,其id分别为PK
和FK
。
我的问题是,我可以合并这两个表并创建一个表吗?Patient
:个人详细信息和血型,血红蛋白,bp等
最佳答案
“ bp” =“血压”?然后,您不能合并表。取而代之的是1:1-每个病人可以有许多读数。在读数中记录和绘制趋势非常重要。
在Patient
中仅输入真正恒定的值-名称,生日(不是年龄;计算),性别,种族(某些种族比其他种族更容易患某些疾病),而不是身高/体重。等等。
当然,患者可能会更改名称(婚姻,法律诉讼等),但这是一个例外,它不会影响架构设计,只是迫使您使用patient_id
而不是patient_name
作为唯一键。
每个患者都必须有一个MedicalRecord
吗?那就是“业务逻辑”;在应用程序中对其进行测试; (在这种情况下)不依赖数据库中的任何内容。
两个表都将具有patient_id
。 Patients
将其作为PRIMARY KEY
; MedicalRecord would have
INDEXed`。 1:1就是全部。
在表格实际上是1:1(可选为1:0/1)的情况下,我建议合并表格。 (有例外。)