创建表之间的一对多关系
本单元介绍如何通过执行以下步骤在 Microsoft Dataverse 中实现一对多关系。
提示
从一方或另一方查看关系时,一对多或多对一关系完全相同。
一对多关系
通过使用顶部菜单栏中的下拉列表,选择要在其中工作的环境。
从侧面导航面板中选择表以查看可用表列表。
选择可用于创建与另一个表的关系的任意表。
在随后出现的“表”视图屏幕上,查找架构窗格并选择关系以查看该表与其他表的关系。
从“关系”视图屏幕中,您可以看到您的表当前具有的所有关系。 包括“一对多”、“多对一”和“多对多”。 如果您要创建新的关系,请选择命令栏中的 + 新建关系。
接下来,可以选择多对一、一对多或者多对多关系选项。 在此示例中,我们将选择一对多关系。
您会看到屏幕右侧出现一个窗口,其中包含您选择的关系类型的名称(本例为一对多),以及用于选择相关表的下拉列表字段。
提示
选择任一选项后,将在主表上创建查找列。
您可以在相关(多)表字段中选择要创建此关系的表。
选择表后,Dataverse 会自动创建一个查找列,以及将此表与父表相关联所需的一切内容。
要保存新关系,请选择完成。
保存新关系后,您会看到它出现在您的关系列表中。
现在,您可以在业务解决方案中使用本关系和查找。 查找列将可用于显示所有多(子)行。
一对多关系行为
有些表本身没有任何意义,其创建通常用于支持其他表和流程。 通常包含一个必填查找列,用于链接到所支持的主表。 例如,业务要求可以是 Project 行不应在没有相关客户的情况下存在。 在这种情况下,Project 表将与 Account 表建立多对一关系,而客户查找列也会设置为业务所必需。
除了定义行与其他行之间的关系以外,一对多表关系还提供元数据用于解决以下问题:
删除一行时,是否也应该删除与该行相关的任何行?
向新所有者分配一行时,是否也必须将所有相关行分配到新所有者?
在现有行的上下文中创建新的相关行时,如何简化数据输入过程?
查看某行的人员如何查看相关行?
可以使用一对多关系上的关系行为来定义针对父行的分配、共享和删除等操作如何影响表关系多侧的行。 关系行为有助于确保数据完整性,因此非常重要。
行为
发生特定操作时,可以应用以下几种行为:
行为 | 描述 |
---|---|
级联全部 | 对所有相关表行执行该操作。 |
可用项的级联 | 对所有活动的相关表行执行该操作。 |
用户负责项的级联 | 对与主表行属于同一用户的所有相关表行执行该操作。 |
无级联 | 不执行任何操作。 |
删除链接 | 删除所有相关行的查找值。 |
限制 | 当存在相关表行时,不会删除主表行。 |
操作
由行为控制的操作包括:
列 | 描述 | 行为 |
---|---|---|
删除 | 删除主表行后会发生什么? | 级联全部、删除链接、限制 |
分配 | 主表行分配给其他人后会发生什么? | 级联全部、级联活动项、级联用户拥有项、无级联 |
重定父级 | 父关系中相关表的查找值发生更改时会发生什么? | 级联全部、级联活动项、级联用户拥有项、无级联 |
共享 | 共享主表行后会发生什么? | 级联全部、级联活动项、级联用户拥有项、无级联 |
取消共享 | 取消共享主表行后会发生什么? | 级联全部、级联活动项、级联用户拥有项、无级联 |
合并 | 合并主表行后会发生什么? | 级联全部、无级联 |
汇总视图 | 与此关系关联的汇总视图需要哪种行为? | 级联全部、级联活动项、级联用户拥有项、无级联 |
注意
这些行为仅在对父行执行操作时作用于相关行,而不适用于对相关行直接执行的操作,也就是说,行为的操作方向为一对多,而不是多对一。
行为类型
为简化关系行为的设置,Microsoft 将行为分为以下几个类型:
类型 | 描述 |
---|---|
父级 | 对父表的行执行的任何操作也会针对相关的子表行执行。 |
引用,限制删除 | 可以导航到任何相关行。 对父行执行的操作不会应用到子行,但是只要存在子行,就无法删除父行。 |
引用,删除链接 | 可以导航到任何相关行,对其中一个行执行的操作不会影响其他行。 这是默认情况。 |
自定义 | 可以为每个可能的操作选择该行为。 |
一对多关系映射
您可以在具有一对多关系的表之间映射列。 这可以让您为在另一行上下文中创建的行设置默认值。 用户在模型驱动应用中从父行窗体创建新的相关行时,映射可用于精简数据输入流程。
例如,打开客户行并创建新的相关联系人时,此功能会使用客户中的选定信息(例如办公室地址、主要电话号码等)预填充联系人窗体。
映射考虑事项:
是模型驱动应用功能
仅适用于一对多关系。
仅在从父行窗体的上下文中创建新相关行时适用。
如果相关行通过选择查找列创建和链接,则不适用。
父行列中的值将复制到子行。
只能映射同一数据类型的列
用户可以先覆盖这些值,再创建行。
复制值仅在创建时完成一次,以后不会发生同步。
注意
使用经典解决方案资源管理器配置关系的映射。
分层关系
Dataverse 中的部分标准表已经定义了层次结构,例如客户。 层次结构中的行可以直观显示在模型驱动应用中。
用于定义分层关系的选项仅适用于自引用关系。 自引用关系是表与其自身之间的一对多关系,其中同一个表同时被定义为主表和相关表。
有关表关系的更多信息,请参阅表关系。