在本章中,我们将了解相关数据的基础知识。在讨论和创建不同数据之间的关系之前,让我们来回顾一下为什么我们需要它。这一切都回归正常化。
数据库规范化或简单规范化是组织关系数据库的列(属性)和表(关系)以最小化数据冗余的过程。它是跨多个表分割数据以提高整体性能,完整性和寿命的过程。
规范化是在数据库中组织数据的过程。
这包括根据设计的规则创建表并在这些表之间建立关系,以保护数据并通过消除冗余和不一致的依赖性使数据库更加灵活。
现在让我们看看包含数据的下表,但问题是这个数据是相当冗余的,这增加了在数据输入期间打字和不一致短语的机会。
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表,第三个是Cookies表。
这里的问题是,只是通过拆分多个表中的数据将无助于告诉一个表中的数据如何与另一个表中的数据相关。要在多个表中连接数据,我们必须向Orders表添加外键。
关系通过匹配键列中的数据(通常是两个表中具有相同名称的列)来工作。在大多数情况下,关系与来自一个表的主键匹配,该表为每个行提供唯一标识符,在另一个表中的外键中具有条目。这里有三种类型的表之间的关系。创建的关系类型取决于如何定义相关列。
现在让我们看看这三种类型的关系 -
一对多关系是最常见的关系类型。在此类型的关系中,表A中的行可以在表B中具有许多匹配的行,但表B中的行在表A中只能具有一个匹配的行。
例如,客户和订单表具有一对多关系:每个客户可以下订单,但每个订单只来自一个客户。
在多对多关系中,表A中的行可以在表B中具有许多匹配的行,反之亦然。
您通过定义第三个表(称为联结表)来创建此类关系,其主键由来自表A和表B的外键组成。
例如,Customers表和Cookies表具有多对多关系,该关系由从这些表到Orders表的一对多关系定义。
在一对一关系中,表A中的行在表B中可以不多于一个匹配行,反之亦然。如果相关列都是主键或具有唯一约束,那么将创建一对一关系。
这种类型的关系不常见,因为以这种方式相关的大多数信息将全部在一个表中。您可以使用一对一关系 -
在本教程中,我们创建了各种选择查询,主要来自设计视图。但在Access中,我们可以使用一些特殊的查询向导来创建几个特定的选...
在本章中,我们将学习如何从表中选择数据。SELECT语句检索所选行。 它们可以包括UNION语句,排序子句,LIMIT子句,WHER&...
事务是顺序组操作。 它们作为单个单元运行,并且直到组中的所有操作都成功执行时才终止。 组中的单个故障会导致整个事务失败,并...
接受用户输入的简单行为打开了利用的大门。 这个问题主要来自数据的逻辑管理,但幸运的是,很容易避免这些主要缺陷。SQL注入的机...