データベース

ドラフトv75 新機能

2008 年 12 月 8 日

属性の値一覧の設定
地理情報システム (GIS) では、地物の情報は割り当てられた属性によって提供されます。 GIS 処理の目的のために扱う空間データは、「プロジェクトファイルになっていて、ジオリファレンスがあり、リレーショナルデータベースにリンクしている図形データ」から、反対に「写真判読やリアルタイム GPS その他の手段を使ってこれから入力、作成しないといけないような図形データ」まで広範囲にわたります。あるいは、データベース構造やジオリファレンスは既に持っているが、データ自身がないようなテンプレートオブジェクトかもしれません（テクニカルガイドの“空間エディタ：地理データテンプレートの作成と使用 (Spatial Editor:Creating and Using Geodata Templates)”を参照）。
新 し い プ ロ ジ ェ ク ト フ ァ イ ル / オ ブ ジ ェ ク ト に 新 た に 作 成 し た 図 形 デ ー タ を 扱 う 場 合、 図 形 デ ー タ に 対 して、 テ ン プ レ ー ト の 一 部 と し て ま た は 他 の デ ー タ ソ ー ス か ら、 す で に リ レ ー シ ョ ナ ル デ ー タ ベ ー ス 構 造の 枠 組 が 出 来 て い る 場 合 が あ り ま す。 そ う で な け れ ば、 自 分 で テ ー ブ ル を 作 成 し て、 関 連 付 け を 行 う 必
要 が あ り ま す。 ま た は、 図 形 要 素 が 既 に 入 力 さ れ て い て、 き ち ん と 体 系 化 さ れ た リ レ ー シ ョ ナ ル デ ー タベ ー ス を 持 っ て い る 場 合 も あ り ま す。 そ の 場 合 は、 新 た に 要 素 を 追 加 し た り、 要 素 と デ ー タ ベ ー ス 間 の対 応 付 け を 調 整 し て、 オ ブ ジ ェ ク ト を 更 新 す る こ と に な り ま す。 あ な た の プ ロ ジ ェ ク ト デ ー タ が ど の よ
う な 状 態 に あ る か 分 か り ま せ ん が、 値 一 覧 を 使 え ば 属 性 を 図 形 要 素 に 簡 単 に 割 り 当 て る こ と が で き ま す。
値一覧の働きを理解するため、GIS アプリケーションにおけるリレーショナルデータベースについて少し理解する必要があります。リレーショナルデータベースは普通複数のテーブルを含みますが、図形要素に対して直接アタッチしている必要これらのテーブルは図形要素はありません。しかし、要素を選択すると、正しいレコードに直接アタッチしていますが選ばれて来ます。例えば、要素に直接アタッチしているレ（要素からテーブルに向けてコードが主キーとして“Soil Type（土壌タイプ）”を持ち、他矢印が伸びています）。のテーブルが開いている場合、この主キーを参照しているレコードも選択されます。TNT のリレーショナルデータベースで値一覧を提供するテーブル

要素とテーブルの間の関係を見るには、該当するデータベー
スの上で右ボタンメニューから [ リレーションの修正 (EditPOLYSTATS テーブルを除く全てのテーブルが、図の“SoilRelations)] を選びます。 このメニューを選ぶと、右図のよType”テーブルに対して外部キーの関係を持っています。こうなリレーショナルデータベース構造を示す樹形図が表示されは、“Soil Type”テーブルは主キーを持っており、他のそれます。要素に直接アタッチしていないテーブルは、「リレーれぞれのテーブルにあるフィールドからポイントされているトのみ (related-only)」のテーブルです。この樹形図の詳しことを意味しています（すなわち、これらのテーブルからのい情報は、チュートリアルの“リレーショナルデータベースの管理 (Managing Relational Databases)”をご覧ください。
テーブル間の関係、つまり属性を定義するテーブルと図形要

矢印は“Soil Type”テーブルに向かっています）。図形オブジェクトをテンプレートとして保存すると、「リレートのみ」のテーブルにある全てのレコードが残り、そのまま新しいオブジェクトで使えます。

素間との関係は、「キー」のフィールドを使って設定します。主キーは他のテーブルから参照されるテーブルにおいて重要なフィールドです。主キーは他のテーブルを図形要素に関連付けるために大切です。この例では“Soil Type”が主キーで、“yield（産出量）”や“wildlife habitat suitability（野生生物の生息適応度）”のような、他のテーブルから参照されています。多くのデータベースシステムでは、主キーフィールドは空白は許されず、全てのレコードにわたって一意的である必要があります。
（ただし TNT 製品では、個人の名前のレコードからファーストネーム、セカンドネーム、サードネームなど、複数のフィールドを組み合わせて、唯一の値を持つ主キーを作るといった一意性は要求されません。
これらの各フィールドは、他のレコードと重複した値を持っていてもかまいません。）外部キーフィールドは、他のテーブルにある主キーを指し示しており、主キーの値と同じ値を使います。主キーと外部キーの関係は、選択した要素と他のリレーショナルテーブルのレコードとの間の関係を構築します。選択した要素にはレコードが直接アタッチしており、他方、リレーショナルテーブルは直接アタッチする必要はありませんが、主キーと外部キーで同じ値を共有しています。
主キーフィールドが「リレートのみ」テーブルにあると、値一覧を作ることが出来ます。新規ベクタやシェイプオブジェクトに属性を割り当てる際、値一覧を利用するテーブルのアタッチタイプが「暗示的 1：1」であると、非常に簡単に割り当てられます。アタッチタイプが「暗示的 1：1」の場合、どの要素に対してもアタッチされたレコードが１個ずつあり、要素数とレコード数が等しく、レコードの番号は要素の番号に対応しています。

「暗示的 1：1」というアタッチタイプを持ったテーブルには、全ての要素に対して 1 個のレコードが自動的に割り付けられます。 CAD オブジェクトは「暗示的 1：1」をサポートしていません。CAD については「各要素には 1 レコード (onerecord per element)」、「各レコードには 1 要素 (one element per record)」または「1：1 対応 (one to one)」から選んでください。他の「リレートのみ」のテーブルは、値一覧になることができます。このような「リレートのみ」のテーブルが要素と結びつくには、要素に直接アタッチしていて共通の主キーを参照して他のテーブルからリレートできるテーブルが必要です。
属性と図形要素はどんな組み合わせでも大丈夫ですが、オブジェクトを表示したり、編集または作成する際に値一覧から属性を割り当てる際に直面するであろう、3 つのベーシックな状況について以下で説明します。
正しい構造を持ったデータベースまたはテンプレートで値一覧を使う場合

インポートにより図形データを取得した

場合、そのオブジェクトは既存の要素と共に、データソースによりますがリレーショナルデータベース構造を持ちます。既にリレーショナルデータベースを持っている図形オブジェクトに要素を追加したり、要素を再分類したいかもしれません。テンプレートオブジェクトは、作成された元のオブジェクトと同じリレーショナルデータベース構造を持ちますが、要素を持ちません ( テクニカ
ルガイドの“空間エディタ：地理デー
タテンプレートの作成と使用 (Spatial

新たに開いたテンプレートオブジェクト。要素はありません。

Editor: Creating and Using GeodataTemplates)”を参照してください )。リ
レーショナルデータベースがテーブル中「リレートのみ」テーブル。元のテーブルと同じレコード数です。

Soil Type テー
ブルのデータティップに外部キーフィールドを持つ場合（既存のオブジェクト）、あるいは要素にアタッチするテーブルの場合（テンプレート）、自動的に値一覧を持ち、そのフィールドに対して値をテンプレートオブジェクトを開くと、提供します。テクニカルガイドの“システム：値一覧を使って属性を選択する (System：Choose
Attributes Using a Pick List）”で説明している方法で進めることができます。また、オブジェ
クトからテンプレートを作ると、要素はありませんがリレーショナルデータベースはそのまま要素はなく、要素に直接アタッチする
直接アタッチされた
テ ー ブ ル。 レ コ ー ドがありません。

ように定義されたテーブルの中にもレコードはありません。テンプレートが作られた元のオブジェクトと同じレコードを持った「リレートのみ」のテーブルがあるかもしれません。

コピーされてきます。 オブジェクトをテンプレートとして保存すると、データベース一式がコピーされますが、要素に直接アタッチしたテーブルはレコードを持ちません。 「リレートのみ」のテーブルのレコードだけがテンプレートオブジェクトにコピーされます。テンプレートオブジェクトに要素を追加する時は、元のオブジェクトと同じ値一覧が自動的にあるので、それを使って属性を選択することができます。シェイプファイルや DGN、DXF、TAB ファイルなどの多くの外部ファイルは、リレーショナル型構造をサポートしていません。 リレーショナルデータベースをサポートしていない、またはそのような設定の機能がないファイルのインポートでは、以下に概説する手順に従って、値一覧を使うようにデータベースを調整する必要があります。
値一覧を使うデータベースの作成

新規図形オブジェクトでは、まずは要素に直接アタッチするテーブルを作成したいと思うでしょう。それから、要素を追加する前に、値一覧を含むテーブルを作成します。 値一覧を提供するデータベースを持つ新規オブジェクトの作成については、テクニカルガイド“データベース：新規図形オブジェクトに対して値一覧を作る (Database: Creating Pick Lists for a New Geometric Object)”を参考にしてください。
値一覧を使うデータベースの調整

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