3.3.6 关系
一个数据库系统通常包括多张表,为了把不同表的数据组合在一起,必须建立表之间的关系。建立表之间的关系,同时实施表之间的参照完整性,保证表间的数据在操作时保持同步,即对一个数据表的操作影响到另一个表中的数据。
1.关系和参照完整性
“关系”是指通过表之间的公共字段建立关联,使两个表的相关记录能通过关联字段实现联系。公共字段要求字段类型,大小相同,但字段名可以不同,该字段在一个表(主表)中为主键;在另一个表(子表)中为外键。
定义表间关系时,可以同时定义表间的参照完整性,参照完整性是一个规则,用于表间的约束。实施参照完整性,主表和从表的数据必须遵循下列规则。
(1)从表的外键,除空值外不能出现主表的主键中不存在的数据。
(2)如果在从表中存在匹配的记录,不能只修改主表中的主键值或记录。
任务3.28 在“教学信息管理”数据窗口中,建立各表之间的关系。
操作步骤:
(1)打开“教学信息管理”数据库,定义各表的主键。单击“数据表工具”选项卡→“关系”组→“关系”,弹出“关系”窗口,如图3-85所示。
(2)单击“关系工具/设计”上下文选项卡→“关系”组→“显示表”,弹出“显示表”对话框,如图3-86所示,添加学生表、教师表、课程表、成绩表和班级表到“关系”窗口中。
图3-85 “关系”窗口
图3-86 “显示表”对话框
(3)在“关系”窗口中,拖动“班级表”的“班级编号”字段到“学生表”的“班级编号”,释放鼠标,弹出“编辑关系”对话框,选中“实施参照完整性”,“级联更新相关字段”和“级联删除相关记录”,单击“联接类型”按钮,如图3-87所示。
提示:
①只有选中“实施参照完整性”,才能选中“级联更新相关字段”和“级联删除相关记录”。
②级联更新相关字段。当主表中主键值更新时,系统会自动更新从表中的所有相关记录中的匹配值。
③级联删除相关记录。在删除主表中的记录时,系统会自动删除从表中的相关记录。
(4)弹出“联接类型”对话框,如图3-88所示。选中“只包含两个表中联接字段相等的行”,单击“确定”按钮。
图3-87 “编辑关系”对话框
图3-88 “联接属性”对话框
提示:
联接属性对话框的1、2、3分别对应自然联接、左联接和右联接。
①自然联接。主表与子表联接字段相等的记录组合。
②左联接。主表的所有记录和子表与主表联接字段相等的记录的组合。
③右联接。子表的所有记录和主表与子表联接字段相等的记录的组合。
(5)在两表的“学号”字段之间出现一条连线,当选择“实施参照完整性”后,连线两端分别有符号“1”和“∞”,说明两表之间的关系是一对多的关系。同理创建其他表之间的关系,如图3-89所示。
图3-89 创建关系后的“关系”窗口
(6)单击“关系工具/设计”上下文选项卡→“关系”组→“关闭”,保存关系,关闭窗口。
说明:
如果要删除两表间的关系,在“关系”对话框中,选择关系的连线,连线变粗,按Del键,弹出确认提示框,单击“是”按钮,如图3-90所示。
2.子数据表
如果主数据表建立了子数据表,浏览表时,可以根据主数据表关键字联查子数据表对应数据。
建立子数据表有两种方法,一是建立主数据表与子数据表的关系,插入子数据表;二是直接建立主数据表的子数据表。
图3-90 确认提示框
任务3.29 在“学生表”中,建立“成绩”子数据表,联查学生成绩。
操作步骤:
(1)在“关系”图,通过公共字段“学号”,建立主表“学生表”与子表“成绩表”之间的关系。
(2)打开“学生表”数据表视图,记录左边显示“+”,表明“学生表”插入子数据表。单击某条记录“+”号,展开子数据表,可以查看子表中相同“学号”的记录。如图3-91所示。单击“-”号,则隐藏子数据表。
任务3.30 在“学生表”中,定义“10市场营销1班成绩表”子数据表。
操作步骤:
方法一
(1)打开“学生表”的数据表视图,单击“开始”选项卡→“记录”组→“其他”向下按钮,在列表框中选择“子数据表”→“子数据表”,如图3-92所示。
图3-91 “成绩”子数据表
图3-92 定义子数据表
说明:如果“学生表”已定义子数据表,先删除子数据表,删除方法为,“开始”→“记录”组→“其他”→“子数据表”→“删除”,如果没有删除子数据表,新建的子数据表,也会覆盖之前的子数据表。
(2)弹出“插入子数据表”对话框,选择“表”选项卡中的“10市场营销1班成绩表”,同时选择“链接子字段”和“链接主字段”为“学号”,如图3-93所示,单击“确定”按钮。
方法二
打开“学生表”的设计视图,单击“表格工具/设计”上下文选项卡→“显示/隐藏”→“属性表”,弹出“属性表”对话框,在“子数据表名称”组合框中选择“10市场营销1班成绩表”,在“链接子字段”和“链接主子段”文本框中输入“学号”,如图3-94所示。
图3-93 “插入子数据表”对话框
图3-94 “属性表”对话框
提示:
在“属性表”对话框,如果选择“子数据表名称”组合框中的“无”,则删除主数据表中定义的子数据表。
“属性表”中各项含义如下:
①说明:提供表的说明。
②默认视图:设置在打开表时默认视图,可以是数据表、数据透视表或数据透视图。
③有效性规则:和字段的“有效性规则”一样,提供在添加记录或更改记录时必须满足的规则,一般定义字段之间应满足的规则。
④有效性文本:当输入记录不满足有效性规则时显示的文本。
⑤筛选:定义筛选条件。
⑥排序依据:定义排序。