3.4.1 表之间关系类型的确定
表之间的关系有3种类型,即一对一关系、一对多关系和多对多关系。创建哪种类型的关系取决于表之间相关联的字段是如何定义的。
(1)如果两个表相关联字段都是主键,则创建一对一关系。在一对一关系中,A表中的一条记录仅能与B表中的一条记录相匹配,同样B表中的一条记录也只能与A表中的一条记录相匹配。例如,在“教务管理系统”数据库中,有“教师”表和“教师工资”表,两个表中的“工号”都是主键,这两个表是一对一的关系。
(2)如果两个表仅有一个相关联字段是主键,则创建一对多关系。一对多关系是最常用的关系类型。在一对多关系中,A表中的一条记录能与B表中的多条记录相匹配,但是B表中的一条记录仅能与A表中的一条记录相匹配。例如,“教师”表与“课程”表都有“工号”字段,但仅有“教师”表中的“工号”是主键,“教师”表与“课程”是一对多的关系。
(3)在多对多关系中,A表中的一条记录能与B表中的多条记录相匹配,并且B表中的一条记录也能与 A表中的多条记录相匹配,这两个表是多对多的关系。两个表之间的多对多关系实际上是某两个表与第三个表的两个一对多关系。第三个表的字段包含前两个表的主键。例如,“学生”表与“课程”表是多对多关系,“修课成绩”表把“学生”表与“课程”表之间的多对多关系转化为两个一对多关系,即“学生”表与“修课成绩”表是一对多关系(两个表相关联字段是“学号”),“课程”表与“修课成绩”表也是一对多关系(两个表相关联字段是“课程编号”)。
在定义表之间的关系时,应设立一些准则,这些准则有助于数据的完整性。参照完整性就是在输入或删除记录时,为维护表之间已定义的关系而必须遵循的规则。如果实施了参照完整性,那么当主表中没有相关记录时,就不能将记录添加到相关表中,也不能在相关表中存在匹配的记录时,删除主表中的记录,更不能在相关表中有相关记录时,更改主表中的主关键字值。也就是说,实施了参照完整性之后,对表中主关键字的字段进行操作时系统会自动检查主关键字的字段,看一看该字段是否被添加、修改或删除。如果对主关键字的修改违背了参照完整性的要求,那么系统将会自动强制执行参照完整性。
注意:
(1)当创建表之间的关系时,相关联的字段不一定要有相同的名称,但必须有相同的数据类型(除主键是“自动编号”数据类型外)。
(2)当主键字段是“自动编号”数据类型时,可以与“数字”数据类型并且“字段大小”属性为“长整型”的字段关联。
(3)如果分别来自两个表的两个字段都是“数字”字段,只有“字段大小”属性相同,这两个字段才可以关联。