如何创建实体较弱的三元关系?



我正在开发一个有doctorpatientdiagnosis的系统。 我把diagnosis做成一个弱实体,因为没有医生或病人就没有诊断。

现在我想在doctorpatient之间建立一种叫做treatment的关系,diagnosis特定的医生将治疗具有特定诊断的特定患者。

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

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

您似乎认为,由于弱实体表"包含"了另外两个表的主键,这意味着它不能拥有自己的主键。

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

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

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 中,以包含在该表的 PK 中并使其唯一。

最新更新