サマリー
関連元テーブル、関連先テーブル、およびリレーションシップ テーブルから属性付きのリレーションシップ クラスを作成します。
使用法
- このツールは、リレーションシップ テーブルの選択された属性フィールドを含むテーブルを、データベースに作成します。これらのフィールドは、関連元または関連先クラスの属性として設定されていない、リレーションシップ自体の属性を格納するために使用されます。たとえば、区画 データベースにおいて、区画と所有者の間に、所有者が区画を「所有し」、区画が所有者に「所有される」というリレーションシップを作成するとします。このリレーションシップの属性として、所有権の割合を指定する場合があります。 
- シンプル リレーションシップとは、互いに独立して存在する、データベースの複数のオブジェクト間のリレーションシップです。たとえば、鉄道ネットワークに信号機が 1 つ以上関連付けられた踏切があるとします。ただし、踏切の存在は信号機に依存せず、踏切のない鉄道ネットワークにも信号機は存在します。シンプル リレーションシップの基数は、1 対 1、1 対多、または多対多のいずれかになります。 
- コンポジット リレーションシップは、あるオブジェクトの存続によって、関連するオブジェクトの存続が制御されるリレーションシップを表します。たとえば、電柱は電圧器をサポートし、変圧器は電柱に設置されます。電柱が削除されると、削除メッセージが、関連する電圧器へ伝達され、それらの電圧器が電圧器のフィーチャクラスから削除されます。コンポジット リレーションシップは、常に 1 対多になります。 
- 正方向および逆方向のパス ラベルは、あるオブジェクトから別のオブジェクトへのリレーションシップを定義します。正方向ラベルは、関連元クラスから関連先クラスへのリレーションシップを記述します。電柱と変圧器の例の場合、正方向のパス ラベルは「電柱が変圧器をサポートする」になります。逆方向ラベルは、関連先クラスから関連元クラスへのリレーションシップを記述します。電柱と変圧器の例の場合、逆方向のパス ラベルは「変圧器は電柱に設置される」になります。 
- リレーションシップ クラスは、ArcCatalog で作成することもできます。ジオデータベース ショートカット メニューを [新規作成] > [リレーションシップ クラス] の順に選択し、メニュー アイテムを選択します。 
- [属性フィールド] パラメーターの [フィールドの追加] ボタンは、ModelBuilder だけで使用されます。ModelBuilder では、先のツールが実行されていないか、出力データが存在しないために、[属性フィールド] パラメーターにフィールド名が表示されない場合があります。[フィールドの追加] ボタンを使用すると、[テーブルからリレーションシップ クラスを作成 (Table To Relationship Class)] ダイアログを完了してモデルの作成を続行できるように、必要なフィールドが追加されます。 
構文
TableToRelationshipClass_management (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 | 関連元テーブルおよび関連先テーブル間に作成する関連のタイプ。 
 | String | 
| forward_label | 関連元テーブル/フィーチャクラスから関連先テーブル/フィーチャクラスへの方向のリレーションシップを定義するラベル。 | String | 
| backward_label | 関連先テーブル/フィーチャクラスから関連元テーブル/フィーチャクラスへの方向のリレーションシップを定義するラベル。 | String | 
| message_direction | 通知方向を持つメッセージは、リレーションシップのオブジェクト間で反映されます。たとえば、電柱と変圧器の間のリレーションシップでは、電柱が削除されると、削除されたことを知らせるメッセージが、電柱から関連する変圧器オブジェクトへ送信されます。 
 | String | 
| cardinality | 関連元と関連先のリレーションシップの基数。 
 | String | 
| relationship_table | リレーションシップ クラスに追加される属性を含むテーブル。 | Table View | 
| attribute_fields [attribute_fields,...] | リレーションシップ クラスに追加される属性値を含むフィールド。 | Field | 
| origin_primary_key | リレーションシップの作成に使用される、関連元テーブルのフィールド。一般的に、これはオブジェクト識別フィールドです。 | String | 
| origin_foreign_key | 関連元のテーブル/フィーチャクラスの主キー フィールドを参照する、リレーションシップ テーブルの外部キー フィールドの名前。 | String | 
| destination_primary_key | リレーションシップの作成に使用される、関連先テーブルのフィールド。一般的に、これはオブジェクト識別フィールドです。 | String | 
| destination_foreign_key | 関連先テーブルの主キー フィールドを参照する、リレーションシップ テーブルのフィールド。 | 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)
環境
ライセンス情報
- ArcGIS Desktop Basic: いいえ
- ArcGIS Desktop Standard: はい
- ArcGIS Desktop Advanced: はい