关系类可以定义地理数据库中对象之间的关系,关系包括一对一、一对多或多对多的关系。一旦建立关系,某要素、某行记录或某张表的增删查改可能会对所联系的其他要素、记录、表造成影响。关系可用于优化地理数据库的逻辑结构,建立复杂的空间实体的空间要素与非空间要素之间的联系,非空间要素与非空间要素之间的联系。
2.1 创建关系类(CreateRelationshipClass)
2.1.1 描述
该工具可创建用于存储源与目标之间的联系的关系类。源与目标可以是空间对象(如要素类中的要素)和空间对象、空间对象和非空间对象(表中的某行属性记录)或非空间对象和非空间对象。需要注意,一旦创建关系类,就无法对其进行修改,只能添加、删除或优化关系类的逻辑规则。删除、重命名等操作需使用ArcCatalog软件。
2.1.2 参数说明
param | optional | des | type |
---|---|---|---|
源表/origin_table | false | 与目标表相关联的对象 | Table View |
目标表/destination_table | false | 与源表相关联的对象 | Table View |
输出关系类/out_relationship_class | false | 创建的关系类 | RelationshipClass |
关系类型/relationship_type | true | 要在对象间创建的关系类型: SIMPLE(default):独立的对象之间的关系 COMPOSITE:互相依赖的对象之间的关系,在此关系中,一个对象的生存周期与另一对象之间的生存周期相关联 | String |
前向路径标注/forward_label | false | 用于从源对象确定目标对象的唯一标识 | String |
后向路径标注/backward_label | false | 用于从目标对象确定源对象的唯一标识 | String |
消息方向/message_direction | true | 消息在源对象和目标对象之间的传递方向。如当大楼被拆除时,归属大楼的商铺一并删除。 --->FORWARD:消息由源传向目标。 --->BACKWARD:消息由目标传向源。 --->BOTH:消息先由源到目标,再由目标到源。 --->NONE(default):不传递任何消息。 |
String |
基数/cardinality | true | 确定源的记录和目标的记录之间存在多少种关系。 --->ONE_TO_ONE(default):源中的每行可与目标中的零或一行相关联。 --->ONE_TO_MANY:源中的每行可与目标中的一行或多行相关联。 --->MANY_TO_MANY:源中多行可与目标中的一行或多行相关联。 |
String |
关系类已属性化/attributed | true | 指定关系是否具有属性。 --->NONE(default):指定关系类将不具有属性。 --->ATTRIBUTED:指定关系类将具有属性。 | Boolean |
源主键/origin_primary_key | false | 与关系类表中的源外键字段相关联的源表中的字段。 | String |
源外键/origin_foreign_key | false | 与源表中的源主键字段相关联的关系类表中的字段。 | String |
目标主键/destination_primary_key | true | 与关系类表中的目标外键相关联的目标表中的字段。 | String |
目标外键/destination_foreign_key | true | 与目标表中的目标主键相关联的关系类表中的字段。 | String |
2.1.3 arcpy接口
arcpy.CreateRelationshipClass_management()
2.2 迁移关系类(MigrateRelationshipClass) 
2.2.1 描述
将基于ObjectID的关系类迁移到基于GlobalID的关系类。输入关系类中输入的源对象和目标对象都必须具有一个GlobalID字段,同时,现有输入关系类必须基于ObjectID。
2.2.2 参数说明
param | optional | des | type |
---|---|---|---|
输入关系类/in_relationship_calss | false | 基于ObjectID的关系类 | Relationship Class |
2.2.3 arcpy接口
arcpy.MigrateRelationshipClass_management()
2.3 表转关系类(Table to relationship class)
2.3.1 描述
从源表、目标表和关系表创建属性关系类,在数据库中创建一个包含关系表的所选属性字段的表,这些字段用于存储关系自身的属性,不存储源或目标对象的属性。
2.3.2 参数说明
本工具除“关系表/relationship_table”和“属性字段/attribute fields”外其余参数大多与2.1.2中的同名参数相对应,在此仅对六个参数参数进行说明,其余参数不做赘述:
param | optional | des | type |
---|---|---|---|
关系表/relationship_table | false | 包含将被添加到关系类的属性的表 | Table View |
属性字段/attribute_fields | false | 包含将被添加到关系类的属性值的字段 | Field/Array |
源主键/origin_primary_key | false | 将用于创建关系的源表中的字段 | String |
源外键/origin_foreign_key | false | 关系表中引用源表中的主键字段的外键字段 | String |
目标主键/destination_primary_key | false | 将用于创建关系的目标表中的字段 | String |
目标外键/destination_foreign_key | false | 关系表中引用目标表中的主键的字段 | String |
2.3.3 arcpy接口
arcpy.TableToRelationshipClass_management()