ラベル | 説明 | データ タイプ |
関連元テーブル | 関連先のテーブルに関連付けられているテーブルまたはフィーチャクラス。 | Table View |
関連先テーブル | 関連元のテーブルに関連付けられているテーブル。 | Table View |
出力リレーションシップ クラス | 作成するリレーションシップ クラス。 | Relationship Class |
リレーションシップ タイプ | 関連元テーブルおよび関連先テーブル間に作成されるリレーションシップのタイプを指定します。
| String |
正方向 (関連元から関連先へ) | 関連元テーブルから関連先テーブルへのリレーションシップを一意に識別する名前。 | String |
逆方向 (関連先から関連元へ) | 関連先テーブルから関連元テーブルへのリレーションシップを一意に識別する名前。 | String |
情報伝達方向 | 関連元テーブルと関連先テーブルの間でメッセージが送られる方向を指定します。 たとえば、電柱と変圧器の間のリレーションシップでは、電柱が削除されると、削除されたことを示すメッセージが、関連する変圧器オブジェクトへ送信されます。
| String |
基数 | 関連元テーブル内の行またはフィーチャと関連先テーブル内の行またはフィーチャの間に存在するリレーションシップの数を指定します。
| String |
リレーションシップ クラスに属性を含める | リレーションシップ クラスに属性が含まれるかどうかを指定します。
| Boolean |
関連元テーブルの主キー | 多対多または属性付きリレーションシップ クラスの場合、リレーションシップ クラス テーブル内の [関連元の外部キー] フィールドにリンクしている、関連元テーブル内のフィールドです。 属性が付けられていない 1 対 1 または 1 対多のリレーションシップ クラスの場合、関連先テーブル内の [関連元の外部キー] フィールドにリンクしている、関連元テーブル内のフィールドです。 | String |
関連元の外部キー | 多対多または属性付きリレーションシップ クラスの場合、関連元テーブル内の [関連元テーブルの主キー] フィールドにリンクしている、リレーションシップ クラス テーブル内のフィールドです。 属性が付けられていない 1 対 1 または 1 対多のリレーションシップ クラスの場合、関連元テーブル内の [関連元テーブルの主キー] フィールドにリンクしている、関連先テーブル内のフィールドです。 | String |
関連先テーブルの主キー (オプション) | リレーションシップ クラス テーブル内の [関連先の外部キー] フィールドにリンクしている、関連先テーブル内のフィールド。 この値は、多対多または属性付きリレーションシップ クラスでは必須ですが、属性が付けられていない 1 対 1 または 1 対多リレーションシップ クラスでは空のままにする必要があります。 | String |
関連先の外部キー (オプション) | 関連先テーブル内の [関連先テーブルの主キー] フィールドにリンクしている、リレーションシップ クラス テーブル内のフィールド。 この値は、多対多または属性付きリレーションシップ クラスでは必須ですが、属性が付けられていない 1 対 1 または 1 対多リレーションシップ クラスでは空のままにする必要があります。 | String |
サマリー
関連元のテーブルと関連先のテーブルのフィールドまたはフィーチャ間の関連性を格納するためのリレーションシップ クラスを作成します。
使用法
リレーションシップは、空間オブジェクト (フィーチャクラス内のフィーチャ) の間、非空間オブジェクト (テーブル内の行) の間、または空間オブジェクトと非空間オブジェクトの間に存在します。
作成後のリレーションシップ クラスの変更は不可能であり、そのルールのみを追加、削除、または調整できます。
多対多のリレーションシップ クラスの場合、関連元クラスと関連先クラスをリンクするための外部キーを格納するためにデータベース内に新しいテーブルが作成されます。 このテーブルには、関連元クラスまたは関連先クラスのいずれにも属さない、リレーションシップの属性を格納するための他のフィールドが存在することもあります。 たとえば、土地区画データベースにおいて、所有者が土地区画を所有し、土地区画が所有者に所有されるという、土地区画と所有者の間のリレーションシップ クラスがある場合、 このリレーションシップの属性として、所有権の割合を指定する場合があります。 さらに 1 対 1 および 1 対多のリレーションシップ クラスの属性も存在する場合があります。 このような場合は、これらのリレーションシップを格納するためのテーブルが作成されます。
シンプル リレーションシップまたはピアツーピア リレーションシップには、データベース内で互いに独立して存在する 2 つ以上のオブジェクトが関係しています。 たとえば、鉄道ネットワークに信号機が 1 つ以上関連付けられた踏切があるとします。 ただし、踏切の存在は信号機に依存せず、踏切のない鉄道ネットワークにも信号機は存在します。 シンプル リレーションシップの基数は、1 対 1、1 対多、または多対多のいずれかになります。
コンポジット リレーションシップは、あるオブジェクトの存続によって、関連するオブジェクトの存続が制御される関係を示します。 たとえば、電柱は変圧器を支持し、変圧器は電柱に取り付けられます。 電柱が削除されると、削除メッセージが、関連する電圧器へ伝達され、それらの電圧器が電圧器のフィーチャクラスから削除されます。 コンポジット リレーションシップは、常に 1 対多になります。
正方向および逆方向のパス ラベルは、あるオブジェクトから別のオブジェクトへのリレーションシップを定義します。 正方向ラベルは、関連元クラスから関連先クラスへのリレーションシップを記述します。 電柱と変圧器の例の場合、正方向のパス ラベルは「電柱は変圧器を支持する」になります。 逆方向ラベルは、関連先クラスから関連元クラスへのリレーションシップを記述します。 電柱と変圧器の例の場合、逆方向のパス ラベルは「変圧器は電柱に設置される」になります。
パラメーター
arcpy.management.CreateRelationshipClass(origin_table, destination_table, out_relationship_class, relationship_type, forward_label, backward_label, message_direction, cardinality, attributed, 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 |
attributed | リレーションシップ クラスに属性が含まれるかどうかを指定します。
| Boolean |
origin_primary_key | 多対多または属性付きリレーションシップ クラスの場合、リレーションシップ クラス テーブル内の origin_foreign_key フィールドにリンクしている、関連元テーブル内のフィールドです。 属性が付けられていない 1 対 1 または 1 対多のリレーションシップ クラスの場合、関連先テーブル内の origin_foreign_key フィールドにリンクしている、関連元テーブル内のフィールドです。 | String |
origin_foreign_key | 多対多または属性付きリレーションシップ クラスの場合、関連元テーブル内の origin_primary_key フィールドにリンクしている、リレーションシップ クラス テーブル内のフィールドです。 属性が付けられていない 1 対 1 または 1 対多のリレーションシップ クラスの場合、関連元テーブル内の origin_primary_key フィールドにリンクしている、関連先テーブル内のフィールドです。 | String |
destination_primary_key (オプション) | リレーションシップ クラス テーブル内の destination_foreign_key フィールドにリンクしている、関連先テーブル内のフィールド。 この値は、多対多または属性付きリレーションシップ クラスでは必須ですが、属性が付けられていない 1 対 1 または 1 対多リレーションシップ クラスでは空のままにする必要があります。 | String |
destination_foreign_key (オプション) | 関連先テーブル内の destination_primary_key フィールドにリンクしている、リレーションシップ クラス テーブル内のフィールド。 この値は、多対多または属性付きリレーションシップ クラスでは必須ですが、属性が付けられていない 1 対 1 または 1 対多リレーションシップ クラスでは空のままにする必要があります。 | String |
コードのサンプル
次の Python ウィンドウ スクリプトは、CreateRelationshipClass 関数の使用方法を示しています。
import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.CreateRelationshipClass_management("vegtype", "vegtable", "veg_RelClass", "SIMPLE",
"Attributes from vegtable", "Attributes and Features from vegtype",
"NONE", "ONE_TO_ONE", "NONE", "HOLLAND95", "HOLLAND95")
植生フィーチャクラスと、追加の植生情報を含むテーブル間のリレーションシップ クラスを作成します。
# Name: CreateRelationshipClass.py
# Description: Create a relationship class between vegetation feature
# class and table with additional vegetation information
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Copy vegtable.dbf to file gdb table, since both tables to be related
# must be in the same database
vegDbf = "vegtable.dbf"
vegTbl = "Habitat_Analysis.gdb/vegtable"
arcpy.CopyRows_management(vegDbf, vegTbl)
# Create simple relationship class between 'vegtype' vegetation layer
# and 'vegtable' table with additional vegetation information
veg = "Habitat_Analysis.gdb/vegtype"
relClass = "Habitat_Analysis.gdb/veg_RelClass"
forLabel = "Attributes from vegtable"
backLabel = "Attributes and Features from vegtype"
primaryKey = "HOLLAND95"
foreignKey = "HOLLAND95"
arcpy.CreateRelationshipClass_management(veg,
vegTbl,
relClass,
"SIMPLE",
forLabel,
backLabel,
"NONE",
"ONE_TO_ONE",
"NONE",
primaryKey,
foreignKey)
土地区画フィーチャクラスと、所有者情報を含むテーブル間のリレーションシップ クラスを作成します。
# Name: CreateRelationshipClass.py
# Description: Create a 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 simple 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"
primaryKey = "PROPERTY_ID"
foreignKey = "PROPERTY_ID"
arcpy.CreateRelationshipClass_management(ownerTbl,
parcel,
relClass,
"SIMPLE",
forLabel,
backLabel,
"BACKWARD",
"ONE_TO_MANY",
"NONE",
primaryKey,
foreignKey)