表关系

已完成

使用 Microsoft Dataverse 时,您需要尝试将不同数据集的信息保存在单独的表中。 这称为数据规范化。 表关系可定义表行与其他表中的行相互关联的不同方式。

我们之前在本模块中了解到,数据库表有一个主键,可对表中的行进行唯一引用。 在 Dataverse 中,两个表之间的关系会查找或引用主键。

关系类型

表关系可定义表行与其他表或同一表中的行相互关联的方式。 表关系只有两种类型:

  • 一对多关系:在一对多表关系 (1:N) 中,多个引用(相关)表行可以与单个被引用(主)表行相关联。 被引用的表行有时称为“父级”,而引用表的行则称为“子级”。 多对一关系只是一对多关系的子视角

  • 多对多关系:在多对多 (N:N) 表关系中,多个表行可以与多个其他表行相关联。 使用多对多关系的相关行可视为对等记录,并且这种关系是相互的。

多对一与一对多

多对一 (N:1) 关系与一对多关系并没有本质上的不同,只是角度不同。 多对一关系类型存在于用户界面中,因为设计器允许从关系中涉及的任一 表查看和创建关系。 如果 A 表和 B 表之间是一对多关系,您可以在 Power Apps Maker Portal 中的 A 表下看到一对多 关系,在 B 表下看到多对一 关系。多对一关系只是从相关表查看的一对多关系。 这并不是一种不同类型的关系,而只是一种不同的视角。

查找列

创建表关系的一种简单方式,是向另一个表创建具有数据类型查找的列。 创建查找列会创建多对一关系。

查找列的屏幕截图。

无论关系是使用一对多、多对一还是查找列创建的,都没有功能差异。

手动创建表关系

当您创建新表时,正如我们之前在本学习模块中了解到的那样,您有许多选项,只需单击几下鼠标即可让 Dataverse 为您所用。 在表格屏幕中,有一个指向架构 窗格中关系的链接。

“表格”设计器的屏幕截图,其中突出显示了“关系”。

选择此链接会将您带到一个显示表的所有关系的表。 有些是系统设计的,另一些是您创建的。 您可以查看当前表与哪些表相关,以及它们与其他表之间的关系类型。

另外,请注意在命令栏的顶部,您可以选择新建关系。 这使您可以灵活地手动创建表之间的关系。

此视图中表关系列表的屏幕截图,其中突出显示了“新建关系”。

您可以决定要创建什么类型的关系。 在下面的示例中,我们将创建与 Veterinarian 表的一对多关系。 虽然每只宠物可以看任何医生,但我们希望每只宠物都能看一个固定的医生。 请注意以这种方式创建关系如何在相关表中创建查找列。

“一对多”对话框的屏幕截图,其中显示了“Pets”表已链接到“Veterinarian”表,并且名为“Pet”的查找列已分配到“Veterinarian”列。

创建此关系后,您可以转到关联表并发现创建的查找列。

多对多关系

在继续之前,我们先简要介绍一下在 Dataverse 中的表之间创建多对多关系的概念。

请记住,一对多关系在表关系的行之间具有层次结构。 通过多对多表关系关联的行视为对等行。

注意

关系数据库不支持多对多关系,Dataverse 会创建一个隐藏的相交 表来链接表行。 此相交 表没有窗体,您无法编辑其属性或向表中添加列。

您可以通过选择相关表来手动创建多对多关系。 例如,如果您有一个宠物美容师表和一个宠物表,则每只宠物可以有多个美容师,每个美容师可以有多个宠物客户。 不幸的是,Dataverse 中没有显示这一点的表,只有一个关系。 在窗体中,您可以插入一个子网格,其中显示相关表的项目,然后通过筛选功能显示相关表中与您的项目相对应的项目。 但是,这超出了本单元的范围。

有关详细信息,请参阅创建多对多表关系概述