MS Access - 相关数据

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

规范化

数据库规范化,或者简称规范化,是组织关系数据库的列(属性)和表(关系)以最小化数据冗余的过程。 这是将数据拆分到多个表以提高整体性能、完整性和寿命的过程。

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

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

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

CustID Name Address Cookie Quantity Price Total
1 Ethel Smith 12 Main St, Arlington, VA 22201 S Chocolate Chip 5 $2.00 $10.00
2 Tom Wilber 1234 Oak Dr., Pekin, IL 61555 Choc Chip 3 $2.00 $6.00
3 Ethil Smithy 12 Main St., Arlington, VA 22201 Chocolate Chip 5 $2.00 $10.00

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

三张表

这里,我们有一张表用于客户(Customers),第二个表用于订单(Orders),第三个表用于 Cookie。

这里的问题是,仅仅将数据拆分到多个表中并不能帮助了解一个表中的数据与另一表中的数据如何相关。 要连接多个表中的数据,我们必须向 Orders 表添加外键。

定义关系

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

现在让我们看看三种类型的关系 −

一对多关系

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

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

多对多关系

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

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

例如,Customers 表和 Cookies 表具有多对多关系,该关系是由每个表与 Orders 表之间的一对多关系定义的。

一对一关系

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

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

  • 将表格划分为许多列。
  • 出于安全考虑,隔离表的一部分。
  • 存储短期数据,只需删除表即可轻松删除。
  • 存储仅适用于主表子集的信息。