ジオデータベース システム テーブルの概要

ジオデータベースの内部構造は、各ジオデータベースの内容を保持するジオデータベース システム テーブル(名前の先頭が GDB_ のテーブル)と呼ばれる一連のテーブルです。システム テーブルは、すべてのデータセットの定義、ルール、およびリレーションシップを定義するジオデータベース スキーマを保持します。システム テーブルは、ジオデータベースのプロパティ、データ整合チェック ルール、および振舞いを実装するために必要なメタデータをすべて含んでいます。

ArcGIS 10 リリース以降、これらのテーブルの内部構造が再編されました。ジオデータベースのスキーマに関連する情報は、ArcGIS 10 より前のリリースでは 35 を超えるジオデータベース システム テーブルに格納されていましたが、ArcGIS 10 では、4 つのメイン テーブルに集約されています。

GDB_Items テーブルと GDB_ItemRelationships テーブルは、特定のジオデータベース内のユーザ定義スキーマを表します。ジオデータベースのスキーマが変更されると、これらのテーブルの内容も変更されます。GDB_ItemTypes テーブルと GDB_ItemRelationshipTypes テーブルは静的です。以下の図は、これらの 4 つのテーブルの関係を示しています。

4 つの主要なジオデータベース システム テーブル

GDB_Items テーブル

ジオデータベースはグラフィック アイテムと非グラフィック アイテムを格納します。アイテムの種類としては、表形式データセット(フィーチャクラス、テーブルなど)、データセット コンテナ(フィーチャ データセット、トポロジ、ジオメトリック ネットワークなど)、より高度なジオデータベースの振舞いを制御するデータセット、および、その他のアイテム(ドメイン、ツールボックス、ワークスペース エクステンションなど)があります。ArcGIS 10 以降、これらのアイテムはすべてジオデータベース内部では GDB_Items テーブルに格納されます。各アイテムはそれぞれ 1 行に格納されます。

アイテムは以下の属性を持ちます。

この 7 つの属性は、SQL でアクセスする可能性が最も高い属性です。

次の属性には、アイテム定義の情報(フィーチャクラスのジオメトリ タイプなど)が格納され、Definition とは別に値が複製されて、ジオデータベースを効率的に参照できるようになっています。たとえば、Dataset Subtype プロパティや Dataset Info プロパティです。そのコードはアイテム タイプによって異なります。

GDB_ItemTypes テーブル

GDB_ItemTypes テーブルは、ジオデータベースで認識されるアイテム タイプの定義済みセットを保持しています。アイテム タイプは、GDB_Items テーブルを正規化して(GDB_Items テーブルではアイテムのタイプは UUID として表されます)、将来的なジオデータベースの機能強化を支援し、タイプ階層を定義するために使用されます。親タイプはすべて抽象タイプです。そのため、親アイテムは実際には GDB_Items テーブルに存在しません。

GDB_ItemTypes テーブルの内容は静的です。アイテムが作成または削除されても変更されません。

アイテム タイプは以下の属性を持ちます。

GDB_ItemRelationships テーブル

ほとんどすべてのジオデータベース アイテムは、少なくとも 1 つの他のジオデータベース アイテムとのリレーションシップを持ちます。たとえば、スタンドアロン テーブルはジオデータベースのルート フォルダに関係付けられ、ドメインは整合チェックで依存するフィーチャクラスまたはテーブルに関係付けられ、フィーチャクラスは所属するトポロジに関係付けられます。GDB_ItemRelationships テーブルはこのようなリレーションシップを追跡するために使用されます。

アイテム リレーションシップは以下の属性を持ちます。

多くの場合、SQL でアクセスするのは最初の 5 つの属性だけです。

ヒントヒント:

アイテム リレーションシップはリレーションシップ クラスとは異なることを理解することが重要です。どのリレーションシップ クラスも 2 つのオブジェクト クラス(関連元クラスと関連先クラス)とのアイテム リレーションシップ、に加えてそのコンテナ(ジオデータベースのルート フォルダまたはフィーチャ データセット)とのアイテム リレーションシップを持ちます。

GDB_ItemRelationshipTypes テーブル

アイテム タイプの静的コレクションがアイテムの分類に使用されるのと同じように、アイテム リレーションシップ タイプの静的コレクションがアイテム リレーションシップの分類に使用されます。たとえば、DatasetInFeatureDataset(フィーチャクラス、リレーションシップ クラス、または制御元のデータセットがフィーチャ データセット内に存在することを示します)と DomainInDataset(データセットがクラスレベルまたはサブタイプレベルの整合チェックのためにドメインを使用することを示します)はアイテム リレーションシップのタイプです。アイテム タイプとは違って、アイテム リレーションシップ タイプには親タイプと子タイプという階層の概念はありません。

アイテム リレーションシップ タイプは以下の属性を持ちます。

ヒントヒント:

Origin Item Type ID と Destination Item Type ID は多くの場合、抽象アイテム タイプの ID です。たとえば、DomainInDataset リレーションシップ タイプの Origin Item Type ID は Domain ですが、これは Range Domain と Coded Value Domain という 2 つのサブタイプを持つ抽象アイテム タイプです。

ジオデータベース システム テーブルの XML

ジオデータベース システム テーブルの属性の定義で述べたように、一部のフィールドでは XML データ タイプが使用されます。IBM DB2、Microsoft SQL Server、および PostgreSQL の ArcSDE ジオデータベースの場合、XML 列ではデータベース管理システムのネイティブ XML が使用されているため SQL で XPath 式を使用してクエリを実行できます。

Oracle と Informix のジオデータベースの場合、XML 列では ArcSDE XML が使用され、一連の別テーブルに BLOB として情報が格納されます。そのため、SQL で XML 列に直接アクセスすることはできません。

Oracle のジオデータベースでシステム テーブルの XML 列の内容を表示できるように、ジオデータベース システム テーブルの XML 列の内容を CLOB データ タイプで格納するシステム ビューが 2 つ用意されています。GDB_Items_vw は、GDB_Items テーブルの Definition、Documentation、ItemInfo の各列の内容を CLOB 列に格納します。GDB_ItemRelationships_vw は、GDB_Relationships テーブルの Attributes 列の内容を CLOB 列に格納します。CLOB 列の内容はテキストとして読み取ることができます。

これらのビューを検索するときは、CLOB 列から文字列を抽出し、XML タイプに変換してから、XPath クエリを実行します。空白の文字列を含む列の XML タイプを作成しようとした場合、Oracle ではサポートされていないため、「XML解析に失敗しました。」

CLOB 列の内容に対してクエリを実行するには、SQL 接続を受け入れるように Oracle サーバを設定する必要があります。詳細については、「SQL を使用するための Oracle リスナーの設定」をご参照ください。

関連項目


3/6/2012