我有两个表DOCTORS
和PATIENTS
。我希望医生和患者都有不固定的联系信息(例如电话号码、地址等)。例如,我们可以为医生或患者添加多部电话。
我考虑过创建一个单独的表,例如PHONES
包含字段 phoneID
、电话号码和指向联系人的外键,如下所示:
电话
phoneID [pk]
number
contactID [fk]
医生
docID [pk]
fname
sname
specialization
.
.
.
患者
patID [pk]
fname
sname
.
.
.
第一个问题来自于 patID
和 docID
可能(并且最终)具有相同的值这一事实。因此,将一部手机与一个且仅一个人联系起来变得更加困难。
到目前为止,我想到了三种可能的解决方案:
为医生和患者提供自定义格式的主键。例如,医生的 ID 可以是“d00001”、“d00002”等形式,而患者的 ID 可以是“p00001”、“p00002”等形式。我担心这可能会使事情变得不必要的复杂化。
另一种解决方案是将医生和患者放在一个表中,并使用另一个字段来定义他们是医生还是患者。
为医生和患者创建单独的
PHONE
表,但这更加笨拙。
不知何故,我认为这两种方法都不是最好的。有什么建议吗?
最佳答案
您可以引入一个PERSON
表。这与您的医生和患者1:1
相关(之后可能与员工、供应商、机构等相关)。让联系人与此人员表相关。
应用程序代码可以很容易地通过继承对此进行建模...
在您的人员表中,您可以保存一些常规信息,例如 DisplayName
和 PersonType
(引用具有 Doctor
等条目的人员类型表>、患者
和 ...)。
保持这张 table slim ......
如果非要从自己的想法中做出选择,我更喜欢第二个。将它们放在一张表中并用类型列标记它们。避免说出按键...
关于sql - 医生、患者以及双方的联系信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706584/