我必须将 ER 图映射到关系图,但我很难映射弱实体的多值属性。问题出在我的 ER 图上:
COURSE_MATERIAL
是一个弱实体,由两个多值属性 URL 和 Books 定义。由于 COURSE_MATERIAL
具有总参与约束,因此它将强实体 COURSE
的键作为主键(作为外键)。一般来说,如果强实体具有多值属性,则会创建一个新表,其中包含强实体的键和多值属性(它们被定义为新表的主键)。在这种情况下,多值属性属于一个弱实体,该实体本身没有任何主键。如何创建 URLs
和 Books
两个表?他们会像平常一样使用 COURSE
键和多值属性吗?单独唯一标识的实体。弱实体的存在依赖于另一个称为所有者实体的实体。弱实体的标识符是所有者实体的标识符和弱实体的部分密钥的组合。
因此,这并不意味着弱实体没有主键,而是说主键是复合主键,其中一部分是所属实体的外键。
考虑到这一点,问题就变得简单了:您可以使用多值属性的标准技术,并添加一个(或两个,一个用于书籍,一个用于网址)表,该表具有更复合的主键,该主键由您将为
COURSE_MATERIAL
定义的复合主键,以及允许区分多个值的附加属性。
话虽这么说,如果您将这些附加表显示为图表中的附加弱实体,您会发现它看起来比必要的更复杂:如果COURSE_MATERIAL
仅具有这些多值属性并且这些属性是独立的彼此之间,您可以直接创建
COURSE_MATERIAL
与两个弱实体 COURSE
和 URL
的两个关系,保持复合主键不那么复杂(只有两个组件,而不是两个和三个)。