表关系
使用 Microsoft Dataverse 时,您需要尝试将不同数据集的信息保存在单独的表中。 这称为数据规范化。 表关系可定义表行与其他表中的行相互关联的不同方式。
我们之前在本模块中了解到,数据库表有一个主键,可对表中的行进行唯一引用。 在 Dataverse 中,两个表之间的关系会查找或引用主键。
关系类型
表关系可定义表行与其他表或同一表中的行相互关联的方式。 表关系只有两种类型:
一对多关系:在一对多表关系 (1:N) 中,多个引用(相关)表行可以与单个被引用(主)表行相关联。 被引用的表行有时称为“父级”,而引用表的行则称为“子级”。 多对一关系只是一对多关系的子视角
多对多关系:在多对多 (N:N) 表关系中,多个表行可以与多个其他表行相关联。 使用多对多关系的相关行可视为对等记录,并且这种关系是相互的。
多对一与一对多
多对一 (N:1) 关系与一对多关系并没有本质上的不同,只是角度不同。 多对一关系类型存在于用户界面中,因为设计器允许从关系中涉及的任一 表查看和创建关系。 如果 A 表和 B 表之间是一对多关系,您可以在 Power Apps Maker Portal 中的 A 表下看到一对多 关系,在 B 表下看到多对一 关系。多对一关系只是从相关表查看的一对多关系。 这并不是一种不同类型的关系,而只是一种不同的视角。
查找列
创建表关系的一种简单方式,是向另一个表创建具有数据类型查找的列。 创建查找列会创建多对一关系。
无论关系是使用一对多、多对一还是查找列创建的,都没有功能差异。
手动创建表关系
当您创建新表时,正如我们之前在本学习模块中了解到的那样,您有许多选项,只需单击几下鼠标即可让 Dataverse 为您所用。 在表格屏幕中,有一个指向架构 窗格中关系的链接。
选择此链接会将您带到一个显示表的所有关系的表。 有些是系统设计的,另一些是您创建的。 您可以查看当前表与哪些表相关,以及它们与其他表之间的关系类型。
另外,请注意在命令栏的顶部,您可以选择新建关系。 这使您可以灵活地手动创建表之间的关系。
您可以决定要创建什么类型的关系。 在下面的示例中,我们将创建与 Veterinarian 表的一对多关系。 虽然每只宠物可以看任何医生,但我们希望每只宠物都能看一个固定的医生。 请注意以这种方式创建关系如何在相关表中创建查找列。
创建此关系后,您可以转到关联表并发现创建的查找列。
多对多关系
在继续之前,我们先简要介绍一下在 Dataverse 中的表之间创建多对多关系的概念。
请记住,一对多关系在表关系的行之间具有层次结构。 通过多对多表关系关联的行视为对等行。
注意
关系数据库不支持多对多关系,Dataverse 会创建一个隐藏的相交 表来链接表行。 此相交 表没有窗体,您无法编辑其属性或向表中添加列。
您可以通过选择相关表来手动创建多对多关系。 例如,如果您有一个宠物美容师表和一个宠物表,则每只宠物可以有多个美容师,每个美容师可以有多个宠物客户。 不幸的是,Dataverse 中没有显示这一点的表,只有一个关系。 在窗体中,您可以插入一个子网格,其中显示相关表的项目,然后通过筛选功能显示相关表中与您的项目相对应的项目。 但是,这超出了本单元的范围。
有关详细信息,请参阅创建多对多表关系概述。