深圳office培训 深圳excel培训
深圳excel培训 深圳office培训
咨询服务
深圳office培训
深圳office培训
office培训
excel培训
ppt培训
vba培训
access培训
word培训
visio培训
project培训
outlook培训
数据库培训
深圳access培训
深圳sql培训
深圳office培训
 

access中的表关系详解


2016年8月26日 作者: 来源:

既然已经将信息划分到各表中,接下来需要一种方法,以有意义的方式再次将信息组织到一起。例如,下面的窗体包含来自几个表的信息。


--------------------------------------------------------------------------------
“订单”窗体

标注 1 此窗体中的信息来自“客户”表……

 

标注 2 ……“雇员”表……

 

标注 3 ……“订单”表……

 

标注 4 ……“产品”表……

 

标注 5 ……和“订单明细”表。

 

--------------------------------------------------------------------------------

Access 是关系数据库管理系统。在关系数据库中,您将信息划分到基于主题的不同表中。然后使用表关系根据需要将信息组合在一起。

 

创建一对多关系


请考虑下面的示例:产品订单数据库中的“供应商”和“产品”表。供应商可以提供任意数量的产品。“供应商”表中表示的任何供应商都是这样,“产品”表中可以表示很多产品。因此,“供应商”表和“产品”表之间的关系就是一对多关系。

一对多的概念

为了在数据库设计中表示一对多关系,请获取关系“一”方的主键,并将其作为附加的一列或多列添加到关系“多”方的表中。例如在本例中,将“供应商”表中的“供应商 ID”列添加到“产品”表中。Access 可以随后使用“产品”表中的供应商 ID 号来查找每个产品的正确供应商。

“产品”表中的“供应商 ID”列称为外键。外键是另一个表的主键。“产品”表中的“供应商 ID”列之所以是外键,是因为它也是“供应商”表中的主键。

通过建立主键和外键的配对提供了联接相关表的基础。如果不确定哪些表应该共享一个公共列,通过确定一对多关系,就可以确保涉及的两个表的确需要一个共享列。


考虑一下“产品”表和“订单”表之间的关系。

单个订单中可以包含多个产品。另一方面,一个产品可能出现在多个订单中。因此,对于“订单”表中的每条记录,都可能与“产品”表中的多条记录对应。同样,对于“产品”表中的每条记录,都可能与“订单”表中的多条记录对应。这种关系称为多对多关系,因为对于任何产品,都可能有多个订单,而对于任何订单,都可能包含许多产品。请注意,为了检测到表之间的多对多关系,务必要同时对关系的双方进行考虑。

两个表的主题(即订单和产品)具有多对多关系, 这就带来了一个问题。为了理解这个问题,请想像一下,如果试图向“订单”表添加“产品 ID”字段来创建两个表之间的关系,会发生什么情况。为了让每个订单包含多个产品,则需要在“订单”表中为每个订单添加多条记录。与单个订单相关的每个行将重复使用相同的订单信息,从而产生可能导致数据不准确的低效设计。如果在“产品”表中放置“订单 ID”字段,也会遇到相同的问题,即在“产品”表中每个产品将有多条记录与之对应。如何解决此问题呢?

答案是创建第三个表(通常称为联接表),该表将多对多关系分为两个一对多关系。将这两个表的主键都插入到第三个表中。因此,第三个表记录关系的每个匹配项或实例。

多对多关系

“订单明细”表中的每条记录都代表订单上的一个行项目。“订单明细”表的主键包含两个字段,即“订单”表和“产品”表的外键。仅使用“订单 ID”字段作为此表的主键将不起作用,因为一个订单可能具有多个行项目。“订单 ID”对订单上的每个行项目都会重复,因此该字段并不包含唯一的值。仅使用“产品 ID”字段作为主键也不起作用,因为一个产品可能会出现在多个不同的订单中。但如果这两个字段联合起来,就始终都能为每条记录生成一个唯一值。

在产品销售数据库中,“订单”表和“产品”表并不直接彼此关联。它们是通过“订单细节”表间接关联的。订单和产品之间的多对多关系是通过使用两个一对多关系在数据库中得到表示的:

“订单”表和“订单细节”表具有一对多关系。每个订单可以具有多个行项目,而每个行项目仅与一个订单相关。
“产品”表和“订单细节”表具有一对多关系。每个产品有多个与之关联的行项目,而每个行项目仅引用一个产品。
通过“订单细节”表,可以确定特定订单中的所有产品。还可以确定特定产品的所有订单。

引入了“订单细节”表后,表和字段列表可能与以下所示类似:

创建一对一关系


另一种关系类型是一对一关系。例如,假定需要记录某种特别的补充产品信息,此类信息很少需要使用或仅适用于少数产品。由于并不经常需要此信息,并且在“产品”表中存储此信息会导致不适用此信息的每个产品出现空白,因此请将此类信息放入单独的表中。和“产品”表一样,可以使用“产品 ID”作为主键。此补充表和“产品”表之间是一对一的关系。对于“产品”表中的每条记录,在补充表中都存在单一的匹配记录。标识此类关系时,这两个表必须共享一个公共字段。

检测到数据库中对一对一关系的需求时,请考虑是否可以将两个表中的信息放入一个表中。如果由于某种原因而不希望这样做,或许是因为这样会造成大量空白字段,下面的列表显示如何在设计中表示这种关系:

如果两个表具有相同主题,则可以通过在两个表中使用相同的主键来建立这种关系。
如果两个表具有不同的主题和不同的主键,则请选择一个表(任意一个表),并将其主键作为外键插入到另一个表中。
通过确定表之间的关系,可帮助确保具有正确的表和列。当存在一对一或一对多关系时,所涉及的表需要共享一个或多个列。当存在多对多关系时,需要使用第三个表来表示该关系。


阅读:1973 上一则:access设计和使用表相关知识 下一则:access中的数据类型

返回前页 返回顶部
温馨提示:本中心是深圳较为专业office培训机构、咨询及报名请先预约,电话:0755-82124110。
深圳地址:深圳红荔路四川大厦1109B-1110(3号龙岗线通新岭地铁站A出口10米)
热线:0755-82124110(福田、南山、宝安) 0755-22205758(罗湖、龙岗、龙华) 13510024571(东莞、惠州、珠海、广州)
北京地址:北京清华大学华业大厦三区三楼 版权所有:深圳万博计算机教育 粤ICP备11006947号-1
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训 欢迎咨询!
您好!请点击这里咨询万博教育
深圳万博吴老师
您好!请点击这里咨询万博教育
深圳万博史老师
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训