關系類可以定義地理數據庫中對象之間的關系,關系包括一對一、一對多或多對多的關系。一旦建立關系,某要素、某行記錄或某張表的增刪查改可能會對所聯系的其他要素、記錄、表造成影響。關系可用於優化地理數據庫的邏輯結構,建立復雜的空間實體的空間要素與非空間要素之間的聯系,非空間要素與非空間要素之間的聯系。
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()