【问题标题】:What is the primary key of an associative table Joining 3 different tables什么是关联表的主键连接 3 个不同的表
【发布时间】:2017-10-29 09:02:38
【问题描述】:

我有 3 张桌子,桌子 1 是给病人用的:

 patient_id

 patient_name

 patient_address

表 2 是患者到诊所就诊的情况(待更改)

visit_id

patient_id

medicament_id

doctor_id

表 3 是关于医生的:

doctor_id

doctor_name

现在我需要创建一个关联实体来加入这 3 个表格,所以表格现在是这样的:

auto_inc_id

visit_id

medicament_id

patient_id

doctor_id

因为每个病人可以多次就诊,每次就诊可以看到不同的医生,每个医生可以开多种药

那么其他 3 个连接表的主键是什么?它工作正常吗?还是我应该重新设计数据库?

有更简单的概念吗?

我正在使用 MySQL Workbench 来设计它。

【问题讨论】:

  • 什么是auto_inc_id?预期的结果是什么?
  • visit_idpatient_idmedicament_iddoctor_id之间的关系在表2中定义,因此不必再创建一张表。
  • 我需要添加与(med1,med2,...)不同的药物,而是需要单独添加它们
  • auto_inc_id 是自动添加到表中的自增id(无关,我会删除它)
  • 这是我在表2中的问题。如何添加多个药物或医生访问它?我被要求不要像 (med1, med2,...) 那样添加它们,而是单独添加它们。所以修改表2比较好

标签: mysql database-design mysql-workbench


【解决方案1】:

共有三个基表,patientsdoctorsmedicaments。患者可以去就诊:

餐桌参观

  • visit_id (PK)
  • 患者 ID
  • visit_date 等

在一次就诊中,患者可以看多位医生:

就诊医生

  • visit_doctor_id (PK)
  • visit_id
  • 医生编号

在就诊时,医生可以开出一份药物清单:

table visit_doctor_medicament

  • visit_doctor_medicament_id(PK,如果您希望此表具有技术 ID)
  • visit_doctor_id
  • medicament_id

【讨论】:

  • 没有。一个病人每次去诊所可以看多个医生,每个医生可以开多种药。
  • 所以应该在就诊中添加一个医生ID字段吧?
  • 抱歉。一次就诊多位医生。好的。并且您只想将药物清单与就诊联系起来,还是与在就诊中同时开处方的医生联系起来?
  • 我需要知道哪位医生开出了每种药物,所以是的,我需要收集所有数据并将其连接在一起
  • 谢谢。所以它现在是相关的?并且它们之间的关系是 1:M ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
相关资源
最近更新 更多