国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > access > ACCESS:定义表之间的关系

ACCESS:定义表之间的关系

来源:程序员人生   发布时间:2013-10-07 14:50:12 阅读次数:3626次

  “关系”简介

  在Access数据库中不同表中的数据之间都存在一种关系这种关系将数据库里各张表中的每条数据记录都和数据库中唯一的主题相联系使得对一个数据的操作都成为数据库的整体操作正所谓“牵一发而动全身”

  就拿上几课建立的表来说吧“客户信息表”中的“公司名称”和“订单信息表”中的“订货单位”所包含的值有很多是相同的因为签了订单的“订货单位”肯定已经是公司的客户了这些客户的名称也被记载在“客户信息表”的“公司名称”字段中当我们已知一个客户的名称时既可以通过“客户信息表”知道它的“客户信息”也可以通过“订单信息表”了解它所签订的“订单信息”所以说“公司名称”作为纽带将“客户资料表”和“订单信息表”中的相应字段信息连接在了一起为了把数据库中表之间的这种数据关系体现出来Access提供一种建立表与表之间“关系”的方法用这种方法建立了关系的数据只需要通过一个主题就可以调出来使用非常方便

  当我们在“客户信息表”和“订单信息表”中建立这样的关系以后只需要看看“客户信息表”在不增加表内容的情况下就可以看到所有客户的信息及其所有“订单”的情况使这些数据一目了然

ACCESS:定义表之间的关系

  表之间的三种关系

  在建立表之间的关系前我们还是要提一下“关系”的三种类型“一对一”“一对多”和“多对多”在Access中可以在两个表之间直接建立“一对一”和“一对多”关系而“多对多”关系则要通过“一对多”关系来实现我们分别来说说这三种“关系”

  首先是“一对一”关系比如下面的两个表某学校学生月副食补助

  和某学校学生月助学金

  我们降这两个表中的数据进行汇总生成新的表“某学校学生月实发金额汇总”

  由于姓名字段可能会出现重复的情况所以只有通过不可能出现重复的值的字段“学号”才能将这两个表唯一地联系起来保证“副食补贴”和“助学金”不至于错误地发放这样“月副食补助表”中的一个学号就只对应“月助学金”中的一个学号绝对不会弄错这样两个表的关系很明显就是“一对一”了

  下面来看看“一对多”关系在“客户信息表”和“订单信息表”中“订单信息表”中的“订货单位”字段和“客户信息表”中的“公司名称”字段中的值都是一样的其实只有那些订货了的单位才是公司的客户所以这两个表之间是靠客户公司的名字联系在一起的但是每个客户都可以订很多份订单所以在“客户信息表”中的一个“公司名称”就能对应“订单信息表”中的几份“订单”这样的关系就是“一对多”

  最后使“多对多”关系我们知道书店中有很多书同时一种书也可以在很多书店里找到这时“书”和“书店”的关系就是“多对多”关系了

  怎样在表之间建立关系

  现在我们就开始在表之间建立“关系”首先单击“工具”菜单下的“关系”命令弹出“关系”对话框上面还有一个“显示表”对话框如下图通过“显示表”对话框可以把需要建立关系的“表”或“查询”加到“关系”对话框中去

  将两个表“客户信息表”和“订单信息表”都选中单击“添加”按钮把它们都添加到“关系”对话框上单击“关闭”按钮把“显示表”对话框关闭以后再需要打开它时只要在“关系”对话框上单击鼠标右键选择“显示表”命令就可以了

  在“关系”对话框中只有“客户信息表”和“订单信息表”的字段列表怎么建立关系呢?其实表都是由字段构成的表之间的关系也由字段来联系让不同表中的两个字段建立联系以后表中的其他字段自然也就可以通过这两个字段之间的关系联系在一起了也就是说在“客户信息表”中的“公司名称”和“订单信息表”中的“订货单位”两个字段之间建立关系就可以了先在“客户信息表”字段列表中选中“公司名称”项然后按住鼠标左键并拖动鼠标到“订单信息表”中的“订货单位”项上松开鼠标左键这时在屏幕上出现“编辑关系”对话框

  这个对话框可以帮助我们编辑所建立的关系通过左面的列表框可以改变建立关系的两个字段的来源可以单击“新建”按钮创建新的关系或者单击“联接类型”为联接选择一种联接类型单击“联接类型”按钮在弹出的新对话框中选择第三项然后单击“确定”按钮就可以了回到“编辑关系”对话框后单击“创建”按钮

  现在在两个列表框间就出现了一条“折线”将“订货公司”和“公司名称”两个选项联接在一起关闭“关系”对话框并保存对“关系”布局的修改在表间建立关系就是这样的

  “关系”与“子数据表”

  打开“客户信息表”你会发现这个表中增加了一些新的表它们是“客户信息表”的子表也就是“订单信息表”

  在这种“一对多”的情况下完全可以通过“客户信息表”中的“公司名称”信息将这两个表的内容都串起来在主表中的每一个记录下面都会带着一个甚至几个子表中的“订单”记录具有“一对一”关系的两个表之间互为对方的“子表”

  通常在建立表之间的关系以后Access会自动在主表中插入子表但这些子表一开始都是不显示出来的在Access中让子表显示出来叫做“展开”子数据表让子表隐藏叫做将子数据表“折叠”展开的时候方便查阅订单信息而折叠起来以后有可以比较方便的管理“客户信息表”

  要“展开”子数据表只要用鼠标单击主表第一个字段前面一格对应记录的子记录就“展开”了并且格中的小方框内“加号”变成了“减号”如果再单击一次就可以把这一格的子记录“折叠”起来了小方框内的“减号”也变回“加号”如果主表很大的话这样一个一个地“展开”和“折叠”子数据表就显得太麻烦了Access为我们提供了一种操作方式它可以一下子“展开”或“折叠”当前数据表的所有子数据表打开一个带有子数据表的表时在“格式”菜单“子数据表”项的子菜单中有三个命令“全部展开”“全部折叠”和“删除”“全部展开”命令可以将主表中的所有子数据表都“展开”“全部折叠”命令可以将主表中的所有子数据表都“折叠”起来不需要在主表中显示子数据表的这种方式来反映两个表之间的“关系”时就可以使用“删除”命令来把这种用子数据表显示的方法删除但这时两个表的“关系”并没有被删除如果想恢复在主表上显示“子数据表”的形式可以先打开主表比如“客户信息表”单击“插入”菜单下的“子数据表”命令弹出“插入子数据表”对话框如下图

  在列表框中选取“表”“订单信息表”然后在“链接子字段”组合框中选取“订货单位”字段并在“链接主字段”组合框中选取“公司名称”字段单击“确定”按钮就可以在主数据表“客户信息表”中重新插入子数据表“订单信息表”了必须要注意的是在任何一个数据表中插入子数据表都需要在两个表之间建立“关系”如果这两个表的“主链接字段”和“子链接字段”之间还没有建立联结的话在单击“确定”按钮插入“子数据表”的时候就会询问是否要在这两个表之间建立相应的“关系”只有建立“关系”以后才能完成“插入子数据表”过程用这样的方式在表之间建立“关系”不像在“关系”对话框中建立的“关系”那样直观所以我们提倡在关系对话框中建立好表与表之间的“关系”由Access自动地创建子数据表

  结束语这一课通过“客户信息表”和“订单信息表”将表与表之间的“关系”展现在我们面前如果你已经掌握了表的操作那就开始看下一课;如果你还没有完全掌握“表”就将这四课再好好看一看因为表是数据库中最重要的一个部分了

  实施参照完整性

  在我们建立表之间的关系时窗口上有一个复选框“实施参照完整性”单击它之后“级联更新相关字段”和“级联删除相关字段”两个复选框就可以用了

  如果选定“级联更新相关字段”复选框则当更新父行(一对一一对多关系中“左”表中的相关行)时Access就会自动更新子行(一对一一对多关系中的“右”表中的相关行)选定“级联删除相关字段”后当删除父行时子行也会跟着被删除而且当选择“实施参照完整性”后在原来折线的两端会出现“”或“OO”符号在一对一关系中“”符号在折线靠近两个表端都会出现而当一对多关系时“OO”符号则会出现在关系中的右表对应折线的一端上

  设置了实施参照完整性就可以使我们在表中修改了一个记录的时候不会影响到查询的操作特别是在有很多表而且各个表之间都有关系联接时“实施参照完整性”会带来更多的方便

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生