试着解释,献丑了。
其实,这段话讲的就是,在实际的E-R实体关系建模中,多对多的关系终归要化成一对多的关系来加以解决。具体到上述的例子,“学生”和“课程”两个实体(也就是“学生表”和“课程表”两张表)具有多对多的关系,即多个学生可以选多种课程。我们既不能简单的在“学生表”中加一个“课程号”字段,也不能简单的在“课程表”中加一个“学号”字段,来反映两张表之间的多对多的关系。解决的办法就是,“每条多对多关系都被两个或者多个一对多关系所取代”,即在“学生表”和“课程表”之间再建一张“学生-课程表”(字段为:学号、课程号)表示学生的选课情况。通过外键“学号”与“学生表”建立一对多的关系,通过另一个外键“课程号”与“课程表”建立另一个一对多的关系。这样就将一个多对多的关系拆成了两个一对多的关系了。用实例说明(只用主键标识记录,学生表的主键是学号,课程表的主键是课程号),
[学生表] [课程表]
学号 | 姓名 | 出生日期 课程号 | 课程名
1 A
2 B
... ... [学生-课程表]
学号 | 课程号
1 A
1 B
2 A
... ...“学生表”中学号为“1”的记录(即实例)对应于“学生-课程表”中的第一和第二两条记录;同样,“课程表”中课程号为“A”的记录对应于“学生-课程表”中的第一和第三两条记录。这样,学生表和课程表之间的多对多的关系就拆成了“学生表”与“学生-课程表”以及“课程表”与“学生-课程表”两个一对多的关系了。不知道这样解释清楚没有。
其实,这段话讲的就是,在实际的E-R实体关系建模中,多对多的关系终归要化成一对多的关系来加以解决。具体到上述的例子,“学生”和“课程”两个实体(也就是“学生表”和“课程表”两张表)具有多对多的关系,即多个学生可以选多种课程。我们既不能简单的在“学生表”中加一个“课程号”字段,也不能简单的在“课程表”中加一个“学号”字段,来反映两张表之间的多对多的关系。解决的办法就是,“每条多对多关系都被两个或者多个一对多关系所取代”,即在“学生表”和“课程表”之间再建一张“学生-课程表”(字段为:学号、课程号)表示学生的选课情况。通过外键“学号”与“学生表”建立一对多的关系,通过另一个外键“课程号”与“课程表”建立另一个一对多的关系。这样就将一个多对多的关系拆成了两个一对多的关系了。用实例说明(只用主键标识记录,学生表的主键是学号,课程表的主键是课程号),
[学生表] [课程表]
学号 | 姓名 | 出生日期 课程号 | 课程名
1 A
2 B
... ... [学生-课程表]
学号 | 课程号
1 A
1 B
2 A
... ...“学生表”中学号为“1”的记录(即实例)对应于“学生-课程表”中的第一和第二两条记录;同样,“课程表”中课程号为“A”的记录对应于“学生-课程表”中的第一和第三两条记录。这样,学生表和课程表之间的多对多的关系就拆成了“学生表”与“学生-课程表”以及“课程表”与“学生-课程表”两个一对多的关系了。不知道这样解释清楚没有。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货