关联一个或多个表 - 简介

已完成

要为您生成的大多数解决方案创建高效且可扩展的解决方案,您需要将数据拆分为不同的容器(表)。 尝试将所有内容存储到单个容器中可能会导致效率低下且难以使用和理解。

以下示例有助于说明本概念。

假设您需要创建一个系统用来管理销售订单。 您将需要一份主清单,其中列有您所销售的物料以及现有库存、物料成本和售价。 您还需要一份列有客户地址和信用评级的主清单。 最后,您将需要管理您开具的销售发票,因此您希望能够通过某种方法存储发票数据。 该发票应包括发票信息(如日期、发票编号和销售员)、客户信息(包括地址和信用评级)以及发票上每个项目的明细项目。 明细项目应包括所售物料的名称,并能够为每种物料提供适当的成本和价格,并根据您在该明细项目中销售的数量减少现有数量。

尝试创建一个表以支持前面描述的功能是不明智的,而且效率低下。 处理本业务场景的正确方法是创建以下四个表:

  • 客户
  • 产品
  • 发票
  • 明细项目

为每个项目创建一个表并将这些表相互关联,可形成一个高效的解决方案,且该解决方案不仅能够保持出色效率,而且可以扩展。 将数据拆分到多个表中还意味着您不必存储重复数据或支持许多具有大量空白数据的行。 这称为数据规范化。 而且,如果将数据拆分到单独的表中,进行报告也将更加容易。

相互关联的表具有某种关系连接。 Microsoft Dataverse 的基础技术是由 Microsoft 在云中管理的关系数据库。 表之间的关系有许多形式,但两种最常见的形式是一对多关系和多对多关系,这两种关系均受 Dataverse 的支持。

一对多关系也称为父子关系。 在上一个发票示例中,发票表是父表,明细项目是子表。 一个发票可以包含零个、一个或多个明细项目(子行),但明细项目始终仅与一个发票(父行)关联。 通常情况下,如果没有父行,也将不存在子行。

父行通过仅允许唯一值的列进行标识。 该唯一列称为键列。 相同的值(父键)存储在关联的子行中。 使用子行存储父键值时,该列称为外键。 通过巧妙使用筛选,可显示在外键中有一个值与父行中的键值匹配的子行。 这使得应用程序可以显示属于特定父行(上一示例中的发票)的子行(上一示例中的明细项目)。 本概念是许多业务软件应用程序的基础。

提示

通过将数据拆分到不同的表中,可以实现有效和可扩展的解决方案设计,但要了解如何将数据拆分到表中,可能会很困难。 Dataverse 包含大多数组织将要用到的许多表。 使用标准表进行扩展将确保您在构建解决方案时,将围绕一种行之有效和可扩展的方法来存储您的解决方案所使用的数据。