一对多关系模型
在“课程花名册”数据库中,一位教师可以教授零个或多个课程,而一个课程由一位(且仅一位)教师教授。在“公司”数据库中,一位经理可以管理零个或多个员工,而一位员工由一位(且仅一位)经理管理。在“产品销售”数据库中,一位客户可以下多个订单;而一个订单由一位特定的客户下。这种关系被称为一对多关系。
一对多关系不能用单个表来表示。例如,在“课程花名册”数据库中,我们可能从一个名为 Teachers 的表开始,该表存储有关教师的信息(例如姓名、办公室、电话和电子邮件)。为了存储每位教师教授的课程,我们可以创建 class1、class2、class3 等列,但立即面临创建多少列的问题。另一方面,如果我们从一个名为 Classes 的表开始,该表存储有关课程的信息,我们可以创建其他列来存储有关(一位)教师的信息(例如姓名、办公室、电话和电子邮件)。但是,由于一位教师可以教授许多课程,因此其数据会在 Classes 表的许多行中重复。
为了支持一对多关系,我们需要设计两个表:例如,一个名为 Classes 的表来存储有关课程的信息,其中 classID 作为主键;以及一个名为 Teachers 的表来存储有关教师的信息,其中 teacherID 作为主键。然后,我们可以通过将 Teacher 表的主键(即 teacherID)(“一”端或父表)存储在 Classes 表(“多”端或子表)中来创建一对多关系,如下所示。
子表 Classes 中的 teacherID 列称为外键。子表的外键是父表的主键,用于引用父表。
广告