首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何创建具有弱实体的三元关系?

如何创建具有弱实体的三元关系?
EN

Stack Overflow用户
提问于 2018-06-05 03:12:29
回答 1查看 2.4K关注 0票数 -1

我正在开发一个系统,其中有doctorpatientdiagnosis。我让diagnosis成为一个弱实体,因为如果没有医生或病人,就不会有诊断。

现在我想在doctorpatientdiagnosis之间建立一个称为treatment的关系,在这个关系中,特定的医生将治疗具有特定诊断的特定患者。

如何建立关系,因为diagnosis是一个弱实体,没有自己的主键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 03:41:35

我认为你对弱实体和主键的基本理解是有缺陷的。

您似乎认为,由于弱实体表“包括”其他两个表的主键,这意味着它不能有自己的主键。

事实并非如此。主键可以是多列的组合,只要该组合对于所有行都是唯一的。

根据你的描述,你应该有这样的东西:

代码语言:javascript
复制
Table Doctor
Primary Key:  DoctorID

Table Patient
Primary Key:  PatientID

Table Diagnosis
Primary Key:  DoctorID, PatientID (or an Identity column to form an artificial PK)
Foreign Key:  DoctorID References Table Doctor
Foreign Key:  PatientID References Table Patient

So finally, 

Table Treatment
Primary Key:  DoctorID, PatientID (, Identity column of Table Diagnosis if you created one)
Foreign Key:  DoctorID References Table Doctor
Foreign Key:  PatientID References Table Patient

如果医生只能诊断每个患者一次,并且每个患者只能建议一种治疗方法,这就足够了。如果这些组合中的任何一个可以有多个实例,那么您应该在诊断和/或治疗表的PK中添加一些第三个"Line Number“类型列,以包含在该表的PK中,并使其唯一。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50687310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档