ER图中M:N关系的复合键表示及选课关系建模可行性咨询
实体的ER图表示及多对多关系解析
1. 各实体的ER图表示
ER图中用矩形表示实体,实体的属性用椭圆形表示,主键属性需加下划线标注。各实体的具体属性如下:
学生(Student)实体
student_id (Primary Key) first_name last_name date_of_birth contact_number email_address
课程(Course)实体
course_id (Primary Key) course_name course_code department
教职工(Faculty)实体
faculty_id (Primary Key) first_name last_name department contact_number email_address
2. 选课记录(Enrollment)的表示方式
可以将选课记录表示为「学生选修课程(Student Enrols in Courses)」的关系,但需根据属性情况选择合适的表示方法:
- 若选课仅需记录学生与课程的关联(无
grade这类额外属性),直接用多对多(M:N)关系连接学生和课程即可。 - 但当前选课记录包含
grade属性,且有独立主键enrollment_id,此时更适合将其表示为关联实体(Associative Entity):- 用矩形表示
Enrollment实体,其属性包括enrollment_id(主键)、student_id(外键,关联学生)、course_id(外键,关联课程)、grade。 - 用两个1:N的关系分别连接:学生实体到
Enrollment是1对多(一个学生可选多门课),课程实体到Enrollment是1对多(一门课可被多个学生选)。
- 用矩形表示
3. ER图中M:N(多对多)关系的表示方法
基础表示
用菱形表示多对多关系,标注关系名称(如「选修」),在实体与菱形的连线上标注基数:
- 学生实体与菱形的连线标注
N(一个学生可选N门课) - 课程实体与菱形的连线标注
M(一门课可被M个学生选)
这种纯M:N关系无法携带属性,所有属性只能属于关联的两个实体。
带属性的M:N关系转化
当关系需要包含额外属性(如成绩、选课时间)时,需将M:N关系转化为关联实体:
- 创建一个新的实体(矩形),将原M:N关系的属性转移到这个实体中。
- 将两个原实体的主键作为外键添加到关联实体中(也可给关联实体设置独立主键,如
enrollment_id)。 - 用两个1:N关系分别连接原实体与关联实体:每个原实体的一个实例对应关联实体的多个实例,关联实体的每个实例对应两个原实体各一个实例。
内容的提问来源于stack exchange,提问作者K_Adeepa
相关产品推荐
相关产品推荐

