建立表之间的关系良好的数据库设计目标之一就是消除数据冗余, 要实现这一目标, 可以将数据拆分为多个基于主题的表, 尽量使每条数据只出现一次, 然后在相关表中放置公共字段, 并建立各表之间的关系, 从而将拆分的数据组合到一起, 这也是关系型数据库的运行原理。 在 Access 2016 中, 表的关系类型总共有 3 种关系,分别是一对一、 一对多和多对多关系。

两个表之间, 主键与主键创建关系就称为一对一关系。

在一对一关系中, 表 A 中的每条记录在表 B 中只有一个匹配记录,且表 B 中的每条记录在表 A 中也只有一个匹配记录。

这种关系并不常见, 因为多数以此方式相关的信息都存储在一个表中。 可以使用一对一关系将一个表分成许多字段, 或者出于安全原因隔离表中的部分数据, 或者存储仅应用于主表的子集的信息。标志此类关系时,这两个表必须共享一个公共字段。

两个表之间主键与外键建立关系就称为一对多关系。

一对多关系是最常见的类型关系。 在这种关系中, 表 A 中的一行可以匹配表 B 中的多行, 但表 B 中的一行只能匹配表 A 中的一行。

要在数据库设计中表示一对多关系, 应将关系"一"方的主键作为额外字段添加到关系"多"方的表中。

例如, 表"出版社"和"书"之间就有一对多关系: 每家出版社都出版许多书, 但是每种书只会出自一家出版社。 这里就应将表"书"中的"书刊号"作为主键, 而在表"出版社"中将"书刊号"作为非主键。

多个表之间有两个及两个以上的一对多关系称为多对多关系。

在多对多关系中, 表 A 中的一行可以匹配表 B中的多行, 反之亦然。

要创建这种关系, 需要定义第三个表,称为连接表, 它的主键由表 A 和表B 两个表中的外键组成。 因此, 第三个表记录关系的每个匹配项或实例。

例如,"订单"表和"产品"表有一种多对多的关系, 这种关系是通过与 "订单明细"表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。

1.创建一对一表关系

在创建一对一的关系时, 两个表之间必须共享一个公共字段, 并且该公共字段必须具有唯一索引。 创建一对一关系的具体操作步骤如下。

Step 01 打开"供货商信息管理 .accdb", 打开【供货商信息表】, 进入设计视图, 单击【表格工具 / 设计】 选项卡【关系】 组中的【关系】 按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(1)

Step 02 打开【关系】 窗口, 单击【表格工具 / 设计】 选项卡【关系】 组中的【显示表】 按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(2)

Step 03 打开【显示表】 对话框,按住【Ctrl】 键, 在【表】 选项卡中选择【供货商信息表】和【原始信息表】,单击【添加】 按钮,单击【关闭】按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(3)

Step 04 选择【供货商信息】表中的【供货商 ID】 字段, 按住左键不放拖动到【原始信息表】 表中的【供货商ID】 字段上再松开左键, 如下图所示。

数据库设计的表功能(认清这3种表关系)(4)

Step 05 打开【编辑关系】 对话框, 可以看见【关系类型】为【一对一】关系,直接单击【创建】 按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(5)

Step 06 操作完成后, 即可创建一对一表关系, 两个表中的【供货商 ID】字段使用关系连接线连接起来, 如下图所示。

数据库设计的表功能(认清这3种表关系)(6)

Step 07 单击快速访问工具栏中的【保存】 按钮 , 保存创建的表关系,然后进入【供货商信息表】 的数据表视图, 此时可以发现每条记录的行首都出现了 图标, 单击该图标, Access 将以子表的形式显示出【原始信息表】中的数据, 如下图所示。

数据库设计的表功能(认清这3种表关系)(7)

2. 创建一对多表关系

主键字段与外键字段创建关系就称为一对多关系, 但不是任何主键和任何外键都可以创建的。 创建一对多关系的两个主键字段的数据类型必须是一样的, 而且必须是有一定关联的。

要在数据库中表示一对多关系,需要设置表关系为"一方"的主键,并将其作为额外公共字段添加到关系为"多方"的表中。

例如, 在【供货商信息管理】 数据库中, 有【供货商信息表】 和【进货单】, 一个供货商可以有多笔进货订单, 而一个订单只能对应一个供货商。 所以, 在一对多的表关系中, 关系"一方"应该为【供货商信息表】,而关系"多方"应该为【进货单】,所以, 本例需要将供货商信息表中的【供货商 ID】 添加到【进货单】 中。

创建一对多表关系的具体操作步骤如下。

Step 01 接上一例操作,切换到【关系】 窗口,单击【表格工具 / 设计】选项卡【关系】组中的【显示表】按钮,如下图所示。

数据库设计的表功能(认清这3种表关系)(8)

Step 02 打开【显示表】对话框,在【表】选项卡中选择【进货单】,单击【添加】 按钮,单击【关闭】 按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(9)

Step 03 在【关系】 窗口中将【供货商信息表】 中的【供货商 ID】 字段拖至【进货单】的【供货商 ID】字段上,如下图所示。

数据库设计的表功能(认清这3种表关系)(10)

Step 04 打开【编辑关系】 对话框, 可以看见【关系类型】为【一对多】关系,直接单击【创建】 按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(11)

Step 05 此时, 从【关系】 窗口中可以查看到已经创建了一对多关系, 两个表中的【供应商 ID】 字段使用关系连接线连接起来, 如下图所示。

数据库设计的表功能(认清这3种表关系)(12)

Step 06单击快速访问工具栏中的【保存】 按钮 , 保存创建的表关系,重新打开【供货商信息表】 的数据表视图, 单击行首出现的 图标, Access 将以子表的形式显示出该供货商的订单信息, 如下图所示。

数据库设计的表功能(认清这3种表关系)(13)

技术看板

在一对多的关系表中, 只有关系为"一方"的数据表才能查看子表中的信息, 关系为"多方"的数据表并不会出现子表。

3.创建多对多表关系

多对多关系其实就是两个一对多关系, 相对来说, 创建多对多关系比较复杂。 创建多对多表关系的具体操作步骤如下。

Step 01 接上一例操作,切换到【关系】 窗口,单击【表格工具 / 设计】选项卡【关系】组中的【显示表】按钮,如下图所示。

数据库设计的表功能(认清这3种表关系)(14)

Step 02 打开【显示表】 对话框,在【表】选项卡中选择【供货商访问表】,单击【添加】 按钮,单击【关闭】按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(15)

Step 03 在【关系】 窗口中将【供货商访问表】 中的【供货商 ID】 字段拖至【供货商信息表】 的【供货商ID】 字段上, 如下图所示。

数据库设计的表功能(认清这3种表关系)(16)

Step 04 打开【编辑关系】 对话框, 可以看见【关系类型】为【一对多】关系,直接单击【创建】按钮,如下图所示。

数据库设计的表功能(认清这3种表关系)(17)

Step 05 此时, 从【关系】 窗口中可以看到【供货商信息表】 和【供货商访问表】 为一对多关系,【供货商访问表】和【进货单】为多对多关系,如下图所示。

数据库设计的表功能(认清这3种表关系)(18)

Step 06 单击快速访问工具栏中的【保存】按钮 , 保存创建的表关系, 重新打开【供货商信息表】 的数据表视图,单击行首出现的 图标, 会弹出【插入子数据表】 对话框,在【表】 选项卡的列表框中选择要显示的子数据表;单击【确定】 按钮, 如下图所示。

数据库设计的表功能(认清这3种表关系)(19)

Step 07 返回数据表界面, 单击行首出现的 图标, Access 将以子表的形式显示出选择的子数据表中的信息,如下图所示。

数据库设计的表功能(认清这3种表关系)(20)

技术看板

用户也可以直接将【供货商信息表】 的【供货商 ID】 字段拖动到【进货单】 的【供货商 ID】 字段上, 从而创建两个表之间的多对多关系。 但是在实际应用中, 用两个一对多关系来表示多对多关系更为常用。

,