テーブルからリレーションシップ クラスを作成 (Table To Relationship Class) (データ管理)

サマリー

関連元テーブル、関連先テーブル、およびリレーションシップ テーブルから属性付きのリレーションシップ クラスを作成します。

使用法

  • このツールは、リレーションシップ テーブルの選択された属性フィールドを含むテーブルを、データベースに作成します。 これらのフィールドは、関連元または関連先クラスの属性として設定されていない、リレーションシップの属性を格納します。 たとえば、区画データベースにおいて、区画と所有者の間に、所有者が区画を所有し、区画が所有者に所有されるというリレーションシップを作成するとします。 このリレーションシップの属性として、所有権の割合を指定する場合があります。

  • シンプル リレーションシップとは、互いに独立して存在する、データベースの複数のオブジェクト間のリレーションシップです。 たとえば、鉄道ネットワークに信号機が 1 つ以上関連付けられた踏切があるとします。 ただし、踏切の存在は信号機に依存せず、踏切のない鉄道ネットワークにも信号機は存在します。 シンプル リレーションシップの基数は、1 対 1、1 対多、または多対多のいずれかになります。

  • コンポジット リレーションシップは、あるオブジェクトの存続によって、関連するオブジェクトの存続が制御されるリレーションシップを表します。 たとえば、電柱は電圧器をサポートし、変圧器は電柱に設置されます。 電柱が削除されると、削除メッセージが、関連する電圧器へ伝達され、それらの電圧器が電圧器のフィーチャクラスから削除されます。 コンポジット リレーションシップは、常に 1 対多になります。

  • 正方向および逆方向のパス ラベルは、あるオブジェクトから別のオブジェクトへのリレーションシップを定義します。 正方向ラベルは、関連元クラスから関連先クラスへのリレーションシップを記述します。 電柱と変圧器の例の場合、正方向のパス ラベルは「電柱が変圧器をサポートする」になります。 逆方向ラベルは、関連先クラスから関連元クラスへのリレーションシップを記述します。 電柱と変圧器の例の場合、逆方向のパス ラベルは「変圧器は電柱に設置される」になります。

パラメーター

ラベル説明データ タイプ
関連元テーブル

関連先テーブルに関連付けられる、テーブルまたはフィーチャクラス。

Table View
関連先テーブル

関連元テーブルに関連付けられる、テーブルまたはフィーチャクラス。

Table View
出力リレーションシップ クラス

作成するリレーションシップ クラス。

Relationship Class
リレーションシップ タイプ

関連元テーブルおよび関連先テーブル間に作成されるリレーションシップのタイプを指定します。

  • シンプル各オブジェクトが独立して存在します (親対親のリレーションシップ)。 これがデフォルトです。
  • コンポジットあるオブジェクトの存続によって、関連するオブジェクトの存続が制御されます (親対子のリレーションシップ)。
String
正方向 (関連元から関連先へ)

関連元テーブルまたはフィーチャクラスから関連先テーブルまたはフィーチャクラスへの方向のリレーションシップを定義するラベル。

String
逆方向 (関連先から関連元へ)

関連先テーブルまたはフィーチャクラスから関連元テーブルまたはフィーチャクラスへの方向のリレーションシップを定義するラベル。

String
情報伝達方向

リレーションシップのオブジェクト間で反映される通知方向を持つメッセージを指定します。 たとえば、電柱と変圧器の間のリレーションシップでは、電柱が削除されると、削除されたことを知らせるメッセージが、電柱から関連する変圧器オブジェクトへ送信されます。

  • なし (メッセージを伝達しない)メッセージは反映されません。 これがデフォルトです。
  • 正方向 (関連元から関連先へ)メッセージは関連元から関連先の方向に反映されます。
  • 逆方向 (関連先から関連元へ)メッセージは関連先から関連元の方向に反映されます。
  • 双方向メッセージは関連元から関連先、および関連先から関連元の方向に反映されます。
String
基数

関連元と関連先のリレーションシップの基数を指定します。

  • 1 対 1 (1:1)関連元のテーブルまたはフィーチャクラスの各オブジェクトを、関連先のテーブルまたはフィーチャクラスの 0 または 1 個のオブジェクトに関連付けできます。 これがデフォルトです。
  • 1 対多 (1:M)関連元のテーブルまたはフィーチャクラスの各オブジェクトを、関連先のテーブルまたはフィーチャクラスの複数のオブジェクトに関連付けできます。
  • 多対多 (M:N)関連元のテーブルまたはフィーチャクラスの複数のオブジェクトを、関連先のテーブルまたはフィーチャクラスの複数のオブジェクトに関連付けできます。
String
リレーションシップ テーブル

リレーションシップ クラスに追加される属性を含むテーブル。

Table View
属性フィールド

リレーションシップ クラスに追加される属性値を含むフィールドの名前。 このフィールドは [リレーションシップ テーブル] パラメーター値に存在する必要があります。

Field
関連元テーブルの主キー

リレーションシップの作成に使用される、関連元テーブルのフィールド。

String
関連元の外部キー

関連元のテーブルまたはフィーチャクラスの主キー フィールドを参照する、リレーションシップ テーブルのフィールドの名前。 テーブルベースのリレーションシップ クラスの場合、これらの値はリレーションシップ クラス内のリレーションシップの設定に使用されるため、NULL にできません。

String
関連先テーブルの主キー

リレーションシップの作成に使用される、関連先テーブルのフィールド。

String
関連先の外部キー

関連先テーブルまたはフィーチャの主キー フィールドを参照する、リレーションシップ テーブルのフィールド。 テーブルベースのリレーションシップ クラスの場合、これらの値はリレーションシップ クラス内のリレーションシップの設定に使用されるため、NULL にできません。

String

arcpy.management.TableToRelationshipClass(origin_table, destination_table, out_relationship_class, relationship_type, forward_label, backward_label, message_direction, cardinality, relationship_table, attribute_fields, origin_primary_key, origin_foreign_key, destination_primary_key, destination_foreign_key)
名前説明データ タイプ
origin_table

関連先テーブルに関連付けられる、テーブルまたはフィーチャクラス。

Table View
destination_table

関連元テーブルに関連付けられる、テーブルまたはフィーチャクラス。

Table View
out_relationship_class

作成するリレーションシップ クラス。

Relationship Class
relationship_type

関連元テーブルおよび関連先テーブル間に作成されるリレーションシップのタイプを指定します。

  • SIMPLE各オブジェクトが独立して存在します (親対親のリレーションシップ)。 これがデフォルトです。
  • COMPOSITEあるオブジェクトの存続によって、関連するオブジェクトの存続が制御されます (親対子のリレーションシップ)。
String
forward_label

関連元テーブルまたはフィーチャクラスから関連先テーブルまたはフィーチャクラスへの方向のリレーションシップを定義するラベル。

String
backward_label

関連先テーブルまたはフィーチャクラスから関連元テーブルまたはフィーチャクラスへの方向のリレーションシップを定義するラベル。

String
message_direction

リレーションシップのオブジェクト間で反映される通知方向を持つメッセージを指定します。 たとえば、電柱と変圧器の間のリレーションシップでは、電柱が削除されると、削除されたことを知らせるメッセージが、電柱から関連する変圧器オブジェクトへ送信されます。

  • NONEメッセージは反映されません。 これがデフォルトです。
  • FORWARDメッセージは関連元から関連先の方向に反映されます。
  • BACKWARDメッセージは関連先から関連元の方向に反映されます。
  • BOTHメッセージは関連元から関連先、および関連先から関連元の方向に反映されます。
String
cardinality

関連元と関連先のリレーションシップの基数を指定します。

  • ONE_TO_ONE関連元のテーブルまたはフィーチャクラスの各オブジェクトを、関連先のテーブルまたはフィーチャクラスの 0 または 1 個のオブジェクトに関連付けできます。 これがデフォルトです。
  • ONE_TO_MANY関連元のテーブルまたはフィーチャクラスの各オブジェクトを、関連先のテーブルまたはフィーチャクラスの複数のオブジェクトに関連付けできます。
  • MANY_TO_MANY関連元のテーブルまたはフィーチャクラスの複数のオブジェクトを、関連先のテーブルまたはフィーチャクラスの複数のオブジェクトに関連付けできます。
String
relationship_table

リレーションシップ クラスに追加される属性を含むテーブル。

Table View
attribute_fields
[attribute_fields,...]

リレーションシップ クラスに追加される属性値を含むフィールドの名前。 このフィールドは relationship_table パラメーター値に存在する必要があります。

Field
origin_primary_key

リレーションシップの作成に使用される、関連元テーブルのフィールド。

String
origin_foreign_key

関連元のテーブルまたはフィーチャクラスの主キー フィールドを参照する、リレーションシップ テーブルのフィールドの名前。 テーブルベースのリレーションシップ クラスの場合、これらの値はリレーションシップ クラス内のリレーションシップの設定に使用されるため、NULL にできません。

String
destination_primary_key

リレーションシップの作成に使用される、関連先テーブルのフィールド。

String
destination_foreign_key

関連先テーブルまたはフィーチャの主キー フィールドを参照する、リレーションシップ テーブルのフィールド。 テーブルベースのリレーションシップ クラスの場合、これらの値はリレーションシップ クラス内のリレーションシップの設定に使用されるため、NULL にできません。

String

コードのサンプル

TableToRelationshipClass の例 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、TableToRelationshipClass 関数の使用方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/Montgomery.gdb"
arcpy.TableToRelationshipClass_management("owners", "Parcels", "ownersParcels_RelClass",
                                          "SIMPLE", "Owns", "Is Owned By", "BACKWARD",
                                          "MANY_TO_MANY", "owners", ["OWNER_PERCENT", "DEED_DATE"],
                                          "OBJECTID", "owner_id", "OBJECTID", "parcel_id")
TableToRelationshipClass の例 (スタンドアロン スクリプト)

区画フィーチャクラスと所有者情報を含むテーブルの間に、属性付きのリレーションシップ クラスを作成します。

# Name: TableToRelationshipClass.py
# Description: Create an attributed relationship class between parcels
#              feature class and table with owner information
# Author: ESRI

# import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Copy owners.dat to file gdb table, since both tables to be related
# must be in the same database
ownerDat = "owners.dat"
ownerTbl = "Montgomery.gdb/owners"
arcpy.CopyRows_management(ownerDat, ownerTbl)

# Create attributed relationship class between 'parcel' parcel layer
# and 'owner' table with additional parcel owner information
parcel = "Montgomery.gdb/Parcels"
relClass = "Montgomery.gdb/parcelowners_RelClass"
forLabel = "Owns"
backLabel = "Is Owned By"
attributeFields = ["OWNER_PERCENT", "DEED_DATE"]
originPK = "OBJECTID"
originFK = "owner_ID"
destinationPK = "OBJECTID"
destinationFK = "parcel_ID"
arcpy.TableToRelationshipClass_management(ownerTbl, parcel, relClass, "SIMPLE",
                                          forLabel, backLabel, "BACKWARD", "MANY_TO_MANY",
                                          ownerTbl, attributeFields, originPK, originFK,
                                          destinationPK, destinationFK)

関連トピック