MS Access - 相关数据


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

正常化

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

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

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

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

客户ID 姓名 地址 曲奇饼 数量 价格 全部的
1 埃塞尔·史密斯 12 Main St, 阿灵顿, VA 22201 S 巧克力片 5 $2.00 10.00 美元
2 汤姆·威尔伯 1234 Oak Dr.,北京,伊利诺伊州 61555 巧克力片 3 $2.00 $6.00
3 埃希尔·史密斯 12 Main St., 阿灵顿, VA 22201 巧克力片 5 $2.00 10.00 美元

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

三桌

在这里,我们有一张表用于客户,第二张用于订单,第三表用于 Cookie。

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

定义关系

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

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

一对多关系

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

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

多对多关系

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

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

例如,Customers 表和 Cookies 表具有多对多关系,该关系是通过从这些表中的每一个表到 Orders 表的一对多关系来定义的。

一对一的关系

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

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

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