我正在尝试设计一个规范化的关系数据库,其中患者有一个*联系人*(在紧急情况下联系的人)。我还有一个名为contact_num 的表,它以patient_id 作为外键。但是我怎样才能实现有一个可能/可能不是另一个病人的紧急联系人(有电话号码)?我应该实施emergency_contact_num 表吗?还是某种一元关系?egs 会有所帮助
2 回答
如果您的目标是规范化,那么联系信息就是联系信息,无论此人在操作中扮演什么角色。使用通讯录建议,但不要包括紧急联系人等。患者就是患者,并且可能需要与联系信息无关的任何数量的详细信息。此时,您可以将紧急联系信息作为主要患者表的一部分包含在内,或者,如果您希望单个患者有多个联系人,您可以有一个 patient_Contact 表,其中包含患者表中的患者 ID 和列出的每个联系人的联系人 ID。这将为在流程中与不同参与者有多种关系的联系人提供最大的灵活性,只需存储交叉引用即可。
因此,与其在联系人中将患者作为 FK 包括在内,不如在患者中包括联系人 ID。此时您还可以在联系表中包含患者联系数据(他们的电话号码、地址等),并将联系 ID 引用为 PatientContact。现在你只有一张表来存储姓名、电话号码、地址等。
我想你可以有一个通讯录,全部存储在数据库中
因此,对于患者来说,进入数据库的条目可能是:
'id' => '1'
'first_name' => 'john'
'last_name' => 'doe'
'emergency_contact' => '2'
当然,您还应该在此表中包含有关此人的任何重要信息(例如电话号码)。对于紧急联系人,数据库可以是:
'id' => '2'
'first_name' => 'lisa'
'last_name' => 'joe'
'emergency_contact' => 'none'