MS Access - 数据关联



本章我们将学习数据关联的基础知识。在讨论和创建不同数据之间的关系之前,让我们回顾一下为什么我们需要它。这一切都回到了规范化。

规范化

数据库规范化,或简称为规范化,是组织关系数据库的列(属性)和表(关系)以最大限度地减少数据冗余的过程。它是将数据拆分到多个表中以提高整体性能、完整性和持久性的过程。

  • 规范化是组织数据库中数据的过程。

  • 这包括根据旨在保护数据并通过消除冗余和不一致的依赖性来提高数据库灵活性的规则创建表并在这些表之间建立关系。

现在让我们来看一下包含数据的下表,但问题是这些数据相当冗余,这增加了数据输入过程中出现错别字和措辞不一致的可能性。

客户ID 姓名 地址 饼干种类 数量 价格 总计
1 Ethel Smith 12 Main St, Arlington, VA 22201 S 巧克力曲奇 5 $2.00 $10.00
2 Tom Wilber 1234 Oak Dr., Pekin, IL 61555 巧克力曲奇 3 $2.00 $6.00
3 Ethil Smithy 12 Main St., Arlington, VA 22201 巧克力曲奇 5 $2.00 $10.00

为了解决这个问题,我们需要重组数据并将其分解成多个表,以消除一些冗余,如下面的三个表所示。

Three Tables

这里,我们有一个客户表,第二个是订单表,第三个是饼干表。

这里的问题是,仅仅将数据分割成多个表并不能帮助说明一个表中的数据如何与另一个表中的数据相关联。为了连接多个表中的数据,我们必须向**订单**表添加外键。

定义关系

关系通过匹配通常是两个表中同名的键列中的数据来工作。在大多数情况下,关系将来自一个表的主键(为每一行提供唯一标识符)与另一个表中外键中的条目匹配。表之间有三种关系类型。创建的关系类型取决于相关列的定义方式。

现在让我们来看看三种关系类型:

一对多关系

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

例如,客户表和订单表具有一对多关系:每个客户可以下许多订单,但每个订单只来自一个客户。

多对多关系

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

您可以通过定义第三个表(称为**连接表**)来创建这种关系,其主键由表 A 和表 B 的外键组成。

例如,客户表和饼干表具有多对多关系,该关系由这些表中的每一个与订单表之间的一对多关系定义。

一对一关系

在一对一关系中,表 A 中的一行最多只能与表 B 中的一行匹配,反之亦然。如果两个相关列都是主键或具有唯一约束,则会创建一对一关系。

这种类型的关系并不常见,因为大多数以这种方式相关的信息都位于一个表中。您可以使用一对一关系来:

  • 将表分成多个列。
  • 出于安全原因隔离表的一部分。
  • 存储短暂的数据,只需删除表即可轻松删除。
  • 存储仅适用于主表子集的信息。
广告