表关系
使用 Microsoft Dataverse 时,通过在单独的表中存储不同的数据集来组织信息,以支持数据规范化。 表关系可定义表行如何与其他表中的行关联。
我们之前在本模块中了解到,数据库表有一个主键,可对表中的行进行唯一引用。 在 Dataverse 中,两个表之间的关系使用查找列引用主键。
关系类型
表关系可定义表行如何与其他表甚至同一表中的行关联。 表关系分为两种类型:
一对多关系:在一对多表关系 (1:N) 中,多个引用(相关)表行可以与单个引用的(主)表行相关联。 引用的行通常称为父 行,而引用表中的行称为子 行。 多对一关系与从子表查看的结构相同。
多对多关系:在多对多 (N:N) 关系中,多个表行可以与多个其他行相关联。 这些行视为对等行,并且关系是相互的。
多对一与一对多
多对一 (N:1) 关系与一对多关系本质上没有不同。 它表示从对面表查看的相同关系。 例如,如果表 A 与表 B 存在一对多关系,您将看到:
- Power Apps Maker Portal 中的表 A 下列出的一对多 关系。
- 表 B 下列出的多对一 关系。
这是一个接口视角问题,而不是单独的关系类型。
查找列
若要创建表关系,一种常见方式是添加数据类型为查找的列。 这将自动创建多对一关系。
无论将关系定义为一对多、多对一还是通过查找列,基础结构都相同。
手动创建表关系
如本模块前面所述,在创建新表时,Dataverse 可提供多种方式来配置表关系。 在表屏幕中,架构 窗格包含一个关系链接。
选择此链接可打开一个视图,其中显示表的所有关系。 某些关系由系统定义,其他关系则由用户创建。 您可以查看哪些表是相关的以及关系类型。
在此视图顶部,您可以从命令栏中选择新建关系以手动定义新关系。
创建关系时,您将选择类型。 在下面的示例中,创建与名为 Veterinarian 的表的一对多关系。 虽然宠物可以由任何兽医治疗,但此关系为每只宠物定义一个固定的医生。 创建此关系还会在相关表中添加查找列。
创建关系后,关联表中会显示相应的查找列。
多对多关系
多对多关系允许数据行充当对等行,而无需父-子层次结构。
注意
关系数据库不直接支持多对多关系。 Dataverse 使用隐藏的相交 表来管理这些关系。 此相交表不可由用户编辑,也不支持自定义窗体或列。
若要手动创建多对多关系,您将选择两个相关表。 例如,如果您有一个 Pet Groomers 表和一个 Pets 表,则每只宠物可以有多个美容师,每个美容师可以有多只宠物。
尽管在 Dataverse 中定义了此关系,但没有可见的相交表。 但是,您可以使用子网格在窗体中显示相关记录。 通过筛选,您可以动态显示相关项目,但此内容不在本单元范围之内。
有关详细信息,请参阅创建多对多表关系概述。