【问题标题】:Relational Database emergency person + contact number?关系数据库紧急人员+联系电话?
【发布时间】:2023-04-05 20:14:01
【问题描述】:

我正在尝试设计一个规范化的关系数据库,其中患者有一个*联系人*(紧急情况下的联系人)。我还有一个名为contact_num 的表,它以patient_id 作为外键。但是我怎样才能让一个可能/可能不是另一个病人的紧急联系人(有电话号码)?我应该实施emergency_contact_num 表吗?还是某种一元关系? egs 会有帮助的

【问题讨论】:

  • 在尝试设计任何东西之前,您应该确保您了解您所在机构的业务规则。具体来说,确保允许将另一名患者作为紧急联系人。
  • 是的,我已经检查过了。谢谢@DanBracuk

标签: sql database normalization relational


【解决方案1】:

我想你可以有一个通讯录,全部存储在数据库中

因此对于患者来说,进入数据库的条目可能是:

'id' => '1'
'first_name' => 'john'
'last_name' => 'doe'
'emergency_contact' => '2'

当然,您还应该在此表中包含有关此人的任何重要信息(例如电话号码)。对于紧急联系人,数据库可以是:

'id' => '2'
'first_name' => 'lisa'
'last_name' => 'joe'
'emergency_contact' => 'none'

【讨论】:

  • 关键是,患者和非患者紧急联系人都是具有许多共同特征的人,例如电话号码。你可能会有一个像“admissions”这样的表(我正在简化,因为有很多方法可以完成这种复杂的事情),其中包括进入日期和退出日期等内容,以及联系人表的外键。那些在入院时是 contact_id 的人是患者,这就是您将他们与碰巧是紧急联系人的普通老人区分开来的方式。
【解决方案2】:

如果您的目标是规范化,那么联系信息就是联系信息,无论此人在操作中扮演什么角色。 使用通讯录建议,但不包括紧急联系人等。 患者就是患者,并且可以拥有与联系信息无关的任意数量的详细信息。 此时,您可以将紧急联系信息作为主要患者表的一部分包含在内,或者,如果您希望单个患者有多个联系人,您可以有一个 patient_Contact 表,其中包含患者表中的患者 ID 和列出的每个联系人的联系人 ID。 这将为在流程中与不同参与者有多种关系的联系人提供最大的灵活性,只需存储交叉引用即可。

因此,与其将患者作为 FK 包含在联系人中,不如将联系人 ID 包含在患者中。此时您还可以在联系表中包含患者联系数据(他们的电话号码、地址等),并将联系 ID 引用为 PatientContact。现在你只有一张表来存储姓名、电话号码、地址等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-06
    • 2011-07-11
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多