关于引用多个表并保持完整性的建议

时间:2012-10-20 18:32:00

标签: database-design relational-database foreign-key-relationship

我需要这个设计的帮助,诊断可以基于证据或测试结果或两者。我有单独的证据表(例如:咳嗽,药物可以开出任何其他测试)和测试表(例如:血液测试)。我希望诊断表能够解决所有场景(仅基于证据,仅基于测试结果,基于证据和测试结果。我的表结构是Diagnosis_id,patient_id,evid_id,test_id,Dignosis_name。我想将evid_id和test_id称为外键,但有这个意味着我必须始终提供两个值,这不是这种情况。任何建议?

1 个答案:

答案 0 :(得分:1)

外键可以为null。

您可能需要像

这样的查询
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 ....

使用左连接意味着您将始终获得结果集,无论诊断是链接到证据表还是测试表(或两者都没有)。