我正在尝试简化应用程序的数据库。在该数据库中,我有两个表,让我们说Patient
和MedicalRecord
。我知道,如果来自Table-A
的任何给定行可以at most
一行Table-B
,则表示两个表是一对一的关系(这意味着可能存在零匹配)。
但就我而言,它不是at most
,而是exactly
。即Patient
中的每一行exactly
中都应有MedicalRecord
行(没有病历,没有病历)。
Patient
表包含患者的所有个人详细信息,其身份为PK
。
MedicalRecord
talbe的详细信息包括他的血型,血红蛋白,bp等,PK
和FK
Patient
的身份。
我的问题是,我可以合并这两个表并创建一个表,如
PatientDetails
:personal_details和血型,血红蛋白,bp等
答案 0 :(得分:1)
如果两个表对于共享的一组列具有相同的子行值集(两者都是超级键(SQL PRIMARY KEY或UNIQUE)),则可以通过其自然连接替换这两个表。 (“自然连接”可能就是“合并”的意思,但这不是一个定义的技术术语。)每个原始表将等于原始列上连接的投影。
(1:1表示双方总数,并不代表1:0或1,尽管大多数关于基数的写法都是草率和不清楚。)
答案 1 :(得分:1)
"沸点" ="血压"?然后你必须不组合表格。相反,它是1:多 - 每个患者可以有多组读数。记录和绘制读数趋势非常重要。
在 "styles": [
"../node_modules/ngx-bootstrap/datepicker/bs-datepicker.css,
...
],
- 名称,生日(不年龄;计算那个),性别,种族(某些种族比其他种族更容易患某些疾病)中只放置真正恒定的值,而不是身高/体重。等
当然,患者可能会更改名称(婚姻,法律诉讼等),但这是一个不会影响架构设计的例外情况,除非强迫您使用Patient
,而不是{{1作为唯一的密钥。
每位患者都必须有patient_id
?那是"业务逻辑&#34 ;;在应用程序中测试它;不要依赖(在这种情况下)数据库中的任何内容。
两个表都有patient_name
。 MedicalRecord
会将其作为patient_id
; Patients
INDEXed`。只需要1:很多就可以了。
在表格真的是1:1(可选1:0/1)的情况下,我建议合并表格。 (也有例外。)