2.3 设计 Access 2003数据表对象之间的关联
? 在数据库应用系统中,一个数据库中常常包含
若干个数据表,用以存放不同类别的数据集合。
而这些数据集合存放于同一个数据库中,是由
于它们之间存在着相互联接的关系。这种数据
集合间的相互联接称之为关联。在关系数据库
的实现中,主要存在两种关联:一对一的关联
和一对多的关联。
? Access 2003是一个关系型数据库管理系统,上
述两种关联是通过设定数据库中表对象的关联
来实现的。
? 数据表关联的目的是为了实现关系联接运算,
即将两个数据表中的相关记录联接形成一个新
关系中的一条记录,这个新关系称为关联数据表。
主目录
2.3 设计 Access 2003数据表对象之间的关联
2.3.1 一对一关联
2.3.2 一对多关联
2.3.3 子数据表
2.3.4 建立数据库中表间关联的操作
一对一关联是指两个数据表对象中的各条记
录之间存在这样一种对应的关系,只有当
两个数据表中某一条记录的联接关键字段
值相等时,两个数据表中的这一条记录才
能联接成为关联数据表中的一条记录。一
对一关联要求两个关联数据表中的联接关
键字段分别是这两个数据表的主关键字段。
2.3.1 一对一关联
2.3.1 一对一关联
可以 GrocerMIS为例讨论关联的意义。在“库存数
据记录”表中,“货号”字段中的数据必须互不
相同,用以表示不同的商品。只有在“库存数据
记录”表中存在的商品才可以通过“商品上柜数
据录入”操作,使其添加到“柜存数据记录”表
中,且在“柜存数据记录”表中的同一商品的货
号必须与“库存数据记录”表中的货号相同,如
此方能保证各种查询和统计数据的正确性。这就
表示“库存数据记录”表中的记录与“柜存数据
记录”表中的记录必须是一对一的关联,且“库
存数据记录”表称为主表,“柜存数据记录”表
称为从表,而两个数据表间的联接关键字是“货
号”字段。
2.3.2 一对多关联
? 一对多关联不同于一对一关联,它不要求两个
关联数据表中的联接关键字段分别是这两个数
据表的主关键字段,这意味着联接关键字段值
相等的记录可能不只一条。如此一来,一对多
关联就存在两种不同的形式。第一种一对多关
联形式为,取主表中的所有记录,并逐一从从
表中选取那些与主表中联接关键字段值相等的
记录,联接形成关联数据表中的一条记录。第
二种一对多关联形式为,取从表中的所有记录,
并逐一从主表中选取那些与从表中联接关键字
段值相等的记录,联接形成关联数据表中的一
条记录。
2.3.2 一对多关联
? 可以 GrocerMIS为例讨论第一种一对多关联的
形式。在“柜存数据记录”表和“销售数据记
录”表之间存在着一对多的关联,“柜存数据
记录”表中记录的商品可以分多次售出。因此,
在“柜存数据记录”表中同一商品将在“销售
数据记录”表中被记录多次。这就表示“柜存
数据记录”表中的记录与“销售数据记录”表
中的记录实际是一对多的关联,且“柜存数据
记录”表是主表,“销售数据记录”表是从表,
两个数据表间的联接关键字是“货号”字段。
在以此形成的关联数据表中,一些“柜存数据
记录”表中的记录将重复记录几次,重复记录
的次数取决于一件商品的销售次数。
2.3.3 子数据表
? Access 2003数据表对象支持子数据表。所谓子
数据表,是指在一个数据表视图中显示已与其
建立关联的数据表视图。
? 在建有关联的主数据表视图上,每一条记录左
端均有一个关联标记“□”。在未显示子数据
表时,关联标记“□”内为一个,+”号,此时
单击某以记录的关联标记“□”,即可显示该
记录对应的子数据表记录数据,而该记录左端
的关联标记“□”内成为一个,-”号。
? 若需展开所有记录的子数据表数据,可以在数
据库设计视图的菜单栏上单击 【 格式 】 |【 子数
据表 】 |【 全部展开 】 。若需将所有展开的子数
据表折叠,可以在数据库设计视图的菜单栏上单击 【 格式 】 |【 子数据表 】 |【 全部折叠 】 。
2.3.3 子数据表
2.3.4 建立数据库中表间关联的操作
? 1.选定需要建立关联的表对象
? 单击常用工具栏中的“关系”工具按钮“”
(或在数据库设计视图菜单栏上单击 【 工具 】 |
【 关系 】 ),随即出现如图 2-17所示的“关系
设计视图”窗口。若已定义了一些关系,该窗
口内会显示这些关系;若尚未定义任何关系,
该窗口内没有任何内容;若需定义新的关系,
可在该窗口内单击鼠标右键,在随即弹出的快
捷菜单中单击 【 显示表 】,也可在关系设计视
图的菜单栏上单击 【 关系 】 |【 显示表 】,即会
弹出“显示表”对话框。
1.选定需要建立关联的表对象
? 在 GrocerMIS数据库中,需要在“库存数据记录”、
“柜存数据记录”和“销售数据记录”三个表间建立
关联,其关联关键字段是“货号”字段。因此,需要
将数据库中的上述三个表对象添加至关系窗口中。如
图所示,即为在关系窗口中逐一添加了这三个数据表
对象后的形式。
2.设定各个表对象间的关联
? 在“关系设计视图”窗口(如图所示)中,可
以为显示在其中的各表对象设定关联。用鼠标
指向主表中的关联字段,按住鼠标左键将其拖
曳至从表的关联字段上放开,就会弹出“编辑
关系”对话框,如图所示。
? 为了建立“库存数据记录”表中“货号”字段
与“柜存数据记录”表中“货号”字段之间的
联接关系,应从“库存数据记录”表中的“货
号”字段,按住鼠标左键将鼠标拖曳至“柜存
数据记录”表中的“货号”字段上放开。随之
弹出的“库存数据记录”表与“柜存数据记录”
表间的“编辑关系”对话框如图所示。
“编辑关系”对话框
GrocerMIS关系设计视图
4.选择关联类型
? 在,编辑关系”对话框中,单击“联接类型”按钮
“”,即可弹出“联接属性”对话框,如图所示。从
图中可见,Access 2003数据库支持三种不同类型的关
联属性。
? 三种不同类型联接属性:只包含来自两个表的联接字
段相等处的行,包含所有“主表”的记录和那些联接
字段相等的“从表”的记录,包括所有“从表”的记
录和那些联接字段相等的“主表”的记录。应该根据
实际需要从中选定一种联接属性类型。对于 GrocerMIS
实例,应该选择“只包含来自两个表的联接字段相等
处的行” 。