关联实体的主要关键

时间:2016-06-13 08:08:16

标签: database entity-framework erd

在此ERD中:

enter image description here

证书实体是一个关联实体,它有一个唯一的标识符 - 证书编号。由于关联实体从其他实体继承其主键。关联实体的关键字段是每个端实体的主键是关联实体上的外键,并且两个组合在一起的外键成为主键(来自Textbook的概念)。

证书实体的主键是否应该是一个复合键,它包含三个部分:CertificateNumber,EmployeeID,CourseID?

或者它的主键是CertificateNumber,并将EmployeeID,CourseID作为该实体的属性??

我对这个问题感到困惑,因为通常关联实体没有自己的标识符(证书编号)。它只是将来自其他实体的主键组合为组合键(EmployeeID,CourseID),然后使用该组合键作为其标识符。

谢谢

亚历

1 个答案:

答案 0 :(得分:1)

关联实体根据自己的属性没有主键。在第一个图中,您创建了一个具有函数依赖关系(Employee_ID, Course_ID) -> Date_Completed的关联实体。请注意,虽然Employee_IDCourse_ID是表格中的列,但它们并非属性。 ER模型中的属性是从实体集到值集的映射。外键是关系的组成部分,不会映射到值集。

在第二个图表中,通过添加代理键,您的关联实体将成为与EmployeeCourse建立关系的常规实体。您的主键只有Certificate_Number,但(Employee_ID, Course_ID)上的唯一约束可能是一个好主意。关系由Certificate_Number -> Employee_ID表中记录的功能依赖Certificate_Number -> Course_IDCertificate表示。

您还可以将其保留为关联实体,并使用(Employee_ID, Course_ID)作为主键,并使Certificate_Number成为常规属性,尽管具有唯一约束(并且可能是自动递增)。在这种情况下,图表看起来像是你的第一个,但在关系上有一个额外的属性。