简介

已完成

在 Microsoft Dataverse 中为数据建模时,使用单独的表来表示不同的对象和概念。 组织可以使用更多表来帮助保护特定信息、避免数据重复、描述其他属性或简化报告流程。 实际对象彼此相关,因此在 Dataverse 中使用关系将一个表的行关联到另一个表。 此外,对记录执行操作时,关系可以提供适用的约束和行为。

简单来说,Dataverse 表和关系可以共同描述数据。 使用表和关系在 Microsoft Power Apps 的画布应用中构建良好的用户体验时,您希望隐藏数据模型中不必要的复杂部分。 为完成本任务,您的公式和数据使用必须使用关系有效地导航表。 本模块将阐述如何使用 Dataverse 提供的不同类型的关系。

应用场景:Contoso 共享工作区

本模块将使用公共业务应用场景来演示 Dataverse 关系与画布应用一起使用的情况。 Contoso 与许多公司一样,具有多个位置,并且允许员工在家工作。 员工偶尔需要进入办公室,需要在访问期间使用办公桌。 此前,Contoso 指示员工在到达办公室后自行寻找空余的办公桌。 随后公司发现此类共享工作区系统(有时也称为办公桌轮用)给 IT 支持和许可带来了挑战。 因此,公司计划构建一个解决方案,使员工可以通过该解决方案查看可用的办公桌并提前预留。 负责构建解决方案的团队已确定下表作为 Dataverse 数据模型的一部分。

表名 描述
位置 该表将代表各个建筑物,并且将包含以下列,例如地址和电话号码。 每个位置将有一个主要联系人。
办公桌 该表表示可供预留的实际办公桌。 办公桌位于特定位置。
办公桌功能 不同的办公桌具有不同的功能。 例如,有些办公桌可能具有扬声器,有些办公桌可能单独位于一个房间中。 它将包括一个标准的办公桌功能列表,并且每个办公桌都可以具有其中一个或多个功能。
用户 用户表示可以预留办公桌或充当位置的主要联系人的人员。
预留 该表表示人员预留在特定时间段使用特定位置的特定办公桌。

Dataverse 关系类型

在表之间创建关系时,关系类型将定义关系的每一方的基本约束。 Dataverse 支持一对多和多对多关系。

一对多关系

一对多关系(也称为 1:N 或父子关系)包括一个主(父)表,您可以通过在相关(子)表上使用查找列来将单行与多个相关(子)表行关联。 主行称为父行,相关表行称为子行。 一个子行只能与一个父行关联。

一对多关系也称为多对一(或 N:1)关系,从指向父行的子行开始使用该关系。 这是相同的物理关系定义,只是角度不同而已。 在画布应用中,如果您正在处理子记录并想要显示父记录中的属性,则您将使用子行上的多对一关系导航属性。

默认情况下,单个表用作主表,查找列始终指向该表中的一行。 Dataverse 还支持多表查找(有时称为多态查找),这允许查找字段指向多个表中的一个表中的一行,从而更加灵活地处理更复杂的数据模型。 例如,您可以通过创建数据类型“客户”列来设置多表查找列。 然后,您可以将客户查找值设置为指向联系人或单位表行。 在所有活动表(例如电子邮件、任务等)上,相应的列可以指向为活动跟踪启用的任何表。 此外,您可以使用多表查找列类型设置自定义多表查找列。 在 Power Apps 中使用这些多表查找列时,您将使用 IsTypeAsType Microsoft Power Fx 函数来确定父表并使用数据。

在本模块的示例数据模型中,已定义以下一对多关系以支持该应用场景。

主表 相关表 描述
位置 办公桌 每个办公桌都位于一个位置。
用户 位置 每个位置都有一个主要联系人。
用户 预留 要使用预留办公桌的用户。
办公桌 预留 每个预留都适用于一张特定的办公桌。

设置一对多关系时,还可以设置关系行为。 行为决定了在删除、分配、共享、取消共享主表行或重定父级时应发生什么情况。 默认的行为是引用,设置为在删除主表行时删除两个表之间的关联。 例如,“位置”表具有多个办公桌并使用默认配置,因此,如果您的画布应用删除了一个位置行,则默认情况下,所有关联的办公桌都将孤立。 如果业务要求是在删除位置时删除关联的办公桌记录,则您可以选择 ForAll 函数,该函数将首先删除所有关联的办公桌记录。 更好的选项是为关系设置父级行为类型。 根据该行为类型,删除主记录时,将自动删除关联的记录。 本方法可确保不会出现孤立的办公桌记录。

当您构建画布应用并使用相关表时,了解为该关系设置的行为将确保您实施正确的逻辑。

多对多关系

多对多关系(也称为 N:N)包含一个称为关系表的特殊隐藏表,有时称为相交表。 该表将映射一个表的多行可以如何与另一个表的多行相关联。 多对多关系可以跟踪关联,但您无法修改相交表以添加自定义列来描述关系。

在本模块的示例中,办公桌办公桌功能将具有多对多关系。 所有办公桌都将共享办公桌功能列表,并且每个办公桌可以具有一个或多个关联的功能。 通过多对多关系,用户可以知道该办公桌配有椅子,但不会让您存储每个办公桌配有多少把椅子。

以下视频展示了如何在表之间创建关系。

创建所有表和关系后,示例应用场景的数据模型应与下图相似。

图示:显示表之间关系的示例数据模型。

本模块的其余部分将探讨如何使用画布应用处理本数据模型。