(57)【要約】【課題】個別のマスタテーブルに対するデータの定義作業は、個々のマスタテーブル別に行う必要がある。【解決手段】設定ファイルに記述された合成規則に従い、複数のマスタテーブルのそれぞれから少なくとも１つの属性を取り出して合成し、１つの仮想テーブルを生成する。この仮想テーブルに対応する作業画面を通じてデータの定義入力を受け付けた後、受け付けたデータを対応する仮想テーブルに登録する。この仮想テーブルに対する登録データを、この登録データに対応する属性を有する１つ又は複数のマスタテーブルに反映させる。【選択図】図１
2010191628.tif 000002
【特許請求の範囲】
【請求項１】
リレーショナルデータベースを規定する複数のマスタテーブルの合成規則を記述した設定ファイルを記憶する第１の手段と、
前記設定ファイルに記述された合成規則に基づいて、あるマスタテーブルの少なくとも１つの属性と他のマスタテーブルの少なくとも１つの属性とを１つのテーブル上に合成した仮想テーブルを生成する第２の手段と、
生成された前記仮想テーブルに、前記複数のマスタテーブルで管理する既存のデータを登録する第３の手段と、
前記仮想テーブルのデータを画面上に表示する第４の手段と、
前記仮想テーブルに対するデータ入力を受け付ける第５の手段と、
前記仮想テーブルに対するデータ入力の結果を、前記仮想テーブルに登録する第６の手段と、
前記仮想テーブルに登録されたデータを、当該新規データに対応する属性を有する１つ又は複数のマスタテーブルの対応データに反映させる第７の手段と
を有するデータ定義支援システム。
【請求項２】
前記第５の手段は、
前記仮想テーブルのレコードを代表する属性をリスト表示する第１の表示欄と、
前記第１の表示欄で選択された１つのレコードに関連付けられた属性値を表示する第２の表示欄と
を有するユーザインタフェース画面を通じてデータ入力を受け付ける
ことを特徴とする請求項１に記載のデータ定義支援システム。
【請求項３】
前記合成規則の記述は、
合成する複数のマスタテーブルの名称と、
各マスタテーブルの属性のうち合成対象とする属性の名称と
を含むことを特徴とする請求項１又は２に記載のデータ定義支援システム。
【請求項４】
前記仮想テーブルは、同一のマスタテーブルに属する属性の集りを任意の個数組み合わせたテーブル構造を有する
ことを特徴とする請求項１〜３のいずれか１項に記載のデータ定義支援システム。
【請求項５】
前記仮想テーブルに対して入力されたデータに対して、同一のマスタテーブルに属する属性の集まりが複数ある場合、
前記第７の手段は、当該属性の集まり毎に別レコードとして対応するマスタテーブルに登録する
ことを特徴とする請求項１〜４のいずれか１項に記載のデータ定義支援システム。
【請求項６】
リレーショナルデータベースを規定する複数のマスタテーブルの合成規則を記述した設定ファイルに基づいて、あるマスタテーブルの少なくとも１つの属性と他のマスタテーブルの少なくとも１つの属性とを１つのテーブル上に合成した仮想テーブルを生成する第１の処理と、
生成された前記仮想テーブルに、前記複数のマスタテーブルで管理する既存のデータを登録する第２の処理と、
前記仮想テーブルのデータを画面上に表示する第３の処理と、
前記仮想テーブルに対するデータ入力を受け付ける第４の処理と、
前記仮想テーブルに対する新規データの入力を、前記仮想テーブルに登録する第５の処理と、
前記仮想テーブルに登録された新規データを、当該新規データに対応する属性を有する１つ又は複数のマスタテーブルの対応データに反映させる第６の処理と
を有するデータ定義支援方法。
【請求項７】
前記第４の処理は、
前記仮想テーブルのレコードを代表する属性をリスト表示する第１の表示欄と、
前記第１の表示欄で選択された１つのレコードに関連付けられた属性値を表示する第２の表示欄と
を有するユーザインタフェース画面を通じてデータ入力を受け付ける
ことを特徴とする請求項６に記載のデータ定義支援方法。
【請求項８】
前記合成規則の記述は、
合成する複数のマスタテーブルの名称と、
各マスタテーブルの属性のうち合成対象とする属性の名称と
を含むことを特徴とする請求項６又は７に記載のデータ定義支援方法。
【請求項９】
前記仮想テーブルは、同一のマスタテーブルに属する属性の集りを任意の個数組み合わせたテーブル構造を有する
ことを特徴とする請求項６〜８のいずれか１項に記載のデータ定義支援方法。
【請求項１０】
前記仮想テーブルに対して入力されたデータに対して、同一のマスタテーブルに属する属性の集まりが複数ある場合、
前記第６の処理は、当該属性の集まり毎に別レコードとして対応するマスタテーブルに登録する
ことを特徴とする請求項６〜９のいずれか１項に記載のデータ定義支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーショナルデータベースで使用するデータ定義の管理作業を支援するシステム及び方法に関する。特に、作業上の関連性が高い複数のマスタテーブルに対するデータ定義を支援するシステム及び方法に関する。
【背景技術】
【０００２】
現在、コンピュータシステムでは、リレーショナルデータベースが広く利用されている。リレーショナルデータベースとは、関連のある一塊のデータをテーブル形式で管理するデータベースの一形態である。なお、テーブルの横軸方向にはデータの属性を識別するフィールドが配置され、縦軸方向にはこれら複数のフィールドに対応する一組のデータを識別するレコードが配置される。
【０００３】
また、リレーショナルデータベースでは、複数のテーブルのフィールド間に参照関係を設定することができる。この明細書では、様々な用途で他のテーブルから参照されるテーブルをマスタテーブルと呼ぶ。
【０００４】
このマスタテーブルに対するデータの登録作業や編集作業を支援する仕組みが、特許文献１及び２に開示されている。例えば特許文献１には、参照関係があるフィールドへのデータ入力の際、参照先となるデータを別ウインドウに表示し、別ウインドウの中からデータを入力する仕組みが開示されている。特許文献１は、この仕組みにより、キー入力の回数削減と参照先のデータとの矛盾回避とを実現している。また例えば特許文献２には、入力データのチェックプログラムをマスタテーブル毎に作成する負担を軽減することを目的とする仕組みが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平7-219824号公報
【特許文献２】特開2008-70969号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
製造実行システム（以下、「ＭＥＳ」という。）、経営資源計画（以下、「ＥＲＰ」という。）システムその他のシステムが使用するマスタテーブルは、様々な用途に共通して使用される基本的なテーブルである。このため、細かく正規化されている。従って、システムの１つの機能についても複数のマスタテーブルが必要であり、関連の深いマスタテーブル同士であっても切り離されて存在している。
【０００７】
このような理由により、マスタテーブルのデータ定義の管理は、現場作業者にとって非常に分かりづらく、また負担にもなっている。例えばＭＥＳやＥＲＰで支援する「在庫チェック」や「生産計画変更」等といった業務手順の中で関数を使用させたい場合、関数とそのパラメータに関する情報をリレーショナルデータベースに登録しておく必要がある。
【０００８】
しかし、関数には通常様々な種類があり、その引数の数も固定ではない。そのため、このような情報をリレーショナルデータベースに登録する場合には、「関数テーブル」と「パラメータテーブル」とに切り離すのが一般的である。その場合、例えば関数テーブルには、当該業務で使用する関数を格納するライブラリファイルの所在やそのエントリーポイント等の情報を格納する。一方、パラメータテーブルには、その引数の情報を格納する。
【０００９】
プログラムを記述する場合を考えると分かるように、関数と引数は通常一まとめにして記述する。従って、マスタテーブルの構成上、関数とパラメータとを別のテーブルに記述しなければならないとしても、データを定義する段階では、一まとめで定義したいと考えるのが一般的である。
【００１０】
しかし、一まとめで考えたほうが自然な情報であったとしても、マスタテーブルとしては別々に管理せざるを得ないことも多い。例えばバルブとポンプの情報を管理する場合である。バルブとポンプは、Ｎ対１の接続関係を持つ場合がある。この場合、リレーショナルデータベース上で管理する場合にはマスタテーブルが別に存在する方が使い易い。しかし、データを定義する時点では、配管計装線図等に基づいて一度にデータを定義できた方が作業し易い。
【００１１】
このように、リレーショナルデータベースの構成上は別のマスタテーブルとして管理される場合でも、データの定義時点には、むしろ一まとめに定義できた方が都合が良い情報が存在する。マスタテーブルは、このような特徴を有している。
【００１２】
前述した特許文献１及び２に開示された装置は、このようなマスタテーブルへのデータの定義時にも使用することができる。
例えば特許文献１に開示された技術を、前述した関数テーブルとそのパラメータテーブルのデータ定義に使用する場合を考える。ここでは、関数の定義を先に行い、続いてパラメータの定義を行う場合を考える。この技術の場合、パラメータテーブルに対するデータの定義画面とは別に、参照関係に基づく関数リストが別ウインドウに表示される。従って、ユーザは、この別ウインドウの中からパラメータに関連付ける関数を選択することによりデータの定義を行うことになる。
【００１３】
しかし、この方法では、１つのパラメータから対応付け可能な関数を見ることしかできない。このため、関数に関連する全てのパラメータを知ることはできない。すなわち、関数に関連する全てのパラメータを含めた全体像を把握することができない。前述した設備構成に関するリレーショナルデータベースに適用する場合にも同様の問題がある。
【００１４】
この問題を解決するには、個別の事例に対して不可分の関係にある幾種類かのテーブルのレコードをまとめて定義できるプログラムを作成すれば良い。
しかし、特許文献２にも開示されているように、マスタテーブルの定義に関する個別の事例に対し、別々のプログラムを作成することは、開発コストの点で負担が大きすぎる。
【００１５】
特許文献２は、このような個別プログラムの作成負担を軽減することを目的とする。しかし、その手法は、個別のデータテーブルへのデータ入力時に使用するチェック用プログラムの作成を個別に作成せずに済むというものである。すなわち、前述したように、不可分の関係にある複数のテーブルのレコードをまとめて定義することはできない。
【課題を解決するための手段】
【００１６】
出願人は、データの定義時には密接な関係があるにもかかわらず、リレーショナルデータベース上では複数のマスタテーブルに分散している属性に対するデータの定義作業を、１つの作業画面を通じて実行できるようにする仕組みを提案する。
【００１７】
具体的には、以下の３つのステップで構成される仕組みを提案する。すなわち、複数のマスタテーブルから関連性の高い属性を取り出して合成し、仮想テーブルを生成する第１のステップと、仮想テーブルに対応する作業画面を作業者に提示し、当該作業画面を通じてデータの定義入力を受け付けて仮想テーブルに登録する第２のステップと、仮想テーブルに登録されたデータを、当該データに対応する属性を有する１つ又は複数のマスタテーブルの対応データに反映させる第３のステップとで構成される仕組みを提案する。
【発明の効果】
【００１８】
前述した仕組みの採用により、データ定義時に関連性の高いデータが複数のマスタテーブルに分散して存在する場合でも、ユーザは、これらのデータを一つにまとめた仮想テーブルの作業画面を通じてデータの定義作業を一度に進めることができる。
【００１９】
また、作業画面を通じて仮想テーブルに登録されたデータは、作業が終了した時点で、各データに対応する属性を有する１つ又は複数のマスタテーブルの対応データに自動的に反映される。この機能により、複数のマスタテーブル間でのデータの整合性を確保することができる。
【図面の簡単な説明】
【００２０】
【図１】形態例に係るデータ定義支援システムの機能ブロック構成を示す図である。
【図２】データ定義の対象となる３つのマスタテーブルの構造例を示す図である。
【図３】データ定義支援システムで使用する設定ファイルの構造例を示す図である。
【図４】４種類のオブジェクトの相関関係を説明する図である。
【図５】仮想メインテーブルの生成フローチャートの前半例を示す図である。
【図６】仮想メインテーブルの生成フローチャートの後半例を示す図である。
【図７】ステップ５１２で生成される仮想メインテーブルの構造例を示す図である。
【図８】サブルーチン６０６の詳細動作を説明するフローチャート例を示す図である。
【図９】データ変換部で使用する設定ファイルの選択画面例を示す図である。
【図１０】サブルーチン６０６で生成されるデータオブジェクトの構造例を示す図である。
【図１１】仮想作業者テーブルの概念構成例を示す図である。
【図１２】仮想役職テーブルと仮想所属テーブルの概念構造例を示す図である。
【図１３】仮想作業者テーブル用の定義ユーザインタフェースの一例を示す図である。
【図１４】仮想役職テーブル用の定義ユーザインタフェースの一例を示す図である。
【図１５】仮想メインテーブルの表示用画面の生成フローチャート例を示す図である。
【図１６】仮想テーブルへのデータ入力に使用するフローチャート例を示す図である。
【図１７】仮想テーブルのプロパティ表示部に対する新規データの入力例を示す図である。
【図１８】仮想メインテーブルに新規データの入力があった場合に新規データを仮想サブテーブルに反映する処理手順を表すフローチャート例を示す図である。
【図１９】仮想メインテーブルとしての仮想作業者テーブルに新規のレコードを追加した後の概念構成例を示す図である。
【図２０】仮想メインテーブルから表計算シートにデータを保存する処理手順を表すフローチャート例を示す図である。
【図２１】仮想サブテーブルとしての仮想役職テーブルに新規レコードが追加された後の概念構成例を示す図である。
【図２２】形態例２のステップ３の説明に対応する属性情報オブジェクトの挿入を表す概念図である。
【図２３】仮想テーブルのプロパティ表示部を用いた既存データの変更入力例を示す図である。
【発明を実施するための形態】
【００２１】
以下、発明に係るデータ定義支援システムの一形態例を説明する。なお言うまでも無く、発明は、後述する形態例や説明に限定されるものではなく、既知の技術と組み合わせた他の態様にも適用できる。
【００２２】
（１）形態例１
（ａ）システムの全体構成
図１は、リレーショナルデータベースシステムとその周辺要素を含む全体構成図である。リレーショナルデータベースシステムは、コンピュータ１０１と、その入力装置（マウス１０９、キーボード１１０）とで構成される。なお、作業者１１１が、入力装置を使用してリレーショナルデータベースシステムを操作する。
【００２３】
言うまでも無く、コンピュータ１０１は、ハードウェア的には、算術論理ユニットと、制御回路と、記憶装置と、入出力装置（モニタを含む。）で構成される。
一方、コンピュータ１０１は、機能的には、表計算ソフトの表計算シート１０３と、データ定義支援ソフト１０２と、入力画面１０８で構成される。
【００２４】
なお、形態例における表計算シート１０３は、リレーショナルデータベースのマスタテーブルと１対１の対応関係を有している。
入力画面１０８は、データ定義支援ソフト１０２が生成するユーザインタフェース画面である。入力画面１０８は、勿論、表示デバイスの画面上に表示される。
【００２５】
データ定義支援ソフト１０２は、データ変換部１０４と、定義支援サービス部１０５と、設定ファイル１０６とで構成される。なお、設定ファイル１０６にはマスタテーブルから仮想テーブルを合成するための規則が記述されている。因みに、データとしての設定ファイルは、コンピュータ１０１の記憶領域に記憶されている。データ変換部１０４は、この設定ファイル１０６に記述された規則に基づいて、表計算シート１０３から仮想テーブル１０７を生成する。この仮想テーブル１０７は、後述する仮想メインテーブルや仮想サブテーブルに対応する。この形態例の場合、仮想テーブル１０７は表計算ソフトの表計算シート１０３より生成される。もっとも、表計算シート１０３ではなく、リレーショナルデータベースのマスタテーブルから生成することもできる。
【００２６】
（ｂ）データ定義の作業対象とするマスタテーブルの例
この形態例では、定義対象としてのマスタテーブルが３つであるものとして説明する。勿論、マスタテーブルは４つ以上でも良い。図２に、３つのマスタテーブルに対応する表計算シート１０３の構造例を示す。すなわち、作業者テーブル２０１、役職テーブル２０２、所属テーブル２０３の３つを考える。図２は、作業者テーブル２０１、役職テーブル２０２、所属テーブル２０３のそれぞれに対応するテーブルに（ａ）、（ｂ）、（ｃ）の符号を付して示している。
【００２７】
各テーブルのデータ構造は共通であり、１行目と２行目が情報表示部２０４を構成し、３行目以降がデータ部２０５を構成する。なお、１行目には属性名が記述され、２行目には型コードが記述される。また、データ部２０５を構成する各行には、リレーショナルデータベースのデータが表形式のまま使用される。
【００２８】
（ｃ）設定ファイルのデータ構造
図３を用い、図１で説明した設定ファイル１０６に含まれるデータについて説明する。設定ファイル１０６には、データの定義作業をまとめて行った方が良いと考えられる複数のマスタテーブルの合成規則が作業目的に応じて記述される。すなわち、データ定義支援ソフト１０２は、作業目的に１対１に対応する複数の設定ファイル１０６を保存する。従って、データの定義時には、定義対象とするデータに応じて適当な設定ファイルを１つ選択して作業を行う。なお、設定ファイルに記述する合成規則は自由である。もっとも、あるマスタテーブルとの間に参照関係が存在する全てのマスタテーブルの集合体を、定義作業用のマスタテーブルの集合として自動的に設定することもできる。このような設定方法を用いても、多くの場合には、使い勝手の良い設定ファイルを作成することができる。
【００２９】
図３の説明に戻る。図３は、あるシステムの「作業者情報管理」機能に対応した設定ファイル３０１の例を示している。この設定ファイル３０１には、使用テーブルの設定情報、仮想テーブルの構成情報、表示属性の設定情報が記述される。
【００３０】
まず、使用テーブルの設定情報について説明する。使用テーブルの設定情報には、この設定ファイル３０１に対応するＭＥＳ機能を使う際に必要となるデータテーブル（すなわち、マスタテーブル）の情報が記述される。図３の場合、使用テーブルの設定情報とは、使用するマスタテーブルの数、使用するマスタテーブルの名前、各マスタテーブルをメインテーブルとして使用するか、サブテーブルとして使用するかの情報である。
【００３１】
図３の場合、２行目「TABLE_SU：３（テーブル数：３）」、３行目「MAIN：SAGYOUSHA（作業者テーブル）」、５行目「SUB：YAKUSHOKU（役職テーブル）」、９行目「SUB：SHOZOKU（所属テーブル）」が、ここでの設定情報に対応する。この設定情報より、必要なテーブルの数が３であり、メインテーブルとして作業者テーブル２０１を用い、サブテーブルとして役職テーブル２０２と所属テーブル２０３を用いることが分かる。
【００３２】
次に、仮想テーブルの構成情報について説明する。仮想テーブルの構成情報には、生成する仮想テーブルの構成を特定する情報が記述される。例えばサブテーブルのどの属性をメインテーブルに合成するか、合成する属性の数は幾つかが記述される。
【００３３】
図３の場合、６行目「GOUSEISU：１」、７行目「ZOKUSEI：YAKUSHOKU_MEI（属性：役職名）」、１０行目「GOUSEISU：２」、１１行目「ZOKUSEI：SHOZOKU_MEI（属性：所属名）」が、ここでの情報に対応する。
【００３４】
最後に、表示属性の設定情報について説明する。表示属性の設定情報は、作成した仮想テーブルのデータ表示に関する情報であり、定義支援サービス部１０５において参照される情報である。
【００３５】
図３の場合、４行目，８行目，１２行目の「HYOUZI:〜（表示：〜）」と書かれた部分が、ここでの設定情報に対応する。この設定情報の用い方については、定義支援サービス部１０５の説明時に詳細に説明する。
【００３６】
なお、形態例で使用するデータベースには以下に示すような制約があるものとする。データテーブルの各属性のうち、他のテーブルと関連する部分は、全てのテーブルについて同じであるものとする。例えば作業者テーブル２０１内で役職テーブル２０２を参照する属性名が「役職コード」である場合、参照先となる役職テーブル２０２内の該当属性名も「役職コード」であるものとする。一般のデータベースでは、必ずしもそうなっているわけではいないが、以下の説明では、データベースがこのルールに従って構成されているものとする。
【００３７】
（ｄ）仮想テーブルのデータ構造例
続いて、データ変換部１０４によって生成される仮想テーブルのデータ構造を説明する。仮想テーブルは、図４に示すように、テーブルオブジェクト４０１、レコードオブジェクト４０２、属性情報オブジェクト４０８、データオブジェクト４０４の４種類のオブジェクトを基本構成とする。
【００３８】
テーブルオブジェクト４０１は、そのメンバとして、レコードオブジェクトリスト４０６と属性情報オブジェクトリスト４０７を持つ。
レコードオブジェクト４０２は、そのメンバとして、データオブジェクトリスト４０３を持つ。
属性情報オブジェクト４０８は、そのメンバとして、文字列型の型コードと文字列型の属性名を持つ。
【００３９】
データオブジェクト４０４は、そのメンバとして、文字列型の属性名と属性値を持つ。ただし、属性値は、データオブジェクト４０４の属性名と同じ属性名を持つ属性情報オブジェクト４０８の型コードに記されているのと同じ型の属性値が与えられる。なお、データオブジェクト４０４は、条件を満たす場合、更にデータオブジェクトリスト４０９を持つ。ここでの条件とは、データオブジェクト４０４の属性名と同じ属性名を持つ属性情報オブジェクト４０８が「コンテナ型」であることである。この場合、データオブジェクト４０４は、データオブジェクトリスト４０９に結び付けたデータオブジェクト４０５を持つ。
【００４０】
最後に、仮想テーブルのデータ構造とデータテーブルとの対応関係を説明する。データテーブルを図２に示す表計算シートとして見る場合、テーブルオブジェクト４０１は、各データテーブルのシートそのものに対応する。また、属性情報オブジェクト４０８は、各データテーブルの１行目と２行目に位置する情報表示部２０４の各セルに対応する。また、レコードオブジェクト４０２は、各データテーブルの３行目以降の各行に対応し、データオブジェクト４０４は、各データテーブルのデータ部２０５を構成する各セルに対応する。
【００４１】
（ｅ）仮想テーブルの生成処理例
（ｅ−１）仮想メインテーブルの生成
次に、図５と図６を用い、データ変換部１０４がメインテーブルの仮想テーブル（以下、「仮想メインテーブル」という。）を生成する際に使用する処理手順を説明する。なお、図５は一連の処理手順のうちの前半部分であり、図６は一連の処理手順のうちの後半部分である。なお、以下の説明では、あるシステムの「作業者情報管理」の実行時に必要なデータ定義用の仮想テーブルを生成する場合を想定する。ただし、設定ファイル１０６に関連する各マスタテーブルには、図２に示すデータが既に入力されているものとする。
【００４２】
この仮想メインテーブルの生成処理は、設定ファイル１０６の選択入力を通じて開始される（ステップ５０１）。具体的には、不図示の操作画面上に、図９に示す機能選択画面９０１に対する選択入力を通じて開始される。機能選択画面９０１には、データ定義の候補としての機能が一覧的に表示される。
【００４３】
今回は、作業者が「作業者情報管理」の選択肢９０２を選択し、決定ボタン９０３を押下したものとする。データ変換部１０４はこのイベントを受け取ると、決定された選択肢に対応する設定ファイルを読み込む。この形態例では、「作業者情報管理」に対応する設定ファイルが、図３に示した設定ファイル３０１と同じであるものとする。すると、データ変換部１０４は、設定ファイル３０１から設定情報を取得する（ステップ５０２）。設定ファイル３０１の２行目には「TABLE_SU：３（テーブル数：３）」と書かれているので、データ変換部１０４は、３つのテーブルオブジェクトを生成する（ステップ５０３）。
【００４４】
その後、データ変換部１０４は、繰り返し処理に入り（ステップ５０４）、属性情報オブジェクトを１個生成する（ステップ５０５）。設定ファイル３０１にはメインテーブルが作業者テーブル２０１と記されているので、データ変換部１０４は、作業者テーブル２０１の先頭列から属性情報（属性名と型コード）を取得する（ステップ５０６）。図２の作業者テーブル２０１の場合、属性情報として、「作業者コード」と「文字列型」が記述されている。そこで、データ変換部１０４は、「作業者コード」と同じ属性名がサブテーブル内に存在するか否かを判定する（ステップ５０７）。すなわち、データ変換部１０４は、サブテーブルとして記述された役職テーブル２０２と所属テーブル２０３に、属性名「作業者コード」と同じ属性名があるか否かを判定する。なお、属性名の語尾に番号が付いている場合、データ変換部１０４は、その番号を削除した属性名を後続するステップに与える。
【００４５】
図２の役職テーブル２０２と所属テーブル２０３には、属性名「作業者コード」が存在しない。そこで、データ変換部１０４は、ステップ５０７の処理で否定結果を得る。この場合、データ変換部１０４は、属性情報オブジェクト４０８に、属性名「作業者コード」と型コード「文字列型」を追加する（ステップ５０９）。
【００４６】
その後、データ変換部１０４は、ステップ５０３で作られていたテーブルオブジェクト４０１の１つを仮想メインテーブルとして利用するものと決定し、その属性情報オブジェクトリスト４０７にステップ５０９で生成した属性情報オブジェクト４０８を登録する（ステップ５１０）。
【００４７】
その後、データ変換部１０４は、一連のループ処理（ステップ５０４〜ステップ５１０）を繰り返す。すなわち、データ変換部１０４は、属性情報オブジェクト４０８を生成して属性名と型コードを書き込むと共に、データ書き込み後の属性情報オブジェクト４０８を属性情報オブジェクトリストに登録する処理を繰り返す。
【００４８】
ただし、３回目のループ処理の場合（Ｎ＝３の場合）には、ループ処理の一部に変更が生じる。この場合は、作業者テーブル２０１の３列目から属性名「役職コード」が読み出される場合である。この「役職コード」は、図２の役職テーブル２０２にも存在する。従って、データ変換部１０４は、ステップ５０７の判定処理で肯定結果を得る。
【００４９】
この場合、データ変換部１０４は、属性情報オブジェクト４０８の型コードを「コンテナ型」、属性名を「役職１」とする（ステップ５０８）。なお、ここでの属性名は、サブテーブル名に番号を付した形式で生成される。番号には自然数が用いられる。既に同じサブテーブル名を付した属性名が登録されている場合には、処理時点で使用されている番号の最大値に１を加算した値を使用する。今回は、役職コードの出現が初めてであるので番号「１」を使用する。
【００５０】
４回目と５回目のループ処理の場合（Ｎ＝４，５の場合）、データ変換部１０４は、３回目のループ処理と同様の動作を実行する。すなわち、データ変換部１０４は、所属コード１に対応する属性情報オブジェクト４０８に型コード「コンテナ型」と属性名「所属１」を登録し、所属コード２に対応する属性情報オブジェクト４０８に型コード「コンテナ型」と属性名「所属２」を登録する。
【００５１】
データ変換部１０４は、これら一連のループ処理を、メインテーブル（すなわち、作業者テーブル２０１）の列数Ｎと同じ回数になるまで繰り返す。この後、データ変換部１０４は、作業者テーブル２０１の数と同数のレコードオブジェクト４０２を作成し（ステップ５１１）、テーブルオブジェクトのレコードオブジェクトリストに追加する（ステップ５１２）。ステップ５１２の段階までに完成した仮想メインテーブルの概念図を図７に示す。
【００５２】
続いて、データ変換部１０４は、再び繰り返し処理に入る（ステップ６０１、ステップ６０２）。なお、ステップ６０１の繰り返し処理は、作業者テーブル２０１のデータ部２０５を構成するＮ行分だけ実行される。また、ステップ６０２の繰り返し処理は、メインテーブルのデータ部２０５を構成するＭ列分だけ実行される。すなわち、この処理は、メインテーブルのデータ部２０５を構成する各セルのデータをデータオブジェクトに登録する処理に対応する。
【００５３】
まず、データ変換部１０４は、データオブジェクトを１個生成する（ステップ６０３）。次に、データ変換部１０４は、Ｎ番目の属性情報オブジェクトの属性名がコンテナ型か否かを判定する（ステップ６０４）。図７の例の場合、属性情報オブジェクトの１番目の属性名は「文字列型」である。従って、データ変換部１０４は否定結果を得、生成したデータオブジェクトの属性名に「文字列型」を入れる。また、データ変換部１０４は、生成したデータオブジェクトの属性値に、作業者テーブル２０１のデータ部の１行１列目の値「Ｓ００１」を入力する（ステップ６０５）。そして、データ変換部１０４は、作成したデータオブジェクト４０４を１番目のレコードオブジェクト４０２のデータオブジェクトリスト４０３に登録する（ステップ６０７）。
【００５４】
データ変換部１０４は、この一連の処理を繰り返し実行する。なお、Ｎ＝３の場合、データ変換部１０４は、図７の３番目の属性情報オブジェクト７０２を参照する。この属性情報オブジェクト７０２の属性名はコンテナ型である。従って、データ変換部１０４はステップ６０４で肯定結果を得、ステップ６０６のサブルーチンを実行する。
【００５５】
図８に、ステップ６０６のサブルーチンで実行される処理内容の詳細を示す。データ変換部１０４は、このサブルーチンの実行過程でデータオブジェクトを再び生成する。すなわち、データオブジェクト４０５を生成する。そこで、データオブジェクト同士を区別するため、データ変換部１０４は、既に作成してある他のデータオブジェクトの名前をデータオブジェクト１とする。また、データオブジェクト１に含まれるデータオブジェクトの中で、メインテーブルの属性名と属性値を入れるものをデータオブジェクト２とする。また、データオブジェクト１に含まれるデータオブジェクトの中で、設定ファイル３０１でメインテーブルに付加するように記述されているサブテーブルの属性名と属性値を入れるデータオブジェクトをデータオブジェクト３とする。
【００５６】
図１０に、データオブジェクト１、２及び３の関係を示す。なお、図１０の場合には、データオブジェクト３が１つであるが、その数は設定ファイル３０１の設定により変わり得る。
【００５７】
引き続き、ステップ６０６のサブルーチン処理の内容を説明する。まず、データ変換部１０４は、処理対象とするデータオブジェクト１の属性名に、仮想メインテーブル７０１の３列目（Ｎ＝３のため）の属性情報オブジェクト７０２の属性名「役職１」を入れる（ステップ８０１）。次に、データ変換部１０４は、属性情報オブジェクト７０２の属性名「役職１」からテーブル名「役職」を取得する（ステップ８０２）。
【００５８】
続いて、データ変換部１０４は、データオブジェクト２を新規に生成する（ステップ８０３）。ここで、データ変換部１０４は、データオブジェクト２の属性名に、作業者テーブル２０１の３列目の属性名である「役職コード」を入力し、属性値に作業者テーブル２０１におけるデータ部２０５の１行３列目のデータである「Ｙ００１」を入力する（ステップ８０４）。
【００５９】
続いて、データ変換部１０４は、図１０に示すように、作成したデータオブジェクト２（すなわち、１００２）を、データオブジェクト１（すなわち、１００１）のデータオブジェクトリスト１０００に登録する（ステップ８０５）。
【００６０】
次に、データ変換部１０４は、ステップ８０２で名前を取得したサブテーブルを参照し、設定ファイルで追加するように指定された属性の数と同じだけデータオブジェクト３を生成する。この例の場合、ステップ８０２で取得したサブテーブルの名前は「役職」であり、設定ファイル３０１の７行目（図３）に記されているように、追加する役職テーブルの属性は「役職名」のみである。従って、この例におけるデータ変換部１０４は、データオブジェクト３を１つだけ作成する（ステップ８０６）。
【００６１】
更に、データ変換部１０４は、ステップ８０２で名前を取得したサブテーブルを参照し、データオブジェクト２の属性名と属性値に一致する行を選択する（ステップ８０７）。この選択された行内より、データ変換部１０４は、設定ファイル３０１で追加するように指定された属性と同じ属性を有する行を選び出し、その属性名と属性値を取得する（ステップ８０７）。そして、取得した属性名と属性値を新規に生成したデータオブジェクト３に登録する（ステップ８０７）。なお、データオブジェクト３が複数ある場合には、それら全てについて同様の処理を実行する。
【００６２】
この例の場合、ステップ８０２で取得したサブテーブルの名前は「役職」である。また、データオブジェクト２の属性名は「役職コード」であり、属性値は「Ｙ００１」である。従って、データ変換部１０４は役職テーブル２０２を探索する。この例の場合、役職テーブル２０２を構成するデータ部の１行１列目のセルが属性名と属性値の条件を満たす。従って、データ変換部１０４は、役職テーブル２０２におけるデータ部の１行目を選択する。この１行目のうち設定ファイル３０１で追加されるよう指定されている属性は、図３の７行目に記したように「役職名」である。
【００６３】
そこで、データ変換部１０４は、役職テーブル２０２におけるデータ部の１行目より役職名「工場長」を取得する。すなわち、データ変換部１０４は、データオブジェクト３の属性名に「役職名」を入力し、属性値に「工場長」を入力する。追加する属性が他にない場合、ステップ８０７の処理は以上により終了する。もっとも、追加すべき属性が他にもある場合、データ変換部１０４は、前述処理の繰り返しによりデータオブジェクト３を生成し、生成した順番にテンポラリリストに保存する。
【００６４】
最後に、データ変換部１０４は、図１０に示すように、生成したデータオブジェクト３（すなわち、１００３）を作成順にデータオブジェクト１（すなわち、１００１）のデータオブジェクトリスト１０００に追加する（ステップ８０８）。図１０は、ステップ８０１〜ステップ８０８の処理により完成するデータオブジェクトを示している。
【００６５】
このように、属性名が「役職１」、属性値が「ＮＵＬＬ」のデータオブジェクトを持つデータオブジェクトリスト１０００に、属性名「役職コード」・属性値「Ｙ００１」のデータオブジェクト２と属性名「役職名」・属性値「工場長」のデータオブジェクト３が登録される。
【００６６】
前述したサブルーチンの処理ステップ６０６が終了すると、データ変換部１０４は、ステップ６０７の処理に進む。この例の場合、データ変換部１０４は、１番目のレコードオブジェクトのデータオブジェクトリストにデータオブジェクトを追加する（ステップ６０７）。データ変換部１０４は、これ以降も同様の処理を繰り返す。すなわち、作業者テーブル２０１のデータ部の１行目２列目、１行目３列目、…４行目５列目について、ステップ６０１〜ステップ６０７の処理を繰り返し実行する。
そして、全ての処理を抜けた時点で、データ変換部１０４は、仮想メインテーブルの生成を完成する（ステップ６０８）。
【００６７】
図１１に、仮想メインテーブルの概念図を示す。なお、この形態例は作業者テーブル２０１をメインテーブルとして仮想メインテーブルを作成するので、図１１では完成したテーブルを仮想作業者テーブルと表している。図１１は、図７に示す生成途中の仮想メインテーブルにデータ部が追加されたデータ構造になっていることが分かる。なお、図１１の場合、図１０に示すようにデータオブジェクト２及び３を含むデータオブジェクト１の中身については、１番目（すなわち、データ部の１行目）のレコードオブジェクト以外については省略して表している。勿論、２番目以降のレコードオブジェクトについても同様である。
【００６８】
（ｅ−２）仮想サブテーブルの生成
仮想メインテーブルの生成が終了すると、サブテーブルについても仮想テーブル（すなわち、仮想サブテーブル）を生成する。作成するのは、設定ファイル３０１で追加するように指定されたサブテーブルである。この形態例の場合、役職テーブルと所属テーブルについて仮想テーブルを生成する。
【００６９】
なお、仮想サブテーブルの生成時には、図５及び図６に示す処理手順に現れる「メイン」の用語の全てを「サブ」に置き換えた上で、分岐ステップ５０１→５０２→５０３→５０４→５０５→５０６→５０９→５１０→５１１→５１２→６０１→６０２→６０３→６０５→６０７という分岐のない処理手順を実行すれば良い。
【００７０】
なお、テーブルオブジェクトにはステップ５０３で生成したものを利用する。この手順どおりに行うことで、サブテーブルに対応する仮想テーブルを作成することができる。図１２に、役職テーブルと所属テーブルに対応する仮想サブテーブルの概念図を示す。
【００７１】
（ｆ）データ定義用のユーザインタフェース画面
ここでは、図１３に基づいてデータ定義時にユーザが使用するユーザインタフェース画面例について説明する。以下では、データ定義用のユーザインタフェース画面を、データ定義ウインドウ１３０８という。
【００７２】
データ定義ウインドウ１３０８は、前述したように、設定ファイル３０１の設定に基づいて生成される。図１３に示すデータ定義ウインドウ１３０８の場合、仮想テーブルの１つ１つに対応してタブ１３０１、１３０２が用意される。勿論、図１３は、作業者テーブル２０１をメインテーブルとし、役職テーブル２０２と所属テーブル２０３をサブテーブルとした場合を示している。すなわち、図１１に示す仮想作業者テーブルのデータ定義に使用するユーザインタフェース画面を示している。この例の場合、仮想メインテーブルに対応するタブ１３０１は一番左に表示され、それ以外のタブはその右側に並んで表示される。
【００７３】
データ定義ウインドウ１３０８の各タブシートには、リスト１３０５とプロパティ表示部１３０７とが配置される。リスト１３０５には、対応する仮想テーブルを構成する各属性のうち代表的な表示属性が表示項目として表示される。この表示項目の選択により、対応する仮想テーブル内のレコードオブジェクトを選択することができる。図１３では、作業者テーブル２０１のうち作業者名を代表として表示している。一方、プロパティ表示部１３０７には、リスト１３０５で選択したレコードオブジェクトに含まれる各データオブジェクトのデータが表示される。表示方法についての詳細は後述する。
【００７４】
また、データ定義ウインドウ１３０８には、削除ボタン１３０３と設定ボタン１３０４も表示される。削除ボタン１３０３は、リスト１３０５の中から特定項目を選択した状態で当該ボタンに対する確定操作が発生した場合に、選択されている項目（レコードオブジェクト）を削除するのに用いられる。これにより、レコードを削除することができる。
【００７５】
一方、設定ボタン１３０４は、リスト１３０５で選択された特定項目についてプロパティ表示部１３０７に表示されるデータの変更を仮想テーブルに反映させるのに用いられる。すなわち、設定ボタン１３０４は、当該ボタンに対する確定操作が発生した場合に、プロパティ表示部１３０７に表示されているデータを仮想テーブルに書き込む動作を実行する。なお、この動作は、後述する図１６のステップ１６０９の動作に対応する。
【００７６】
また、リスト１３０５には、表示項目の最下行に新規項目の生成用に空の選択部分１３０６が表示される。この選択部分１３０６の選択時には、プロパティ表示部１３０７として全ての属性が空欄の画面が表示される。ユーザは、空欄へのデータ入力後に設定ボタン１３０４の操作入力を行うことにより、仮想テーブルに新規レコードを生成することができる。
【００７７】
図１４に、仮想サブテーブルの表示例を示す。前述したように、仮想サブテーブルに対応するデータ定義ウインドウは、仮想メインテーブルに対応するタブとは別のタブ１４０１に対応して表示される。この仮想サブテーブルについて、リスト１４０２とプロパティ表示部１４０３とが表示される。データ入力等に関する定義支援サービス部１０５の働きについては後述する。
【００７８】
（ｇ）定義支援サービス部の処理内容
（ｇ−１）データ定義ウインドウの生成処理
続いて、定義支援サービス部１０５によるデータ定義ウインドウ１３０８の生成手順を説明する。
【００７９】
図１５に、仮想メインテーブルに対応するデータ定義ウインドウ１３０８を作成する場合における定義支援サービス部１０５の処理手順例を示す。
【００８０】
まず、定義支援サービス部１０５は、設定ファイル３０１の表示属性部分を読み込む（ステップ１５０１）。図３の場合、４行目の「HYOUZI：SAGYOUSHA_MEI（表示：作業者名）」が該当部分である。一方、仮想作業者テーブル１１０１のうち属性名が作業者名であるデータオブジェクトの属性値は、「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＷＷＷ」の４つである。
従って、定義支援サービス部１０５は、図１３に示すようにリスト１３０５にこれら４つの値を表示する（ステップ１５０２）。
【００８１】
続いて、定義支援サービス部１０５は、仮想作業者テーブルの任意のレコードオブジェクトを参照し、その下位にある全てのデータオブジェクトの中で他のデータオブジェクトをデータオブジェクトリストにもたないものの個数を取得する。図１１におけるデータ部の１行目の場合、破線１１０２で囲んで示す２個のデータオブジェクトと破線１１０３で囲んで示す６個のデータオブジェクトの計８個である（ステップ１５０３）。
【００８２】
この結果より、定義支援サービス部１０５は、データ定義ウインドウ１３０８のプロパティ表示部を８行２列で表示する（ステップ１５０４）。
【００８３】
続いて、定義支援サービス部１０５は、繰り返し処理に入る（ステップ１５０５）。まず、定義支援サービス部１０５は、属性情報オブジェクトリストの１番目に登録されている属性情報オブジェクトの型コード「文字列型」と属性名「作業者コード」を取得する（ステップ１５０６）。そして、定義支援サービス部１０５は、取得した型コードがコンテナ型か否かを判定する（ステップ１５０７）。
【００８４】
この例の場合、型コードはコンテナ型ではない。従って、定義支援サービス部１０５は、プロパティ表示部の１列目に属性名「作業者コード」を表示する（ステップ１５０８）。
【００８５】
なお、Ｍ＝３の場合、定義支援サービス部１０５は、ステップ１５０６において型コード「コンテナ型」と属性名「役職１」を取得する。今回は、型コードがコンテナ型である。定義支援サービス部１０５は、属性名が同じ「役職１」であるデータオブジェクトのデータオブジェクトリストに含まれるデータオブジェクトの属性名を取得する。なお、データオブジェクトは、どのレコードオブジェクトに含まれるものでも良い。どのレコードオブジェクトに含まれたとしても、データオブジェクトは同じだからである。
【００８６】
この場合は、図１１からも分かるように、「役職コード」と「役職名」である。なお、プロパティ表示部１３０７の１列目に表示する際には、参照した属性情報オブジェクトの属性名が「役職１」であったことを示す「１」を付け加え、「役職コード１」と「役職名１」とする（ステップ１５０９）。
【００８７】
以降も同様に、Ｍ＝８になるまで同様の処理を実行する。この手順により作成されたのが、図１３に示す仮想作業者テーブル用のデータ定義ウインドウ１３０８である。データ定義ウインドウ１３０８のリスト１３０５とプロパティ表示部１３０７の表示画面はこのように生成される。
【００８８】
続いて仮想サブテーブルに対応するデータ定義ウインドウ１３０８の表示画面を生成する場合の処理手順を説明する。仮想サブテーブルの表示時に定義支援サービス部１０５が実行する処理手順の流れは、図１５とほぼ同じである。具体的には、ステップ１５０１→１５０２→１５０３→１５０４→１５０５→１５０６→１５０８と分岐のない流れになる。
【００８９】
なお、この場合、定義支援サービス部１０５は、それぞれ対応する仮想サブテーブルの名称を記載したタブをデータ定義ウインドウ１３０８に新たに追加し、そのタブで表示される画面の中にリスト１３０５とプロパティ表示部１３０７を生成する。この処理を経て完成した仮想役職テーブルのデータ定義ウインドウ１３０８が図１４の図である。
【００９０】
（ｇ−２）データ定義ウインドウを用いたデータ定義時の処理
（ｉ）データ定義の新規入力
続いて、データ定義ウインドウ１３０８を用いた仮想テーブルへのデータ定義の入力時に実行される処理手順を説明する。
図１６に、データ定義ウインドウ１３０８を通じて入力のあったデータを仮想テーブルに反映させる場合における定義支援サービス部１０５の処理手順例を示す。
【００９１】
ここでは、仮想作業者テーブルに対して作業者に関するデータを新規に入力する場合を想定する。具体的には、作業者コード「Ｓ００５」、作業者名「ＡＡＡ」、役職コード「Ｙ００４」、役職名「班長」、所属コード１「Ｂ００１」、所属名１「製造１課」を入力する場合を想定する。
【００９２】
まず、定義支援サービス部１０５は、データ定義ウインドウ１３０８のリスト１３０５についてユーザが選択した項目を取り込む（ステップ１６０１）。取得された項目が特定されると、定義支援サービス部１０５は、選択項目にレコードを代表する属性があるか否かを判定する（ステップ１６０２）。ここでは、新規データの入力を想定するので、代表属性がない空の選択部分１３０６が選択されている。従って、定義支援サービス部１０５は、否定結果を得、属性値を入力する箇所が空白のプロパティ表示部１３０７を表示する（ステップ１６０３）。
【００９３】
前述したように、プロパティ表示部１３０７には、ユーザにより属性値が入力される。図１７に、属性値を入力したプロパティ表示部１３０７の画面例を示す。図１７に示す状態まで入力が進みユーザが設定ボタン１３０４を確定操作することで入力が確定する（ステップ１６０４）。
【００９４】
この後、定義支援サービス部１０５は、既存のレコードオブジェクトを登録されている全てのデータオブジェクトごとコピーして、テーブルオブジェクトのレコードオブジェクトリストに追加する（ステップ１６０５）。例えば図１１におけるレコードオブジェクトの１つを、図１９に示すようにテーブルの最終行にコピーする。図１９に、コピー後の仮想メインテーブルを示す。レコードオブジェクト１９０１が新たに追加したレコードオブジェクトである。ただし、コピーしただけの時点では、その属性値はコピー元と同一である。
【００９５】
そこで、定義支援サービス部１０５は、プロパティ表示部１７０１の属性名と、参照している新規に作成したレコードオブジェクト１９０１内のデータオブジェクトの属性名とを照合し、同じ属性名を有するデータオブジェクトの属性値に、プロパティ表示部１７０１に入力された属性値を入力する（ステップ１６０９）。
【００９６】
例えば図１７の場合、プロパティ表示部１７０１の表示属性が「作業者コード」である行１７０２のデータ「Ｓ００５」を、同じ属性名を有するデータオブジェクト１９０５の属性値に入力する。この処理が、プロパティ表示部１７０１に表示された全ての属性について繰り返し実行される。この時点で、仮想メインテーブルへの新規入力処理が完了する。
【００９７】
図１９は、このコピー後の修正処理を経て完成した仮想メインテーブルの概念図である。図１１と比べると、一番下のラインオブジェクトに新規データが入力されていることが分かる。
【００９８】
次に、定義支援サービス部１０５は、ステップ１６１０のサブルーチンに移る。このサブルーチンは、仮想メインテーブル１９０４に入力したデータに、仮想メインテーブル１９０４の合成時に使用したサブテーブルの属性が含まれており、しかもそれが新規である場合に仮想サブテーブルにその入力内容を反映させるための処理である。
【００９９】
図１８に、ステップ１６１０に対応する詳細な処理手順を示す。この例の場合、新規入力データのうち行１７０３の役職コード１「Ｙ００４」と役職名１「班長」が、仮想役職テーブル１２０１に入っていない新規なデータに当たる。従って、これらのデータがステップ１６１０の処理を通じて仮想サブテーブルに反映される。
【０１００】
まず、定義支援サービス部１０５は、繰り返し処理に入り（ステップ１８０１）、参照したレコードオブジェクト１９０１の中で、型コードが「コンテナ型」である属性情報オブジェクトと同一の属性名を持つデータオブジェクトを参照する（ステップ１８０２）。この例の場合、図１９のデータオブジェクト１９０２が対応する。
【０１０１】
次に、定義支援サービス部１０５は、参照したデータオブジェクトの属性名「役職１」からサブテーブル名「役職」を取得する（ステップ１８０３）。
この後、定義支援サービス部１０５は、参照しているデータオブジェクト１９０２のデータオブジェクトリストに含まれる全てのデータオブジェクトについて、属性名と属性値の組を取得する（ステップ１８０４）。図１９の例では、２つのデータオブジェクト１９０３がこれに該当する。すなわち、「役職コード：Ｙ００４」と「役職名：班長」とを取得する。
【０１０２】
その後、定義支援サービス部１０５は、更に繰り返し処理に入り（ステップ１８０５）、取得したサブテーブル名である役職テーブルに対応する仮想テーブルである仮想役職テーブル１２０１の１番目のレコードオブジェクト１２０３を参照する（ステップ１８０６）。次に、定義支援サービス部１０５は、取得した属性名と属性値と同じ組み合わせの属性名と属性値を持つデータオブジェクトが全ての組について存在するか判定する（ステップ１８０７）。
【０１０３】
この例の場合、ステップ１８０４で取得した属性名と属性値の組み合わせは「役職コード：Ｙ００４」、「役職名：班長」であるが、この組み合わせと同じ属性名と属性値を持つデータオブジェクトはレコードオブジェクト１２０３にどちらも存在しない。従って、定義支援サービス部１０５は、ステップ１８０７において否定結果を得る。なお、ステップ１８０５のループ処理において、仮想サブテーブルのレコードオブジェクトを順に見ていっても、同じ属性名と属性値の組み合わせを持つデータオブジェクトは存在しないので、定義支援サービス部１０５は、ステップ１８０８に進む。
【０１０４】
ステップ１８０８に進んだ定義支援サービス部１０５は、仮想役職テーブル１２０１において既存のレコードオブジェクト（任意）を下位にある全データオブジェクトごとコピーし、テーブルオブジェクトのレコードオブジェクトリストに追加する。すなわち、図１２の仮想役職テーブルのレコードオブジェクトの１つを最終行にコピーする。図２１の行２１０２は、このコピーにより追加された行を表している。
【０１０５】
ただし、コピー直後の属性値はコピー元と同一である。ここで、ステップ１８０４で取得した属性名と属性値の組み合わせは「役職コード：Ｙ００４」、「役職名：班長」である。従って、定義支援サービス部１０５は、コピーされたレコードオブジェクトの中で、属性名が「役職コード」であるデータオブジェクトの属性値を「Ｙ００４」に、属性名が「役職名」であるデータオブジェクトの属性値を「班長」とする。そして、定義支援サービス部１０５は、それ以外の属性名を持つデータオブジェクトの属性値はＮＵＬＬとする（ステップ１８０９）。
【０１０６】
この後、定義支援サービス部１０５は、属性情報オブジェクトの型コードが「コンテナ型」であるものの属性名と同じ属性名を持つデータオブジェクトに対して同様の処理を繰り返し実行する。なお、Ｍ＝２の場合、ステップ１８０４で取得する属性名と属性値の組み合わせは「所属コード：Ｂ０１１」と「所属名：製造１課」の２組である。この場合、対応する仮想所属テーブル１２０２には、これらと同じ属性名と属性値の組み合わせを有するデータオブジェクトが２つとも存在していることが、仮想所属テーブル１２０２のレコードオブジェクト１２０４から分かる。そのため、定義支援サービス部１０５は、ステップ１８０７でループ処理を抜け、仮想サブテーブルへの新規レコードオブジェクトの追加は行わない。
【０１０７】
このようにして、定義支援サービス部１０５は、新規入力した項目のみが入った仮の仮想サブテーブルレコード２１０２を生成する。なお、主キーが入っていないレコードが生成された場合には、新規入力レコードが入力未完了であることを知らせるため、図１４のリスト１４０２において、色分けなどをして区別する。最終的にユーザがその仮想サブテーブルの主キーの入力を終えることでデータ定義に関する処理が終了する。
【０１０８】
ただし、以上は仮想メインテーブルと合成したサブテーブルの属性が主キーを持たない不十分なものである場合にのみ必要になる処理である。すなわち、必須属性を全てメインテーブルに合成していた場合には行う必要なく、仮想メインテーブルへの入力だけでまとめて定義を行うことができる。
【０１０９】
（ii）データ定義の変更入力
ここまで、新規データを入力する場合の処理手続きについて説明したが、以下では、既存のデータを変更する場合について説明する。
【０１１０】
この形態例では、仮想作業者テーブル１１０１の１番目のレコード１１０４を変更したい場合を想定する。この場合の処理の流れも図１６に従う。まず、ユーザによって、データ定義ウインドウ１３０８のリスト１３０５内の１番目のレコードの代表属性を表す１３０９が選択される（ステップ１６０１）。
【０１１１】
この場合、図１６のステップ１６０２では肯定結果が得られる。この場合、定義支援サービス部１０５は、仮想作業者テーブル１１０１の１番目のレコード１１０４の中身を図２３のように表示する（ステップ１６０６）。
【０１１２】
この表示画面において、ユーザが変更したい項目を選び、データ変更を行った上で設定ボタン１３０４を操作入力すると、定義支援サービス部１０５は、その操作入力を受け付ける（ステップ１６０７）。
【０１１３】
次に、定義支援サービス部１０５は、リスト１３０５で選択されているレコードと同じ順番でレコードオブジェクトリストに登録されているレコードオブジェクト、すなわち図１１の１番目のレコードオブジェクト１１０４を参照する（ステップ１６０８）。
【０１１４】
続いて、定義支援サービス部１０５は、ステップ１６０９の処理に移る。ステップ１６０９とステップ１６１０の処理は、前述した内容と全く同じである。すなわち、変更した箇所の属性名が仮想サブテーブルの属性名と同じで、それが新規の場合には、仮想サブテーブルへデータに入力内容が反映され、仮想サブテーブル内のその他の属性データの入力をユーザが行うことになる。
【０１１５】
（ｇ−３）元のマスタテーブルに入力されたデータ定義を反映する処理
最後に、仮想テーブルに対して行われたデータ定義を、仮想テーブルの生成に使用した元のマスタテーブルに反映する処理機能について説明する。この処理機能も、定義支援サービス部１０５が実行する。
【０１１６】
図２０に、仮想メインテーブルのデータをメインテーブルに戻す場合における定義支援サービス部１０５の処理手順例を示す。ここでは、図１９に示す仮想作業者テーブル１９０４のデータを元の作業者テーブル２０１に戻す場合を考える。
【０１１７】
まず、定義支援サービス部１０５は繰り返し処理に入り（ステップ２００１）、仮想メインテーブル１９０４の１番目のレコードオブジェクト１９０６を参照する（ステップ２００２）。次に、定義支援サービス部１０５は、もう一つの繰り返し処理に入り（ステップ２００３）、レコードオブジェクト１９０６が有するデータオブジェクトリストの１番目のデータオブジェクト１９０７を参照する（ステップ２００４）。
【０１１８】
ここで、定義支援サービス部１０５は、参照しているデータオブジェクトの属性名と同じ属性名を持つ属性情報オブジェクトの属性情報がコンテナ型か否かを判定する（ステップ２００５）。この例の場合、参照しているデータオブジェクト１９０７の属性名は「作業者コード」であり、それと同じ属性名を持つ属性情報オブジェクトの型コードは「文字列型」である。
【０１１９】
従って、定義支援サービス部１０５は、ステップ２００５の判定処理で否定結果を得、メインテーブルである作業者テーブル２０１の１行目１番目のセルの値を、参照しているデータオブジェクト１９０７の属性値である「Ｓ００１」に変更する（ステップ２００７）。
【０１２０】
なお、Ｎ＝３の場合、参照しているデータオブジェクト１９０８の属性名は「役職１」であり、それと同じ属性名を持つ属性情報オブジェクトの型コードは「コンテナ型」である。
【０１２１】
この場合、定義支援サービス部１０５は、ステップ２００５の判定処理で肯定結果を得、参照しているデータオブジェクト１９０８の持つデータオブジェクトリスト内のデータオブジェクト１９０９を参照する（ステップ２００６）。なお、役職テーブル２０２の主キーが役職コードのみであると考える。
【０１２２】
次に、定義支援サービス部１０５は、メインテーブルの表計算シート１行目でこのフロー内の処理で入力したものの次にくるセルの値を、参照しているデータオブジェクト１９０９の属性値である「Ｙ００１」とする（ステップ２００７）。
この後、一連の処理が繰り返し実行される。これにより、全データを仮想メインテーブルから表計算シート（すなわち、マスタテーブル）に戻すことができる。
【０１２３】
続いて、仮想サブテーブルのデータをサブテーブルに戻す場合における定義支援サービス部１０５の処理手順を説明する。もっとも、定義支援サービス部１０５において実行される処理手順は、図２０とほぼ同じである。具体的には、図２０における「メイン」の用語を全て「サブ」に置き換えたステップ２００１→２００２→２００３→２００４→２００７と分岐のない流れになる。
【０１２４】
（ｈ）まとめ
以上説明したように、形態例に係るデータ定義支援システムの場合には、複数のマスタテーブルに属する属性のうち関連性が高い属性を合成して仮想テーブルを生成する。
【０１２５】
この後、形態例に係るデータ定義支援システムは、この仮想テーブルに対応するユーザインタフェース画面を生成し、これをユーザの作業画面として提示する。例えば関数とパラメータが別々のマスタテーブルとして管理される場合でも、ユーザには、関数とパラメータの両方を属性に含む作業画面を提示する。この作業画面が提示されることにより、ユーザは、互いに関連性の高い関数とパラメータの全ての関係を同じ作業画面内で確認しながらデータの定義作業を進めることができる。
【０１２６】
因みに、特許文献１に開示された従来方式の場合には、データの定義作業はマスタテーブル単位でしか実行することができず、１つのパラメータから見た関数の関係しか理解することができない。一方、この形態例に係るデータ定義支援システムの場合には、関数と関連する複数のパラメータを画面上で確認しながらデータの定義作業を進めることができる。
【０１２７】
また、この形態例に係るデータ定義支援システムの場合には、関連するデータの定義作業を一度にまとめて行うことができる。一方、特許文献１の場合には、複数のマスタテーブルについて参照関係を考えながらデータの定義を行う必要がある。しかし、リレーショナルデータベース上におけるデータの参照関係を熟知しないユーザ（例えば現場作業者）にとってこのような作業の負担は大きく、データの定義漏れが発生する可能性もある。この点で、この形態例に係るデータ定義支援システムは従来方式に比して優れている。
【０１２８】
また、データの定義作業を、配管系装線図等の必要な情報が網羅的に記載された仕様書等を確認しながら行う場合にも、この形態例に係るユーザインタフェース画面を用いる方法は、同じ画面内で登録したい全てのデータを入力できる。このように形態例に係るユーザインタフェース画面を用いる方法は、実際の入力作業との整合性が高く、ユーザにとっての使い勝手の向上が期待できる。
【０１２９】
なお、この形態例に係るデータ定義支援システムでは、ユーザインタフェース画面に対する入力結果を、ユーザインタフェース画面に関連する単数又は複数の仮想テーブルに自動的に反映することができる。しかも、更新された仮想テーブルの各データは、形態例に係るデータ定義支援システムにより、仮想テーブルの合成に使用したマスタテーブルの対応するデータに反映される。
【０１３０】
このように、この形態例に係るデータ定義支援システムの場合には、ユーザにマスタテーブルの構造を意識させることなく、データの定義に必要な作業を過不足なく実行することができる。また、定義結果を関係する複数のマスタテーブルに反映させることができる。
【０１３１】
（２）形態例２
続いて、データ定義支援システムの２つ目の形態例について説明する。
形態例１の場合には、図３の設定ファイル３０１に記述された合成数が、合成元であるメインテーブル内にある他のテーブルと結びつく属性の数と同じ場合について説明した。
【０１３２】
例えば設定ファイル３０１の６行目の合成数１に対して、役職テーブルと結び付く属性「役職コード」は作業者テーブル内に１つである。また例えば、設定ファイル３０１の１０行目の合成数２に対して、所属テーブルと結び付く属性「所属コード」は、作業者テーブル内に「所属コード１」と「所属コード２」の２つである。いずれの場合も、合成数は、メインテーブル内の属性数と一致している。
【０１３３】
しかし、あるマスタテーブルの１つのレコードに対して任意の数の別マスタテーブルのレコードが結びつく場合も考えられる。例えばメインテーブルの１つの関数テーブルの属性に対して、サブテーブルとしてのＮ個のパラメータテーブルのレコードが結びつく場合が考えられる。
【０１３４】
この場合は、図５のステップ５０４のループを抜けるまでは同様の処理を行い、その後に、以下のステップを追加すれば良い。
＜ステップ１＞
設定ファイル内で記述されたサブテーブルの合成数と、作成した属性情報オブジェクトの中で、前記サブテーブルの名称＋番号を持つ属性情報オブジェクトの数を比べる。
【０１３５】
＜ステップ２＞
もし合成数の方が多い場合は、「該当するサブテーブルの名称＋番号」を属性名として持つ属性情報オブジェクトを合成数と同じになるようにコピーし、連続した番号になるように属性名の番号を変える。合成数と等しい場合や少ない場合は、図５のステップ５１１に進む。
【０１３６】
＜ステップ３＞
サブテーブルの名称＋番号を持つ属性情報オブジェクトが、番号順に隣接して並ぶように、属性情報オブジェクトリストで順番を並び替える。
【０１３７】
＜ステップ４＞
この後、再び図５のステップ５１１に進み、ステップ５１１以降の処理を実行する。
【０１３８】
例として、設定ファイル３０１の６行目の合成数が３の場合を考える。この場合、データ変換部１０４は、図５に示す仮想テーブルの生成過程を経て、図７に示すような生成途中の仮想メインテーブル７０１を生成する。
【０１３９】
前述したように、設定ファイル３０１の６行目の合成数が３であり、「役職＋番号」を持った属性情報オブジェクトの数は、符号７０２から分かるように、１つである（ステップ１）。
【０１４０】
そこで、データ変換部１０４は、合成数と等しくなるように残り２つの属性名として「役職１」を持つ属性情報オブジェクトを２つコピーし、連続した番号になるように名称の番号を変える。すなわち、属性名を「役職２」、「役職３」とする（ステップ２）。
【０１４１】
この後、データ変換部１０４は、生成を終えた２つの属性情報オブジェクトを番号順に隣接して並ぶように、属性情報オブジェクトリストで順番を並び替える（ステップ３）。
この後、再びステップ５１１から続きの処理を実行する（ステップ４）。
【０１４２】
図２２に、ステップ３の処理過程を示す。属性名として「役職１」を持つ属性情報オブジェクトをコピーし、属性名の番号を２，３とした属性情報オブジェクト２２０１を、図の矢印で示した位置に挿入する。
【０１４３】
データを戻すときは、図２０のステップ２００５とステップ２００６の間に、以下のステップを挿入する。
＜ステップ＞
属性情報オブジェクトの属性名「テーブル名称＋番号」を参照し、その番号が、そのテーブル名称に対応するサブテーブルと結びつけるためのメインテーブルの属性の塊の数より多い場合には、ステップ２００３の次のループに移る。
これ以外の全ての処理の処理手順は、変更の必要がない。
【符号の説明】
【０１４４】
１０１…コンピュータ
１０２…データ定義支援ソフト
１０３…表計算シート
１０４…データ変換部
１０５…定義支援サービス部
１０６…設定ファイル
１０７…仮想テーブル
１０８…入力画面
１０９…マウス
１１０…キーボード
１１１…ユーザ
２０１…作業者テーブル
２０２…役職テーブル
２０３…所属テーブル
２０４…テーブルの情報表示部
２０５…テーブルのデータ部
３０１…設定ファイル
４０１…テーブルオブジェクト
４０２…レコードオブジェクト
４０３…データオブジェクトリスト
４０４…データオブジェクト
４０５…データオブジェクト
４０６…レコードオブジェクトリスト
４０７…属性情報オブジェクトリスト
４０８…属性情報オブジェクト
４０９…データオブジェクトリスト
７０１…仮想メインテーブル
７０２…属性情報オブジェクト
９０１…機能選択画面
９０２…選択肢
９０３…決定ボタン
１０００…データオブジェクトリスト
１００１…データオブジェクト１
１００２…データオブジェクト２
１００３…データオブジェクト３
１１０１…仮想作業者テーブル
１１０２…２個のデータオブジェクト
１１０３…６個のデータオブジェクト
１２０１…仮想役職テーブル
１２０２…仮想所属テーブル
１２０３…１番目のレコードオブジェクト
１２０４…１番目のレコードオブジェクト
１３０１…仮想メインテーブルに対応するタブ
１３０２…仮想サブテーブルに対応するタブ
１３０３…削除ボタン
１３０４…設定ボタン
１３０５…リスト
１３０６…空の選択部分
１３０７…プロパティ表示部
１３０８…データ定義ウインドウ
１４０１…仮想役職テーブルに対応するタブ
１４０２…リスト
１４０３…プロパティ表示部
１７０１…プロパティ表示部
１７０２…表示属性が「作業者コード」である行
１７０３…表示属性が「役職コード１」である行と「役職名１」である行
１９０１…新規追加されたレコードオブジェクト
１９０２…新規追加されたレコードオブジェクト内のデータオブジェクト
１９０３…２個のデータオブジェクト
１９０４…仮想作業者テーブル
１９０５…属性名が「作業者コード」のデータオブジェクト
１９０６…１番目のレコードオブジェクト
１９０７…１９０６が持つデータオブジェクトリストの１番目のデータオブジェクト
１９０８…ステップ２００４で参照しているデータオブジェクト
１９０９…１９０８が持つデータオブジェクトリスト内のデータオブジェクト
２１０１…仮想役職テーブル
２１０２…新規入力した項目のみが入った仮の仮想サブテーブルレコード
【図１】
2010191628.tif 000003
【図２】
2010191628.tif 000004
【図３】
2010191628.tif 000005
【図４】
2010191628.tif 000006
【図５】
2010191628.tif 000007
【図６】
2010191628.tif 000008
【図７】
2010191628.tif 000009
【図８】
2010191628.tif 000010
【図９】
2010191628.tif 000011
【図１０】
2010191628.tif 000012
【図１１】
2010191628.tif 000013
【図１２】
2010191628.tif 000014
【図１３】
2010191628.tif 000015
【図１４】
2010191628.tif 000016
【図１５】
2010191628.tif 000017
【図１６】
2010191628.tif 000018
【図１７】
2010191628.tif 000019
【図１８】
2010191628.tif 000020
【図１９】
2010191628.tif 000021
【図２０】
2010191628.tif 000022
【図２１】
2010191628.tif 000023
【図２２】
2010191628.tif 000024
【図２３】
2010191628.tif 000025