一对多关系模型

在“班级名册”数据库中,一位老师可以教零个或更多班,而一个班级却由一位(只有一位)老师教。在“公司”数据库中,一个经理管理零个或多个员工,而一个员工则由一个(只有一个)经理管理。在“产品销售”数据库中,客户可以下很多订单;而一个特定客户下的订单。这种关系称为一对多。

一对多关系不能在单个表中表示。例如,在“班级名册”数据库中,我们可以从一个名为“教师”的表开始,该表存储有关教师的信息(例如姓名,办公室,电话和电子邮件)。为了存储每个老师教的课,我们可以创建列class1,class2,class3,但是立即面临要创建多少列的问题。另一方面,如果我们从一个名为Classes的表开始,该表存储有关一个班级的信息,我们可以创建其他列来存储有关(一位)老师的信息(例如姓名,办公室,电话和电子邮件)。但是,由于教师可能会教很多课程,因此其数据将在表“课程”的许多行中重复。

为了支持一对多关系,我们需要设计两个表:例如,一个表Classs,用于存储有关以classID作为主键的类的信息;还有一个教师表,用于存储有关以教师ID为主要键的教师的信息。然后,我们可以通过将表Teacher(即TeacherID)(“ one” -end或父表)的主键存储在表类(“ many” -end或子表)。

子表Classes中的列TeacherID被称为外键。子表的外键是父表的主键,用于引用父表。