Access数据库教程-表关系指南

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Access数据库教程-表关系指南

良好数据库设计目标之一是消除数据冗余(重复数据)。要实现该目标,可将数据拆分为多个基于主题的表,以使每个因素只显示一次。然后,通过在相关表中放置公共字段来为Microsoft Office A ccess 2007 提供将拆分的信息组合到一起的方法。但是,要正确执行该步骤,必须首先了解表之间的关系,然后在Office A ccess 2007 数据库中指定这些关系。

有关详细信息,请参阅数据库设计基础一文。

本文内容

∙简介

∙表关系类型

∙为什么创建表关系?

∙了解参照完整性

∙查看表关系

∙创建表关系

∙删除表关系

∙更改表关系

∙实施参照完整性

简介

在数据库中为每个主题创建表后,必须为Office A ccess 2007 提供在需要时将这些信息重新组合到一起的方法。具体方法是在相关的表中放置公共字段,并定义表之间的关系。然后,可以创建查询、窗体

和报表,以同时显示几个表中的信息。例如,下面显示的窗体包含来自几个表的信息:

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

……“订单”表……

……“产品”表……

……和“订单明细”表。

“受票方”框中的客户名称是从“客户”表中检索到的,“订单ID”和“订单日期”值来自“订单”表,“产品名称”来自“产品”表,“单价”和“数量”值来自“订单明细”表。这些表以多种方式互相链接在一起,以便将各自的信息呈现到窗体中。

在上述示例中,表中的各个字段必须互相协调,这样它们才能显示有关相同定单的信息。这种协调是使用表之间的关系来实现的。通过是通过匹配键字段中的数据来建立表关系,键字段通常是两个表中使用相同名称的字段。在大多数情况下,这些匹配字段是其中一个表的主键(它为每条记录提供唯一标识符),并且是另一个表的外键。例如,通过在“员工”和“订单”表的“员工ID”字段之间创建表关系,可以将员工和他们负责的订单相关联。

“员工ID”出现在两个表中,一个是主键...

...一个是外键。

表关系的类型

有三种类型的表关系。

∙一对多关系

假设有一个订单跟踪数据库,其中包含“客户”表和“订单”表。客

户可以签署任意数量的订单。“客户”表中显示的任何客户都是这

样,“订单”表中可以显示很多订单。因此,“客户”表和“订单”表

之间的关系就是一对多关系。

要在数据库设计中表示一对多关系,请获取关系“一”方的主键,

并将其作为额外字段添加到关系“多”方的表中。例如在本例中,

可将一个新字段(即“客户”表中的ID 字段)添加到“订单”表中,

并将其命名为“客户ID”。然后,Access 可以使用“订单”表中的

“客户ID”号来查找每个订单的正确客户。

∙多对多关系

考虑“产品”表和“订单”表之间的关系。单个订单中可以包含多个

产品。另一方面,一个产品可能出现在多个订单中。因此,对

于“订单”表中的每条记录,都可能与“产品”表中的多条记录对应。

此外,对于“产品”表中的每条记录,都可以与“订单”表中的多条

记录对应。这种关系称为多对多关系,因为对于任何产品,都

可以有多个订单,而对于任何订单,都可以包含许多产品。请

注意,为了检测到表之间的现有多对多关系,务必考虑关系的

双方。

要表示多对多关系,您必须创建第三个表,该表通常称为联接

表,它将多对多关系划分为两个一对多关系。将这两个表的主

键都插入到第三个表中。因此,第三个表记录关系的每个匹配

项或实例。例如,“订单”表和“产品”表有一种多对多的关系,这

种关系是通过与“订单明细”表建立两个一对多关系来定义的。一

个订单可以有多个产品,每个产品可以出现在多个订单中。

一对一关系

在一对一关系中,第一个表中的每条记录在第二个表中只有一

个匹配记录,而第二个表中的每条记录在第一个表中只有一个

匹配记录。这种关系并不常见,因为多数以此方式相关的信息

都存储在一个表中。可以使用一对一关系将一个表分成许多字

段,或出于安全原因隔离表中的部分数据,或存储仅应用于主

表的子集的信息。标识此类关系时,这两个表必须共享一个公

共字段。

为什么创建表关系?

您可以使用“关系”窗口或从“字段列表”窗格中拖动字段来显式创建表关系。当需要在数据库对象中使用表时,Office A ccess 2007 使用确定如何联接表的表关系。应该在创建其他数据库(如窗体、查询和报表)对象之前创建表关系,这样做有以下几个原因:

∙表关系可为查询设计提供信息

要使用多个表中的记录,通常必须创建联接这些表的查询。查

询的工作方式为将第一个表主键字段中的值与第二个表的外键

字段进行匹配。例如,要返回列出每个客户所有订单的行,您

需要构建一个查询,该查询基于“客户ID”字段将“客户”表与“订

单”表联接起来。在“关系”窗口中,可以手动指定要联接的字段。

但是,如果已经定义了表间的关系,Office A ccess 2007 会基于

现有表关系提供默认联接。此外,如果使用其中一个查询向导,

A ccess 会使用从已定义的表关系中收集的信息为您提供正确

的选择,并用适当的默认值预填充属性设置。

∙表关系可为窗体和报表设计提供信息

在设计窗体或报表时,Office A ccess 2007 会使用从已定义的表

关系中收集的信息为您提供正确的选择,并用适当的默认值预

填充属性设置。

∙可以将表关系作为基础来实施参照完整性,这样有助于防止数据库中出现孤立记录。孤立记录指的是这样的一些记录:它所参照的其他记录根本不存在,例如参照不存在的客户记录的订单记录。

相关文档
最新文档