使用关系

表关系入门

您的浏览器不支持视频。 安装 Microsoft Silverlight、Adobe Flash Player 或 Internet Explorer 9。

关系数据库的功能在于可跨表合并数据。若要执行此操作,首先需要在表间建立关系。然后,启用 Access 来合并查询、表单和报表中的数据。

若要查看为某数据库定义的所有现有关系,请打开一个 Access 模板,转到“数据库工具”选项卡,然后选择“关系”。

注意: 如果你打开空白数据库或尚未定义任何表关系,Access 将提示你添加表或查询。需要至少两个表才能添加关系。最好先生成所有表。若要了解详细信息,请参阅使用查阅向导创建关系使用“关系”窗格创建关系

了解“关系”视图

“关系”视图中的线条表示表间的连接。下图中,左侧的表是父表。右侧的表是子表。其间的线条连接用于匹配数据的字段(本例中即“订单 ID”和“产品 ID”)。

关系由父字段和子字段间的线条表示。

线条和符号表示表间的联系:

  • 组线条表示当前正实施引用数据完整性。这很好。它将使数据保持同步。

  • 在图示中,数字 1 表示该表格中仅可存在一个匹配记录。在此处所示的“订单”表中,每个订单仅匹配一条记录。

  • ∞ 符号表示多个记录可包含同一 ID。在此处所示的“订单明细”表中,订单(由其订单 ID 表示)可能出现多次,因为同一订单可能包含多个产品。

表间关系的类型

间关系的类型有三种:

  • 一对一。每个表中的每个项仅显示一次。例如,每个员工仅可使用一辆公司提供的汽车。有关详细信息,请参阅创建一对一关系

  • 一对多。一个表中的一个项与另一表中的多个项存在对应关系。例如,每个采购订单可以包含多个产品。

  • 多对多。一个表中的一个或多个项可与另一表中一个或多个项存在对应关系。例如,每个订单可以包含多个产品,而每个产品又可能出现在多个订单中。若要了解详细信息,请参阅创建多对多关系

一对多关系

设计良好的数据库中表间最常见的关系之一是一对多关系。

通常,表间关系取决于表中的主键。请记住,主键是每条记录的唯一标识符(通常是数值)。若要显示两个不同表中的信息相关联,通常可使用其中一个表中的主键创建关系。

例如,在此处所示的关系中,“联系人”表中的每个人都有一个 ID,这便是主键(由其旁边的钥匙符号表示)。该 ID 也将显示在“资产”表”的“所有者”字段中。若要向与资产关联的人员发送电子邮件,可获取“电子邮件地址”字段中的值。为此,请查找“资产”表“所有者”字段中的值,然后在“联系人”表中搜索该 ID。连接线一端的数字 1和另一端的 ∞ 符号表示这是个一对多关系,因此一个联系人可与多项资产关联。

一对多关系

编辑关系

如果你要修改现有数据库或从模板创建数据库,可编辑现有关系以满足需求。

注意: 如果你要使用的表已在使用中,必须首先将其关闭,并关闭使用这些表的打开对象。

  1. 选择“数据库工具”>“关系”。

  2. 选择连接两个相关表的线条。

    提示: 如未看到所需关系,则在“设计”选项卡的“关系”组中,选择“所有关系”。

  3. 在“设计”选项卡上,选择“编辑关系”。

    编辑表间现有关系

    表/查询”是位于左侧的父表(在本例中即“客户”表)。

    相关表/查询”是子表(在本示例中即“订单”表)。

    即使表在“关系”视图中未按此顺序显示,其在对话框中位置也将表示其连接线的方向及关系。例如,当关系为一对多关系时,这就非常重要,因为它表示左侧表是唯一的父表,右边的表是众多的子表。

  4. 若要更改连接这些表的字段,请在所示每个表下方选择不同的字段。在本示例中,“客户”表中的“ID”字段连接到“订单”表中的“客户 ID”字段。

  5. 更改 Access 同步表间数据的方式。

    实施引用完整性

    为避免数据无效并在跨表关系间保持引用同步,请选中此选项。

    例如,假设“员工”和“员工福利”表之间具有一对一关系。如果某员工离开公司,你将其从“员工”表中删除,那么“员工福利”表中的相关员工记录也将被删除。

    有时候实施引用完整性并无意义。例如,假定“运货商”和“订单”之间存在一对多关系。你删除某运货商,而该运货商映射到“订单”表中的订单。这些订单将变为孤立项,即其仍包含运货商 ID,但由于其引用的记录不复存在,该 ID 也不再有效。

    级联更新相关字段

    若要确保相关字段中的数据在所有相关表中得到更新,请选择此项。

    例如,假设你只想更改运货商 ID。设置此选项可确保运货商 ID 不仅在“运货商”表中更新,还将在与该其相连接且包括该运货商 ID 的其他任何表(例如“订单”表)中得到更新。

    级联删除相关记录

    是否选择此项取决于是否需要在某些表中保留记录,即使其他表中可能已删除这些记录。

    例如,假定你删除一个运货商。如果选中此选项,Access 将删除引用该运货商 ID 的所有表中所有记录,包括(“订单”表中)由该运货商运送的所有订单。仅在你确定要删除订单历史记录时选择此选项。

  6. 若要将表间关系从内部联接更改为外部联接,请选择“联接类型”按钮。有关详细信息,请参阅创建具有外部联接的查询

删除表关系

注意: 如果你要使用的表已在使用中,必须首先将其关闭,并关闭使用这些表的打开对象。

删除表关系:

  1. 选择“数据库工具”>“关系”。

  2. 选择连接两个相关表的线条。

    提示: 如未看到所需关系,则在“设计”选项卡的“关系”组中,选择“所有关系”。

  3. 选择“删除”键。如果系统提示你是否确认要删除该关系,请选择“”。

注意: 删除关系时,也将删除对该关系的引用完整性支持(若有)。这将使 Access 不再阻止将导致一对多关系“多”侧出现孤立项的更改。

希望获得更多信息?

创建关系

删除关系

Excel 培训

Outlook 培训

数据库包含表后,可以在它们之间构建关系。关系非常重要,因为它们可以在你分离数据之后将表重新链接在一起,并且它们对设计查询的方式和从数据中获取答案的方式有很大的影响。

任何关系数据库都在其各个表之间使用以下三种类型的关系:“一对多”、“多对多”和“一对一”。

使用的关系取决于数据。当一个表中的单个记录与其他表中的一个或多个记录相关时,为一对多关系。

我们的示例数据库中使用了这种类型的关系。一位客户可以有一个或多个电话号码,但每个电话号码仅与一位客户相关。

表 A 中的单个记录可与表 B 中的一个或多个记录相关,表 B 中的单个记录也可与表 A 中的一个或多个记录相关,即为多对多关系。

通常,订单跟踪数据库包含多对多关系,其中一个订单可以包含多个产品,并且一种产品可包含在多个订单中。

学生数据库中也包含这种类型的关系,在此数据库中,多名学生可能占用多个教室。

一个表中的单个记录仅与另一表中的单个记录相关,即为一对一关系。例如,一名员工可能驾驶一辆公司汽车。但是,你不会经常看到此类关系,因为一对一关系并不常见。

现在,我们选择“数据库工具”、“关系”。这将打开“关系”窗格。你会经常用到此工具。

你可以在其中构建和管理大部分关系。在这里,你将看到一个典型的关系:两个表之间带有一条线。这条线显示这两个表是相关的。

此外,这是一对多关系。辨别此关系的依据是关系线上带有“1”和“无穷”符号。这些符号表明了一些重要概念。

首先,“一”侧的表为父表,“多”侧的表为子表。

其次,你可以认为大多数关系都具有“几个侧面”。在此例中,在“一”侧和“多”侧各有一个表。

“侧面”非常重要,因为它们会影响设计查询的方式。

现在,选中关系线,然后在功能区中选择“编辑关系”。

有三个关系设置会影响数据,并可帮助你正确使用关系:“引用完整性”、“级联更新”和“级联删除”。下面是其用途。

首先,“引用完整性”可同步两个表中的记录。此设置对保持数据准确性非常重要,因此我们几乎总是会设置此项。

使用“引用完整性”后,除非在“客户”表中有名字,否则将无法添加电话号码。这可以防止创建所谓的“孤立项”:即没有父记录的数据。

例如,想像没有附加订单的销售额,即可明白设置引用完整性为何如此重要。

级联更新”设置允许将对父侧进行的任何更改传递到“子”侧或“多”侧的任何相关记录。

例如,如果一名客户更改了他的名字,只需在“客户”表中输入该更改,任何相关的记录都会更改。

级联删除”设置控制能否删除数据。如果没有选中此选项,则不能删除数据。如果选中了此选项,则当你删除一条记录时,Access 会删除与该记录相关的所有内容。

例如,如果删除“客户”,则也会删除该客户的电话号码。

这是一个很好的功能,这是一个很好的功能,因为它可以防止出现孤立项,例如未与任何客户关联的电话号码。另一方面,请记住,你的业务规则可能会阻止你删除数据,因此请牢记这一点。业务规则可能会在数据库设计中发挥重要作用。

现在,你已了解表关系,包括在“Access 关系”窗格中工作,以及可帮助你更高效地处理 Access 数据库的关系设置。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×