2016-06-13 121 views
0

的主密钥在此ERD:关联实体

enter image description here

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

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

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

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

谢谢

亚历

回答

1

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

在第二个图中,通过添加代理键,您的关联实体成为与EmployeeCourse有关的正规实体。您的主键只是Certificate_Number,但(Employee_ID, Course_ID)上的唯一限制可能是一个好主意。这些关系由记录在Certificate表中的功能依赖项Certificate_Number -> Employee_IDCertificate_Number -> Course_ID表示。

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