使用关系

创建多对多关系

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

什么是多对多关系?

多对多关系是最常用的表关系。这种关系能够提供关键信息,例如销售人员联系了哪些客户以及客户订单中有哪些产品。

当一个表中的一个或多个项可以与另一表中一个或多个项之间存在关系时,即存在多对多关系。例如:

  • “订单”表包含多个客户的订单(“客户”表中已列出这些客户),并且一个客户可能有多个订单。

  • “产品”表中包含你销售的各种产品,这些产品组成“订单”表中的许多订单。

  • 一个订单可能包含特定产品的一个实例(或多个实例)和/或多个产品的一个实例(或多个实例)。

例如,客户 Elizabeth Andersen 的订单编号 1012 可能包含一个产品 12、一个产品 15 和五个产品 30。

创建多对多关系

创建多对多关系与创建一对一或一对多关系的方法不同。要创建后两种这些关系,只需用线条连接相应的字段即可。而创建多对多关系,则需要创建一个新表以连接其他两个表。此新表称为中间表(有时称为链接联接表)。

在上文所述的情景中,你创建了“订单明细”表,对于任意给定订单中的每一项,该表中的记录包含其在“订单”表中 ID 和“产品”表中 ID。使用两表的组合键为该表创建主键。

在我们的案例中,Elizabeth Andersen 的订单编号 1012 包含产品 12、15 和 30。这意味着订单明细条目如下所示:

订单 ID

产品 ID

1012

12

1012

15

1012

30

Elizabeth 订购了一个产品 12、一个产品 15 和五个产品 30。我们不能在另一行中添加 1012 和 30,因为订单 ID 和产品 ID 共同构成了我们的主键,主键必须是唯一的。作为替代,我们将“数量”字段添加到“订单明细”表。

订单 ID

产品 ID

数量

1012

12

1

1012

15

1

1012

30

5

创建中间表

  1. 选择“创建”>“”。

  2. 选择“保存保存

  3. 对于“表单名称”,输入描述性标题。为指示其用途,可在表单名称中包含联接中间

在中间表中创建字段

Access 将自动添加 ID 字段作为表中第一列。更改该字段以匹配多对多关系中的第一个表的 ID。例如,如果第一个表是名为“订单 ID”的“订单”表,并且其主键是数字,请将新表中“ID”字段的名称更改为“订单 ID”,并使用数字作为数据类型。

  1. 在“数据表视图”中,选择“ID”列标题,然后键入该字段的新名称。

  2. 选择刚刚重命名的字段。

  3. 在“字段”选项卡上的“数据类型”下,选择与原始表中的字段匹配的数据类型,如数字短文本

  4. 选择“单击以添加”,然后选择与第二个表中主键相匹配的数据类型。在已选中的列标题中,键入第二个表中的主键字段的名称,如“产品 ID”。

  5. 若要跟踪有关这些记录的任何其他信息(如项数),请创建更多字段。

组合主 ID 字段

创建包含要连接的两个表中 ID 的字段后,请根据这些 ID 在中间表中创建主键。

  1. 在“设计视图”中,打开中间表。

  2. 选择包含 ID 的两行。(如果你按照前述过程操作,则为前两行。)

  3. 选择“设计”>“主键”。
    两个 ID 字段旁边将显示“键”图标。

    表中主键的屏幕截图

连接三个表以创建多对多关系

在每个表的主键字段和中间表的匹配字段之间创建一对多关系,以完成多对多关系。有关如何执行此操作的详细信息,请参阅表关系入门

完成后,关系应如下所示:

三个数据库表之间连接的屏幕截图

希望获得更多信息?

表关系入门

创建关系

删除关系

Excel 培训

Outlook 培训

表 A 中的单个项可与表 B 中的多个项相关时(反之亦然),使用表间多对多关系。例如,某个产品可以出现在多个订单中,某个订单也可以包含多个产品。

在此演示中,我们通过“产品”和“订单”表将数据库扩展到基本订单跟踪系统中。

我们将了解联接表和组合键,并将其用于我们的其他表,以创建多对多关系。

构建多对多关系的第一步是创建一个新表。

它叫“中间表”,我们将使用它存储关系所涉及的其他表中的数据。

中间表也称为“链接”或“联接”表。

下一步是创建联接表与关系中涉及的其他表间一对多关系。

此过程中,需要将这两个字段标识为联接表的主键。这将变成“组合键”。

我们在“设计视图”中构建联接表,所以选择“创建”、“表设计”。这是我们新建的空白表。

现在,我们打开“产品”和“订单”表。

看看这两个表的主键。“产品”表使用名为“产品 ID”的“自动编号”字段。

“订单”表的主键名为“订单 ID”,它也是“自动编号”字段。

现在,我们返回到联接表,在其中输入产品 ID,选择“编号”,输入订单 ID,然后再次选择“编号”。

现在,我们同时选择这两个字段。为此,将指针放在任一字段旁边的灰色框中,然后拖动。

选中这两个字段后,在功能区中选择“主键”。这将为联接表创建组合键。

在组合键包含这两个字段可确保唯一标识每个订单以及每个订单包含的所有内容。

按 Ctrl+S 保存联接表并将其命名为“订单明细​​”。

现在,我们可以创建关系。首先关闭所有打开的表。选择“数据库工具”,然后选择“关系”。

在“设计”选项卡上,选择“显示表”。添加“订单明细”、“订单”和“产品”表。现在关闭对话框。

对表进行排列,将联接表“订单明细”放在中间。将“订单 ID”字段从“订单”表拖到联接表上。

在“编辑关系”对话框中,选择“实施引用完整性”,然后选择“创建”以创建关系。

对“产品 ID”字段执行同样的操作。依次选择“实施引用完整性”和“创建”,即完成操作。

按 Ctrl+S 保存关系图布局更改。

现在,已通过对现有表使用联接表和组合键在 Access 数据库中创建了多对多关系。

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

此信息是否有帮助?

谢谢您的反馈!

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

×