“关系”简介 | |
| 在Access数据库中,不同表中的数据之间都存在一种关系,这种关系将数据库里各张表中的每条数据记录都和数据库中唯一的主题相联系,使得对一个数据的操作都成为数据库的整体操作,正所谓“牵一发而动全身”。 就拿上几课建立的表来说吧,“客户信息表”中的“公司名称”和“订单信息表”中的“订货单位”所包含的值有很多是相同的。因为签了订单的“订货单位”肯定已经是公司的客户了,这些客户的名称也被记载在“客户信息表”的“公司名称”字段中。当我们已知一个客户的名称时,既可以通过“客户信息表”知道它的“客户信息”,也可以通过“订单信息表”了解它所签订的“订单信息”,所以说“公司名称”作为纽带将“客户资料表”和“订单信息表”中的相应字段信息连接在了一起,为了把数据库中表之间的这种数据关系体现出来,Access提供一种建立表与表之间“关系”的方法。用这种方法建立了关系的数据只需要通过一个主题就可以调出来使用,非常方便。 当我们在“客户信息表”和“订单信息表”中建立这样的关系以后,只需要看看“客户信息表”,在不增加表内容的情况下,就可以看到所有客户的信息及其所有“订单”的情况,使这些数据一目了然。 | |
![]() |
表之间的三种关系 | |
| 在建立表之间的关系前,我们还是要提一下“关系”的三种类型“一对一”、“一对多”和“多对多”。在Access中,可以在两个表之间直接建立“一对一”和“一对多”关系,而“多对多”关系则要通过“一对多”关系来实现。我们分别来说说这三种“关系”。 首先是“一对一”关系,比如下面的两个表:某学校学生月副食补助: ![]() ![]() ![]() 下面来看看“一对多”关系。在“客户信息表”和“订单信息表”中,“订单信息表”中的“订货单位”字段和“客户信息表”中的“公司名称”字段中的值都是一样的。其实只有那些订货了的单位才是公司的客户,所以这两个表之间是靠客户公司的名字联系在一起的。但是每个客户都可以订很多份订单。所以在“客户信息表”中的一个“公司名称”就能对应“订单信息表”中的几份“订单”。这样的关系就是“一对多”。 最后使“多对多”关系,我们知道,书店中有很多书,同时一种书也可以在很多书店里找到。这时“书”和“书店”的关系就是“多对多”关系了。 |
怎样在表之间建立关系 | |
现在我们就开始在表之间建立“关系”,首先单击“工具”菜单下的“关系”命令,弹出“关系”对话框,上面还有一个“显示表”对话框如下图,通过“显示表”对话框可以把需要建立关系的“表”或“查询”加到“关系”对话框中去。![]() ![]() ![]() ![]() |
“关系”与“子数据表” | |
打开“客户信息表”,你会发现这个表中增加了一些新的表,它们是“客户信息表”的子表,也就是“订单信息表”。![]() 通常在建立表之间的关系以后,Access会自动在主表中插入子表。但这些子表一开始都是不显示出来的。在Access中,让子表显示出来叫做“展开”子数据表,让子表隐藏叫做将子数据表“折叠”。展开的时候方便查阅订单信息,而折叠起来以后有可以比较方便的管理“客户信息表”。 要“展开”子数据表,只要用鼠标单击主表第一个字段前面一格,对应记录的子记录就“展开”了,并且格中的小方框内“加号”变成了“减号”。如果再单击一次,就可以把这一格的子记录“折叠”起来了,小方框内的“减号”也变回“加号”。如果主表很大的话,这样一个一个地“展开”和“折叠”子数据表就显得太麻烦了,Access为我们提供了一种操作方式,它可以一下子“展开”或“折叠”当前数据表的所有子数据表。打开一个带有子数据表的表时,在“格式”菜单“子数据表”项的子菜单中,有三个命令“全部展开”、“全部折叠”和“删除”,“全部展开”命令可以将主表中的所有子数据表都“展开”,“全部折叠”命令可以将主表中的所有子数据表都“折叠”起来。不需要在主表中显示子数据表的这种方式来反映两个表之间的“关系”时,就可以使用“删除”命令来把这种用子数据表显示的方法删除。但这时两个表的“关系”并没有被删除。如果想恢复在主表上显示“子数据表”的形式,可以先打开主表,比如“客户信息表”,单击“插入”菜单下的“子数据表”命令,弹出“插入子数据表”对话框如下图: ![]() 结束语:这一课通过“客户信息表”和“订单信息表”将表与表之间的“关系”展现在我们面前,如果你已经掌握了表的操作,那就开始看下一课;如果你还没有完全掌握“表”,就将这四课再好好看一看,因为表是数据库中最重要的一个部分了。 |
实施参照完整性 | |
| 在我们建立表之间的关系时,窗口上有一个复选框“实施参照完整性”,单击它之后,“级联更新相关字段”和“级联删除相关字段”两个复选框就可以用了。 如果选定“级联更新相关字段”复选框,则当更新父行(一对一、一对多关系中“左”表中的相关行)时,Access就会自动更新子行(一对一、一对多关系中的“右”表中的相关行),选定“级联删除相关字段”后,当删除父行时,子行也会跟着被删除。而且当选择“实施参照完整性”后,在原来折线的两端会出现“1”或“OO”符号,在一对一关系中“1”符号在折线靠近两个表端都会出现,而当一对多关系时“OO”符号则会出现在关系中的右表对应折线的一端上。 设置了实施参照完整性就可以使我们在表中修改了一个记录的时候,不会影响到查询的操作。特别是在有很多表,而且各个表之间都有关系联接时,“实施参照完整性”会带来更多的方便。 | |
![]() |