“关系”简介
在Access数据库中,不同表中的数据之间都存在一种关系,这种关系将数据库里各张表中的每条数据记录都和数据库中唯一的主题相联系,使得对一个数据的操作都成为数据库的整体操作,正所谓“牵一发而动全身”。
就拿上几课建立的表来说吧,“客户信息表”中的“公司名称”和“订单信息表”中的“订货单位”所包含的值有很多是相同的。因为签了订单的“订货单位”肯定已经是公司的客户了,这些客户的名称也被记载在“客户信息表”的“公司名称”字段中。当我们已知一个客户的名称时,既可以通过“客户信息表”知道它的“客户信息”,也可以通过“订单信息表”了解它所签订的“订单信息”,所以说“公司名称”作为纽带将“客户资料表”和“订单信息表”中的相应字段信息连接在了一起,为了把数据库中表之间的这种数据关系体现出来,Access提供一种建立表与表之间“关系”的方法。用这种方法建立了关系的数据只需要通过一个主题就可以调出来使用,非常方便。
当我们在“客户信息表”和“订单信息表”中建立这样的关系以后,只需要看看“客户信息表”,在不增加表内容的情况下,就可以看到所有客户的信息及其所有“订单”的情况,使这些数据一目了然。
表之间的三种关系
在建立表之间的关系前,我们还是要提一下“关系”的三种类型“一对一”、“一对多”和“多对多”。在Access中,可以在两个表之间直接建立“一对一”和“一对多”关系,而“多对多”关系则要通过“一对多”关系来实现。我们分别来说说这三种“关系”。
首先是“一对一”关系,比如下面的两个表:某学校学生月副食补助:
和某学校学生月助学金:
我们降这两个表中的数据进行汇总生成新的表:“某学校学生月实发金额汇总”:
由于姓名字段可能会出现重复的情况,所以只有通过不可能出现重复的值的字段“学号”,才能将这两个表唯一地联系起来,保证“副食补贴”和“助学金”不至于错误地发放,这样“月副食补助表”中的一个学号就只对应“月助学金”中的一个学号,绝对不会弄错。这样两个表的关系很明显就是“一对一”了。
下面来看看“一对多”关系。在“客户信息表”和“订单信息表”中,“订单信息表”中的“订货单位”字段和“客户信息表”中的“公司名称”字段中的值都是一样的。其实只有那些订货了的单位才是公司的客户,所以这两个表之间是靠客户公司的名字联系在一起的。但是每个客户都可以订很多份订单。所以在“客户信息表”中的一个“公司名称”就能对应“订单信息表”中的几份“订单”。这样的关系就是“一对多”。
最后使“多对多”关系,我们知道,书店中有很多书,同时一种书也可以在很多书店里找到。这时“书”和“书店”的关系就是“多对多”关系了。