ドラフトデータベース

2009 年 4 月 29 日

値一覧のリレーショナル構造
地理情報システム (GIS) では、地物図形についての情報は、割り当てられた属性によって提供されます。GIS 処理の目的のためにあなたが扱う空間データは、片や、すでにプロジェクトファイルになっていて、ジオリファレンスが付き、リレーショナルデータベースにリンクしている図形データから、反対に、写真判読やリアルタイム GPS による入力、その他の手段でユーザが作成しないといけないような図形データまで、広範囲にわたります。あるいは既に、100％完璧で再利用可能なデータベース構造やジオリファレンスは既に付いていますが、図形データがないようなテンプレートだ
けのオブジェクトをお持ちかもしれません（テクニカルガイド「空間エディタ：地理データテンプレートの作成と使用(Spatial Editor:Creating and Using Geodata Templates)」や「値一覧を使った属性の選択 (Database: Choose Attributes
Using a Picklist」を参照）。新しいプロジェクトファイルに新たに作成した図形データを使う場合、図形データに対して、（テンプレートの一部として、または他のデータソースから）すでにリレーショナルデータベース構造の枠組が出来ている場合があります。さもなければ、自分で全てのテーブルを作成し、関連付けを行う必要があります。または、図形要素が既に出来ていて、完全に定義されたリレーショナルデータベースを持っている場合もあります。その場合は、新たに要素を追加したり、要素とデータベース間の対これらのテーブルは図形応付けを調整して、オブジェクトを更新することになります。あなたの要素に直接アタッチしています（要素からテーブ
プロジェクトがどのような段階にあるにせよ、値一覧を使えば属性を図ルに向けて矢印が伸びて形要素に簡単に割り当てることができます。
います）。
値一覧の働きを理解するため、GIS アプリケーションにおけるリレー値一覧を提供するテーブル
ショナルデータベースの使用について理解する必要があります。リレー
ショナルデータベースは普通複数のテーブルを含みます。それらは図形 POLYSTATS テーブルを除く全てのテーブルが、図の “Soil要素に対して直接アタッチしている必要はありませんが、要素を選択す Type” テーブルに対して外部キーの関係を持っています。
つまり、“Soil Type” テーブルは主キーを持っており、他のるとレコードが選ばれて来ます。例えば、選択した要素に直接アタッチ それぞれのテーブルにあるフィールドからポイントされてしているレコードが主キーとして “ 土壌タイプ（Soil Type）” を持つ場合、 います（すなわち、これらのテーブルからの矢印は “Soil他の開いているテーブルで、この主キーを参照し、同じ土壌タイプを持 Type” テーブルに向かっています）。図形オブジェクトをテンプレートとして保存すると、「リレートのみ」のテーブルつレコードも同時に選択されます。TNT のリレーショナルデータベー にある全てのレコードが残り、そのまま新しいオブジェク
スのこのような要素とテーブルの関係は、「表示」操作または「ツール」 トで使えます。
＞「データベース」＞「編集」でデータベースの上で右ボタンメニューから [ リレーションの修正 (Edit Relations)] を選んで表示させることができます。上の図のようなリレーショナルデータベース構造を示す樹形図が表示されます。リレートしていて要素に直接アタッチしていないテーブルは、「リレートのみ(related-only)」のテーブルと呼ばれます。樹形図については、チュートリアルの「リレーショナルデータベースの管理(Managing Relational Databases)」を参照してください。

主キー vs 外部キー フィールド
テーブル間の関係や属性と図形要素間の関係は、「キーフィールド」を使って設定します。「主キー」はテーブルの中で重要なフィールドで、他のテーブルから参照されます。主キーは他のテーブルを図形要素にリレートするための仲介役です。先の “Soil Type” は主キーフィールドの例で、“yield（産出量）” や “wildlife habitat suitability（野生生物の生息適応度）” のような、土壌タイプを介して他の情報を表わすテーブルから参照される場合もあります。多くのデータベー
スシステムでは、主キーは空白は許されず、値は 1 つである必要があります。（TNT 製品では、個人の名前からファーストネーム、セカンドネーム、サードネームを組み合わせて、唯一の値を持つ主キーを作るといった一意性を要求しません。フィールドの値は、重複した値を持ってもかまいません。）外部キーフィールドは、他テーブルにある主キーを指しており、主キーと同じ値を使います。主キーと外部キーの関係が、選択した要素と他の多くのリレーショナルテーブ
ルのレコードとの間の関連付けを構築します。選択した要素には一つのレコードが直接アタッチしており、他方リレーショナルテーブルは直接のアタッチはありませんが、主キーと外部キーが同じ値を共有しています。

1:1 のアタッチタイプを使う
主キーが「リレートのみ」のテーブルに設定されているとき、値一覧が利用可能です。値一覧を利用するテーブルのアタッチタイプは「暗示的 1：1」でなければいけません。その場合、新しいベクタやシェイプオブジェクトに簡単に属性を割り当てられます。アタッチタイプが「暗示的 1：1」の場合、どの要素に対してもレコードが１つアタッチされており、要素数とレコード数が等しく、レコード番号と要素番号は対応しています。「暗示的 1：1」というアタッチタイプは、全ての要素に対して 1 個のレコードが自動的に付けられます。CAD オブジェクトは「暗示的 1：1」のテーブルをサポートしていません。CAD については「各要素には 1 レコード (one record per element)」、「各レコードには 1 要
素 (one element per record)」または「1：1 対応 (one to one)」から選んでください。「リレートのみ」のテーブルは値一覧テーブルになることができます。このような「リレートのみ」のテーブルが要素と結びつくには、要素に直接アタッチするテーブルがあって、共通の主キーを介してリレートされるテーブルが必要です。

よくある 3 つの状況
属性と図形要素はどんな組み合わせも可能ですが、オブジェクトを表示したり、編集または作成する際、属性を値一覧から割り当てる場合の 3 つの基本的な状況について説明します。

1. 既存のデータベースまたはテンプレートの下で値一覧を使う

図形データをインポートした場合、オブジェクトには既存の要素と、データソースによってリレーショナルデータベース構造を持つ場合があります。既にリレーショナルデータベースがある図形オブジェクトでも要素を加えたり、要素を再分類することもあるでしょう。テンプレートは、作成された元のオブジェクトと同じリレーショナルデータベース構造を持ちますが、要素を持ちません ( テクニカルガ
イド「空間エディタ：地理データテンプレートの作成と使用 (Spatial Editor: Creating and Using Geodata Templates)」を参照してください )。データベースが既存のオブジェクトで、すでに要素にアタッチされたテーブル中に外部キーを持つか、あるいはテンプレートを使ってこれから要素にアタッチする場合、そのフィールドに対して値を提供する値一覧を作ることができます。テクニカルガイド「データベース：値一覧を使って属性を選択する (Database：Choose
Attributes Using a Pick List）」で説明している方法
テンプレートオブジェクトのデータベース構造は、テンプレートの作成元であるオで進めることができます。また、同様のオブジェブジェクトの構造 ( 前ページの樹形図 ) と一致します。
クトからテンプレートを作成すれば、要素はあり新しく開いたませんが、完全なデータベースを残すことができ
テンプレートオブジェクます。オブジェクトをテンプレートとして保存すト。要素があると、完全なデータベース構造は保持されますが、りません。
「リレートのみ」テー
要素に直接アタッチしたテーブルのレコードはあ
ブルは元のテーブルとデータベーステーブル同じレコードを持ちまりません。「リレートのみ」のテーブルのレコード
名前：土壌タイプ
説明：ベクタインポートからす。
アタッチメント：「リレート」のみだけがテンプレートにコピーされます。従って、レコード：48
フィールド：1
テンプレートに要素を追加する時、元のオブジェ
Soil Type テー
クトと同じ値一覧テーブルと値があるので、それブルのデータチップを使って属性を選択ができます。シェイプファイ
ルや DGN、DXF、TAB ファイルなどの多くの外部テンプレートオブジェクトを開くと、要素はなく、要素に直接アタッチするように定ファイルは、このようなリレーショナル型の構造直接アタッチするテー
義されたテーブルにはレコードはありませ
ブルにはレコードがあをサポートしていません。リレーショナルデータん。
「リレートのみ」のテーブルはテンプりません。
レートが作られた元のオブジェクトと同じベースをサポートしていないファイルのインポーレコードを持ちます。
トでは、以下に概略を説明する手順に従って、データベースを調整して値一覧を使います。

2. 値一覧を使うデータベースの作成

新規図形オブジェクトでは、最初に要素に直接アタッチするテーブルを作成したいでしょう。次に、値一覧を含む関連付けがされたテーブルを作成し、その後ようやく要素を追加します。値一覧を提供するデータベース構造を持つ新規オブジェクトの作成については、テクニカルガイド「データベース：値一覧を作成するウィザード (Database: Wizard to Create a New Picklist)」または「データベース：新規オブジェクトに対して手動で値一覧を作成する (Database: Creating Picklists Manually for New Objects)」を参考にしてください。

3. 値一覧を使うデータベースの調整

値一覧にある値の情報は、外部のテキストファイルやデータベーステーブルにあるかもしれません。既にテーブル中にフィールドはあるが、値一覧としての関連付けが正しくされていないのかもしれません（例えば、要素に直接アタッチしていたり、外部キーによって参照されていない）。もし、必要なテーブルが無い場合は、上で説明したように処理してください。値一覧のフィールドが主キーでなければ、テーブルプロパティを調整して値一覧が使えるように主キーと外部キーの関係を設定します。これらの関係は手動で設定するか、値一覧ウィザードを使って新規テーブルを作成し、関係を設定することが可能です。ネイティブのシェイプファイルやその他のファイル形式は、1 つのデータベーステーブルしか持つことができず、どの要素も 1 つのレコードがアタッチされていなければいけません。このようなファイルについて、
TNT 製品の中で値一覧を作成・使用する方法は、テクニカルガイド「データベース：シェイプファイルを使って値一覧を作る (Database: Creating Pick Lists for Use with Shapefiles)」で説明しています。