简单关系类和复合关系类是可以在 ArcGIS Pro 中创建的地理数据库关系类的两种类型。 可用数据、待关联数据集的基数以及尝试解答的问题可以指引您选择适合的关系类类型。
下文中更加详细地介绍了各个关系类的类型。
简单关系类类型
简单关系类是将一个要素类(源表)中的要素与另一个要素类(目标)中的要素或表中的对象相关联的关系类型。
以下叙述对简单关系类进行了介绍:
- 基数可以是一对一 (1:1)、一对多 (1:M) 或多对多 (M:N)。
- 关系在两个表之间定义,其中一个是源表,另一个是目标表。
- 关系基于公共属性字段。
- 删除源表中的要素或行不会影响目标表中关联的要素或行。
- 只要公共属性字段值匹配,表之间的关系即可保持。
例如,在名为 Campground Facilities(源)的要素类和名为 Campsites(目标)的要素类之间可能存在简单关系类。 每个野营地都可以与该野营地中包含的一个或多个露营点相关联,但删除露营点不会导致删除野营地。
在简单关系中,相关对象可以彼此独立存在。 这意味着删除目标对象不会影响主键值,也不会影响相关源表中的父记录。
例如,有报道称,最近的一场风暴冲毁了斯劳溪 6 号露营点,因此,从 Campsite(目标)要素类中删除此记录不会对 Campground Facilities(源)要素类中的斯劳溪野营地造成影响。
但是,当删除简单关系中的源对象时,与匹配目标对象对应的外键字段值将设置为 <空>。 此外键行为专用于保持要素间的引用完整性。 如果删除源要素,那么外键中的值不会再将该行与源中的要素相关联,因此,将不再需要外键值并将其设置为“空”。
外键的唯一用途就是维持目标对象与相关源对象间的关系。 如果不存在具有匹配主键值的源要素,则没有保留外键值的理由。 如果以后要将相同的目标要素与新的或不同的源要素相关联,则可将外键字段从 <空> 更新为新的外键值。
例如,FacilityID 为 259310 的斯劳溪野营地是黄石国家公园中最小的野营地,仅有六个露营点。 因此决定将其与较大的卵石溪野营地合并。 在这个简单关系类中,当斯劳溪野营地的记录从源表中删除时,六个露营点仍保留在目标表中,但它们的外键值更改为 <空>。 现在,您可以更新这六个 <空> 值的 ParentFacilityID 以反映 259307,使其改为链接至卵石溪野营地的 ParentFacilityID。
复合关系类类型
与简单关系类相似,复合关系类是将一个要素类(源表)中的要素与另一个要素类(目标)中的要素或表中的对象相关联的关系类型。 复合关系也可在删除对象时保持引用完整性,但它们以不同的方式来实现这一点。 在复合关系中,目标对象无法独立于源对象存在,因此在删除源对象时,也会在此过程中删除相关的目标对象,这称为级联删除。 复合关系在创建时均具有一对多基数,但可以使用关系规则将其约束为一对一。
以下叙述对复合关系类进行了介绍:
- 基数可以是一对一 (1:1) 或一对多 (1:M)。
- 关系在两个表之间定义,其中一个是源表,另一个是目标表。
- 关系基于公共属性字段。
- 删除源表中的要素或行会影响目标表中关联的要素或行。
- 目标表中的要素或行(对象)不能独立于源表中的相关要素或行(对象)而存在。
- 只要公共属性字段值匹配,表之间的关系即可保持。
例如,斯劳溪野营地的当前位置和土地已被确定为新教育中心的理想地址。 因此,六个斯劳溪露营点将被停用,以便土地平整人员和施工人员开始为新的斯劳溪教育中心准备场地。 例如,当您编辑复合关系类并从野营地设施点要素类(源)中删除斯劳溪野营地记录时,露营点要素类(目标)中的六个相关斯劳溪露营点都会被删除。
复合关系还有助于在空间上维护要素;在将消息发送设置为“向前”时,移动或旋转源要素会使相关目标要素随其一同移动或旋转。