Ms Access 简明教程

MS Access - Relating Data

在本章中,我们将了解有关关联数据的基础知识。在讨论并创建不同数据之间的关系之前,让我们回顾一下我们为什么要这样做。这一切都归结于标准化。

Normalization

数据库标准化,或简称标准化,是组织关系数据库的列(属性)和表(关系)以最大程度地减少数据冗余的过程。这是将数据拆分为多个表以提高整体性能、完整性和生命周期的过程。

  1. 标准化是组织数据库中的数据的过程。

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

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

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

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

three tables

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

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

Defining Relationships

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

现在,让我们深入了解三种关系类型−

One-to-Many Relationships

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

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

Many-to-Many Relationships

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

您可以通过定义一个称为 junction table 的第三个表来创建这样的关系,其主键由表 A 和表 B 的外键组成。

例如,“客户”表和“Cookie”表具有多对多关系,该关系由这两个表中与“订单”表的每个一对多关系定义。

One-to-One Relationships

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

这种关系类型不常见,因为这样相关的大多数信息都将存储在一张表中。您可以将单一对一关系用于以下目的:

  1. 将一个表分成多列。

  2. 基于安全性隔离表的一部分。

  3. 存储使用寿命短且可以通过简单删除表轻松删除的数据。

  4. 存储只应用于主表子集的信息。