ER模型中弱实体多值属性到关系模型的映射问题
弱实体多值属性的关系映射方案
1. 先映射弱实体COURSE_MATERIAL本身
由于COURSE_MATERIAL是完全依赖强实体COURSE的弱实体,无独立主键,它的关系表结构为:
COURSE_MATERIAL表- 字段:
course_id(既是该表的主键,也是关联COURSE表的外键)
- 字段:
2. 处理多值属性URLs和Books
弱实体的多值属性遵循常规多值属性映射规则拆分独立表,且可以直接用强实体主键+多值属性作为复合主键:
针对URLs属性
创建COURSE_MATERIAL_URLS表:
- 复合主键:
course_id+url - 字段说明:
course_id:外键关联COURSE和COURSE_MATERIAL表,定位对应弱实体url:存储具体资源URL地址
针对Books属性
创建COURSE_MATERIAL_BOOKS表:
- 复合主键:
course_id+book(可根据实际属性细化为book_title/book_isbn等) - 字段说明:
course_id:外键关联COURSE和COURSE_MATERIAL表book:存储书籍具体信息
方案合理性说明
COURSE_MATERIAL的唯一标识就是COURSE的主键course_id,因此它的多值属性不需要额外生成独立主键。用course_id+多值属性作为复合主键,既能保证同课程下的多值条目不重复,也能通过course_id直接关联对应弱实体和强实体,完全符合关系模型约束要求。
内容的提问来源于stack exchange,提问作者Ele975
相关产品推荐
相关产品推荐

