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
    为了解决这个问题,我们需要重组我们的数据并将其分解为多个表,以消除其中的一些冗余,如下面的三个表所示。
    三张表
    在这里,我们有一张客户表,第二张用于订单,第三张用于 Cookie。
    这里的问题是,仅仅通过将数据拆分到多个表中将无助于说明一个表中的数据与另一个表中的数据之间的关系。要连接多个表中的数据,我们必须将外键添加到Orders表。
  • 定义关系

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

    一对多关系

    一对多关系是最常见的关系类型。在这种类型的关系中,表 A 中的一行可以与表 B 中的许多匹配行,但表 B 中的一行只能与表 A 中的一个匹配行。
    例如,Customers 和 Orders 表具有一对多的关系:每个客户可以下许多订单,但每个订单仅来自一个客户。

    多对多关系

    在多对多关系中,表 A 中的一行可以与表 B 中的许多匹配行,反之亦然。
    您可以通过定义第三个表来创建这样的关系,称为junction table,其主键由表 A 和表 B 的外键组成。
    例如,Customers 表和 Cookies 表具有多对多关系,该关系由从这些表中的每一个表到 Orders 表的一对多关系定义。

    一对一的关系

    在一对一关系中,表 A 中的一行在表 B 中最多可以有一个匹配行,反之亦然。如果两个相关列都是主键或具有唯一约束,则创建一对一关系。
    这种类型的关系并不常见,因为以这种方式相关的大多数信息都在一个表中。您可以使用一对一的关系来 -
    • 将一个表分成许多列。
    • 出于安全原因隔离表的一部分。
    • 存储短暂的数据,只需删除表即可轻松删除。
    • 存储仅适用于主表子集的信息。