我需要有关此设计的帮助,诊断可以基于证据或测试结果或两者兼而有之。我有单独的证据表(例如:咳嗽,无需任何其他测试即可开药)和测试表(例如:验血)。我希望诊断表能够解决所有场景(仅基于证据,仅基于测试结果,基于证据和测试结果。我的表结构是 Diagnosis_id,patient_id,evid_id,test_id,Dignosis_name。我想将 evid_id 和 test_id 称为外键,但有这意味着我必须始终提供两个值,但事实并非如此。有什么建议吗?
问问题
39 次
1 回答
1
外键可以为空。
您可能需要像这样的查询
select patients.name, diagnoses.id, evidence.text, tests.text
from patients inner join diagnoses on diagnoses.patient_id = patients.id
left join evidence on diagnoses.evid_id = evidence.id
left join tests on diagnoses.test_id = tests.id
where ....
使用左连接意味着您将始终获得结果集,无论诊断是否链接到证据表或测试表(或两者都不链接)。
于 2012-10-20T18:38:25.967 回答