属性关系类

这种关系类通过一个中间表来存储额外信息,进而提供有关各相关对象间关系的详细描述。

在非属性关系类中,当源表中的主键字段中的值与目标表中的外键字段中的值直接关联时,就会保持这种关系。 此过程不涉及单独的表来存储关系数据。 这种方式通常适用于一对一和一对多关系,即一个表中的记录可与另一表中的一条或多条记录关联,但不支持反向关联。

在属性关系类中,这些属性被存放在第三个中间表内。 该中间表包含外键,这些外键指向相关联表或要素类的主键。 中间表还可以包含额外的属性字段,用以提供关系的更多信息。 这在多对多关系中尤为重要,允许表中的一条记录与另一表中的多条记录相互关联。

多对多关系类

当源表中的某个对象需要与多个目标对象建立关联,或一个目标对象需要与多个源对象建立关联时,就会使用多对多关系类。

与一对一或一对多等其他基数类型的关系不同(这些关系中的源主键直接关联到目标外键),多对多关系需要借助一个中间表来映射这些关联。 因此,当创建多对多关系时,将自动创建一个中间表。 中间表可将来自源的主键值映射至来自目标的外键值。 每一行都将一个源对象与一个目标对象相关联。

多对多关系需要使用中间表。

在创建中间表时,只会生成这些字段。 ArcGIS 无法得知哪些源对象与哪些目标对象相关联,因此在表中必须手动创建行。

关系类中间表属性

多对多或属性关系类的中间表可以选择用于第二个目的:存储关系本身的属性。 例如,在一个地块数据库中,您可能有一个包含宗地信息与所有者信息表相关联的数据集。 每个关系的属性可以是所有权的百分比。 如果需要存储相关的属性信息,则可以在创建属性关系类时或之后任何时间将这些属性加入中间表。

中间表可以存储关系自身的属性。

虽然在一对一或一对多关系设置中不如多对多关系那样常用,但您仍然可能需要在中间表中存储额外的属性。 在这种情况下,就必须在创建关系时选中创建关系类工具中的关系类属性化选项,确保创建一个中间表。

“创建关系类”地理处理工具上的“关系类属性化”复选框

与多对多关系相同,属性关系类的中间表可将源主键值映射至目标外键值,以此来为每种关系存储任意数量的属性。

创建属性关系类后,可以将其添加到地图中。 属性关系类将以表形式出现在内容窗格中,您可以打开并进行查看。 此外,在“字段”视图中,可以为这个中间表添加或移除用户定义字段,还可以使用属性编辑器来填充和编辑这些用户定义字段的值

注:

该中间表在地理数据库中未被识别为对象类。 因此,属性规则、域、子类型、条件值和默认值等地理数据库行为无法应用于此中间表或与此中间表一起使用。

在开始前,请先阅读准备创建关系类,了解创建地理数据库关系类需要考虑的因素

了解如何创建属性关系类

相关主题