试一试!
什么是多对多关系?
多对多关系是最常用的表关系。 这种关系能够提供关键信息,例如销售人员联系了哪些客户以及客户订单中有哪些产品。
当一个表中的一个或多个项可以与另一表中一个或多个项之间存在关系时,即存在多对多关系。 例如:
-
“订单”表包含多个客户的订单(“客户”表中已列出这些客户),并且一个客户可能有多个订单。
-
“产品”表中包含你销售的各种产品,这些产品组成“订单”表中的许多订单。
-
一个订单可能包含特定产品的一个实例(或多个实例)和/或多个产品的一个实例(或多个实例)。
例如,客户 Elizabeth Andersen 的订单编号 1012 可能包含一个产品 12、一个产品 15 和五个产品 30。
创建多对多关系
创建多对多关系与创建一对一或一对多关系的方法不同。 要创建后两种这些关系,只需用线条连接相应的字段即可。 而创建多对多关系,则需要创建一个新表以连接其他两个表。 此新表称为中间表(有时称为链接或联接表)。
在上文所述的情景中,你创建了“订单明细”表,对于任意给定订单中的每一项,该表中的记录包含其在“订单”表中 ID 和“产品”表中 ID。 使用两表的组合键为该表创建主键。
在我们的案例中,Elizabeth Andersen 的订单编号 1012 包含产品 12、15 和 30。 这意味着订单明细条目如下所示:
订单 ID |
产品 ID |
---|---|
1012 |
1.2 |
1012 |
15 |
1012 |
30 |
Elizabeth 订购了一个产品 12、一个产品 15 和五个产品 30。 我们不能在另一行中添加 1012 和 30,因为订单 ID 和产品 ID 共同构成了我们的主键,主键必须是唯一的。 作为替代,我们将“数量”字段添加到“订单明细”表。
订单 ID |
产品 ID |
数量 |
---|---|---|
1012 |
1.2 |
1 |
1012 |
15 |
1 |
1012 |
30 |
5 |
创建中间表
-
选择“创建”>“表”。
-
选择“ 保存 。
-
对于“表单名称”,输入描述性标题。 为指示其用途,可在表单名称中包含联接或中间。
在中间表中创建字段
作为第一个表列, Access 自动添加 ID 字段。 更改该字段以匹配多对多关系中的第一个表的 ID。 例如,如果第一个表是名为“订单 ID”的“订单”表,并且其主键是数字,请将新表中“ID”字段的名称更改为“订单 ID”,并使用数字作为数据类型。
-
在“数据表视图”中,选择“ID”列标题,然后键入该字段的新名称。
-
选择刚刚重命名的字段。
-
在“ 表字段 ”选项卡上的“ 数据类型”下,选择与原始表中的字段匹配的数据类型,例如 “数字 ”或 “短文本”。
-
选择“单击以添加”,然后选择与第二个表中主键相匹配的数据类型。 在已选中的列标题中,键入第二个表中的主键字段的名称,如“产品 ID”。
-
若要跟踪有关这些记录的任何其他信息(如项数),请创建更多字段。
组合主 ID 字段
创建包含要连接的两个表中 ID 的字段后,请根据这些 ID 在中间表中创建主键。
-
在“设计视图”中,打开中间表。
-
选择包含 ID 的两行。 (如果遵循前面的过程,则前两行是这两行。)
-
选择“ 表设计 > 主键”。
键图标显示在两个 ID 字段旁边。
连接三个表以创建多对多关系
在每个表的主键字段和中间表的匹配字段之间创建一对多关系,以完成多对多关系。 有关如何执行此操作的详细信息,请参阅表关系入门。
完成后,关系应如下所示: