【问题标题】:SQL ERD how to relate this two setsSQL ERD 如何关联这两组
【发布时间】:2021-09-03 08:57:38
【问题描述】:

我有两个表,“患者”和“医生”,其中 idPatient 和 idDoctor 分别是主键。

问题是我想以这样的方式关联这两个表:

  • 一个病人可以有多个医生。
  • 一个医生可以有多个病人。

同时,可能会发生一名患者与任何医生没有关系,同样,一名医生与任何患者没有关系。

如何在 SQL 中声明这个? (我使用的是 PostgreSQL)

【问题讨论】:

  • 听起来有点像家庭作业问题......你有一个多对多关系(m:n)所以搜索如何建模这些
  • 实现一个DoctorPatientRelationships 表,它有一个idDoctor 和一个idPatient 字段。此功能也可以由同时具有两个键的咨询表支持。
  • 我已经这样做了,以实现医患关系表。问题是有很多其他表具有这种关系,所以我需要创建很多辅助表,我不知道这是否是最佳实践,这就是为什么我要求一种在 SQL 中声明它的方法一种更好的实践方式。

标签: sql erd


【解决方案1】:

您想要一个单独的关系表。可以这样定义:

create table patientDoctors (
     patientDoctorId int generated always as identity,
     patientId int references patients(patientId),
     doctorId int references doctors(doctorId)
);

您可能在表格中有其他信息,例如:

  • 关系开始的日期。
  • 关系的“来源”。
  • 等等。

【讨论】:

  • 谢谢!这种关系考虑到可能是一位医生没有病人,一位病人没有医生,我猜。
  • @Miquel 。 . .是的。 patientsdoctors 中可以有行,patientDoctors 中没有对应的行。
猜你喜欢
  • 2014-01-31
  • 2015-05-19
  • 2016-12-28
  • 1970-01-01
  • 2014-10-31
  • 2019-02-16
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多