(57)【要約】【課題】階層化された分類の項目の値毎に問合せ文を自動生成する。【解決手段】テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル、リレーション列定義テーブル及びユーザが入力したフィルタ条件を基に、テーブル列ノードテーブル、リレーション逆探索テーブル、リレーション逆探索リストテーブル、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル、条件詳細テーブルを経て、所定のアルゴリズムにより問合せ文を自動生成する。【選択図】        図１
2004246405.tif 000002
【特許請求の範囲】
【請求項１】
検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報及び条件値により表現する手段と、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名並びに前記条件値を基に、検索条件式を作成する手段と、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。
【請求項２】
検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報、条件の区分を示す条件区分及び該条件区分に対応する条件値により表現する手段と、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名、前記条件区分並びに該条件区分に対応する条件値を基に、検索条件式を作成する手段と、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。
【請求項３】
選択するべき列を特定するための選択列特定情報を基に、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記選択するべき列の属するテーブルのテーブル名及び同列の列名を基に、ｓｅｌｅｃｔキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルのテーブル名を基に、ｆｒｏｍキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、ｗｈｅｒｅキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、サブクエリのｓｅｌｅｃｔキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名を基に、前記サブクエリのｆｒｏｍキーワードを含む句を作成する手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、前記サブクエリの等結合の結合条件を作成する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。
【請求項４】
請求項１に記載のデータベース問合せ文作成装置において、
請求項３のデータベース問合せ文作成装置が作成したデータベース問合せ文を実行して得た結果を前記条件値として用いることを特徴とするデータベース問合せ文作成装置。
【請求項５】
請求項１又は２に記載のデータベース問合せ文作成装置において、
前記検索条件を適用する列をユーザに選択させるために、複数のテーブルにわたり各テーブルの各列を特定するための情報を各レコードに有する第１のテーブル、複数のテーブルにわたり各テーブルの各列を特定するための情報を各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に対応付けた第２のテーブル並びに各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に各列の列名を対応付けた第３のテーブルを基に作成したリストを表示する手段を更に備えることを特徴とするデータベース問合せ文作成装置。
【請求項６】
請求項１又は２に記載のデータベース問合せ文作成装置において、
前記検索条件適用列特定情報は、複数のテーブルにわたり各テーブルの各列を特定するためのリレーション逆探索ＩＤにより表されることを特徴とするデータベース問合せ文作成装置。
【請求項７】
請求項１又は２に記載のデータベース問合せ文作成装置において、
前記検索条件適用列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、
前記検索条件適用列特定情報であるリレーション逆探索ＩＤに対応するテーブルＩＤ及びテーブル列ＩＤを第１のテーブルから検索する手段と、
検索されたテーブルＩＤに対応するテーブル名を第２のテーブルから検索する手段と、
検索されたテーブルＩＤ及びテーブル列ＩＤに対応する列名を第３のテーブルから検索する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。
【請求項８】
請求項３に記載のデータベース問合せ文作成装置において、前記選択列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、
前記選択列特定情報であるリレーション逆探索ＩＤに対応するテーブルＩＤ及びテーブル列ＩＤを第１のテーブルから検索する手段と、
検索されたテーブルＩＤに対応するテーブル名を第２のテーブルから検索する手段と、
検索されたテーブルＩＤ及びテーブル列ＩＤに対応する列名を第３のテーブルから検索する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。
【請求項９】
請求項１、２又は３に記載のデータベース問合せ文作成装置において、
前記検索条件適用列（着目列）の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段、又は、前記選択するべき列（着目列）の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段は、前記着目列を特定するためのリレーション逆探索ＩＤに対応する全てのリレーションのリレーションＩＤを第１のテーブルから検索する手段を備え、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記第１のテーブルから検索された前記リレーションＩＤに対応する子テーブルＩＤ、子テーブル列ＩＤ、親テーブルＩＤ及び親テーブル列ＩＤを第２のテーブルから検索する手段を備え、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段、又は、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、サブクエリの等結合の結合条件を作成する手段は、前記第２のテーブルから検索された前記子テーブルＩＤに対応する子テーブルのテーブル名を第３のテーブルから検索する手段と、前記第２のテーブルから検索された前記親テーブルＩＤに対応する親テーブルのテーブル名を前記第３のテーブルから検索する手段と、前記第２のテーブルから検索された前記子テーブルＩＤ及び前記子テーブル列ＩＤに対応する列名を第４のテーブルから検索する手段と、前記第２のテーブルから検索された前記親テーブルＩＤ及び前記親テーブル列ＩＤに対応する列名を前記第４のテーブルから検索する手段とを備えることを特徴とするデータベース問合せ文作成装置。
【請求項１０】
テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル及びリレーション列定義テーブルを基に、テーブル列ノードテーブル、リレーション逆探索テーブル及びリレーション逆探索リストテーブルを作成するテーブル列ノードテーブル等作成手段と、
前記テーブル列定義テーブル、前記テーブル列ノードテーブル及び前記リレーション逆探索リストテーブルを基に表示したリストを用いて作成されたフィルタ条件を基に、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル及び条件詳細テーブルを作成するフィルタテーブル等作成手段と、
前記テーブル定義テーブル、前記テーブル列定義テーブル、前記リレーション列定義テーブル、前記リレーション逆探索テーブル、前記リレーション逆探索リストテーブル、前記フィルタテーブル、前記フィルタ分類フィールドテーブル、前記フィルタ分類フォルダテーブル、前記条件テーブル及び前記条件詳細テーブルを基に、問合せ文を作成する問合せ文作成手段と、
を備えることを特徴とするデータベース問合せ文作成装置。
【請求項１１】
階層化された分類の項目の値毎に設けられたフォルダに、前記階層化された分類の項目の値及びその分類の項目に至るまでの上位層の分類の項目の値でデータを絞り込むためのデータベース問合せ文を関連付け、いずれかのフォルダが選択されたならば、そのフォルダに関連付けられたデータベース問合せ文を実行して、その実行結果を表示するようにしたことを特徴とするデータ表示装置。
【請求項１２】
請求項１１に記載のデータ表示装置において、前記データベース問合せ文は、請求項１、２、４、５、６、７、８、９又は１０に記載のデータベース問合せ文作成装置で作成したものであることを特徴とするデータ表示装置。
【請求項１３】
各テーブルを特定するための「テーブルＩＤ」列、各テーブルにおいて各列を特定するための「テーブル列ＩＤ」及びリレーションが付されている列についてリレーションＩＤが記述される「リレーションＩＤ」列を有するレコードが各テーブルの各列毎に設けられたテーブル列定義テーブルと、前記「リレーションＩＤ」列に子テーブルのテーブルＩＤである「子テーブルＩＤ」列及び親テーブルのテーブルＩＤである「親テーブルＩＤ」列を対応付けるレコードがリレーション毎に設けられたリレーション定義テーブルを基に、複数のテーブルにわたり各テーブルの各列を特定するための「リレーション逆探索ＩＤ」列、リレーションの親子関係を親ノードの前記「リレーション逆探索ＩＤ」により表す「親ノードＩＤ」及び親ノードを共通とする列の通し番号を表す「親ノード内順番号」を有するレコードが各テーブルの各列毎に設けられたテーブル列ノードテーブルを作成する手段を備えることを特徴とするテーブル列ノードテーブル等作成装置。
【請求項１４】
請求項１３に記載のテーブル列ノードテーブル等作成装置において、前記テーブル列定義テーブルを基に、前記「テーブルＩＤ」及び前記「テーブル列ＩＤ」を前記「リレーション逆探索ＩＤ」に対応付けるためのレコードが各テーブルの各列毎に設けられたリレーション逆探索テーブルを作成する手段を更に備えることを特徴とするリレーション逆探索テーブル等作成装置。
【請求項１５】
請求項１４に記載のリレーション逆探索テーブル等作成装置において、
前記テーブル列ノードテーブル、
前記リレーション逆探索テーブル、
リレーションを特定するための「リレーションＩＤ」列、リレーションを共通とする列の通し番号を有する「リレーション列ＩＤ」列並びに前記「リレーションＩＤ」列及び前記「リレーション列ＩＤ」に対応する「子テーブルＩＤ」列、「子テーブル列ＩＤ」列、「親テーブルＩＤ」列及び「親テーブル列ＩＤ」を有するレコードが設けられたリレーション列定義テーブルを基に、
「リレーション逆探索ＩＤ」列、該「リレーション逆探索ＩＤ」列で特定される列から主テーブルに遡るために必要なリレーションの通し番号である「リレーション逆順番」列及び前記「リレーション逆探索ＩＤ」列及び前記「リレーション逆順番」に対応する「リレーションＩＤ」列を有するレコードが設けられたリレーション逆探索リストテーブルを作成する手段を更に備えることを特徴とするリレーション逆探索テーブル等作成装置。
【請求項１６】
検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報及び条件値により表現するステップと、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名並びに前記条件値を基に、検索条件式を作成するステップと、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップと、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。
【請求項１７】
検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報、条件の区分を示す条件区分及び該条件区分に対応する条件値により表現するステップと、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名、前記条件区分並びに該条件区分に対応する条件値を基に、検索条件式を作成するステップと、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップと、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。
【請求項１８】
選択するべき列を特定するための選択列特定情報を基に、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記選択するべき列の属するテーブルのテーブル名及び同列の列名を基に、ｓｅｌｅｃｔキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルのテーブル名を基に、ｆｒｏｍキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、ｗｈｅｒｅキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、サブクエリのｓｅｌｅｃｔキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップと、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名を基に、前記サブクエリのｆｒｏｍキーワードを含む句を作成するステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、前記サブクエリの等結合の結合条件を作成するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。
【請求項１９】
請求項１６に記載のデータベース問合せ文作成方法において、
請求項３のデータベース問合せ文作成方法が作成したデータベース問合せ文を実行して得た結果を前記条件値として用いることを特徴とするデータベース問合せ文作成方法。
【請求項２０】
請求項１６又は１７に記載のデータベース問合せ文作成方法において、
前記検索条件を適用する列をユーザに選択させるために、複数のテーブルにわたり各テーブルの各列を特定するための情報を各レコードに有する第１のテーブル、複数のテーブルにわたり各テーブルの各列を特定するための情報を各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に対応付けた第２のテーブル並びに各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に各列の列名を対応付けた第３のテーブルを基に作成したリストを表示するステップを更に備えることを特徴とするデータベース問合せ文作成方法。
【請求項２１】
請求項１６又は１７に記載のデータベース問合せ文作成方法において、
前記検索条件適用列特定情報は、複数のテーブルにわたり各テーブルの各列を特定するためのリレーション逆探索ＩＤにより表されることを特徴とするデータベース問合せ文作成方法。
【請求項２２】
請求項１６又は１７に記載のデータベース問合せ文作成方法において、
前記検索条件適用列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求めるステップは、
前記検索条件適用列特定情報であるリレーション逆探索ＩＤに対応するテーブルＩＤ及びテーブル列ＩＤを第１のテーブルから検索するステップと、
検索されたテーブルＩＤに対応するテーブル名を第２のテーブルから検索するステップと、
検索されたテーブルＩＤ及びテーブル列ＩＤに対応する列名を第３のテーブルから検索するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。
【請求項２３】
請求項１８に記載のデータベース問合せ文作成方法において、
前記選択列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求めるステップは、
前記選択列特定情報であるリレーション逆探索ＩＤに対応するテーブルＩＤ及びテーブル列ＩＤを第１のテーブルから検索するステップと、
検索されたテーブルＩＤに対応するテーブル名を第２のテーブルから検索するステップと、
検索されたテーブルＩＤ及びテーブル列ＩＤに対応する列名を第３のテーブルから検索するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。
【請求項２４】
請求項１６、１７又は１８に記載のデータベース問合せ文作成方法において、
前記検索条件適用列（着目列）の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップ、又は、前記選択するべき列（着目列）の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップは、前記着目列を特定するためのリレーション逆探索ＩＤに対応する全てのリレーションのリレーションＩＤを第１のテーブルから検索するステップを備え、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップは、前記第１のテーブルから検索された前記リレーションＩＤに対応する子テーブルＩＤ、子テーブル列ＩＤ、親テーブルＩＤ及び親テーブル列ＩＤを第２のテーブルから検索するステップを備え、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成するステップ、又は、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、サブクエリの等結合の結合条件を作成するステップは、前記第２のテーブルから検索された前記子テーブルＩＤに対応する子テーブルのテーブル名を第３のテーブルから検索するステップと、前記第２のテーブルから検索された前記親テーブルＩＤに対応する親テーブルのテーブル名を前記第３のテーブルから検索するステップと、前記第２のテーブルから検索された前記子テーブルＩＤ及び前記子テーブル列ＩＤに対応する列名を第４のテーブルから検索するステップと、前記第２のテーブルから検索された前記親テーブルＩＤ及び前記親テーブル列ＩＤに対応する列名を前記第４のテーブルから検索するステップとを備えることを特徴とするデータベース問合せ文作成方法。
【請求項２５】
テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル及びリレーション列定義テーブルを基に、テーブル列ノードテーブル、リレーション逆探索テーブル及びリレーション逆探索リストテーブルを作成するテーブル列ノードテーブル等作成ステップと、
前記テーブル列定義テーブル、前記テーブル列ノードテーブル及び前記リレーション逆探索リストテーブルを基に表示したリストを用いて作成されたフィルタ条件を基に、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル及び条件詳細テーブルを作成するフィルタテーブル等作成ステップと、
前記テーブル定義テーブル、前記テーブル列定義テーブル、前記リレーション列定義テーブル、前記リレーション逆探索テーブル、前記リレーション逆探索リストテーブル、前記フィルタテーブル、前記フィルタ分類フィールドテーブル、前記フィルタ分類フォルダテーブル、前記条件テーブル及び前記条件詳細テーブルを基に、問合せ文を作成する問合せ文作成ステップと、
を備えることを特徴とするデータベース問合せ文作成方法。
【請求項２６】
階層化された分類の項目の値毎に設けられたフォルダに、前記階層化された分類の項目の値及びその分類の項目に至るまでの上位層の分類の項目の値でデータを絞り込むためのデータベース問合せ文を関連付け、いずれかのフォルダが選択されたならば、そのフォルダに関連付けられたデータベース問合せ文を実行して、その実行結果を表示するようにしたことを特徴とするデータ表示方法。
【請求項２７】
請求項２６に記載のデータ表示方法において、前記データベース問合せ文は、請求項１６、１７、１９、２０、２１、２２、２３、２４又は２５に記載のデータベース問合せ文作成方法で作成したものであることを特徴とするデータ表示方法。
【請求項２８】
各テーブルを特定するための「テーブルＩＤ」列、各テーブルにおいて各列を特定するための「テーブル列ＩＤ」及びリレーションが付されている列についてリレーションＩＤが記述される「リレーションＩＤ」列を有するレコードが各テーブルの各列毎に設けられたテーブル列定義テーブルと、前記「リレーションＩＤ」列に子テーブルのテーブルＩＤである「子テーブルＩＤ」列及び親テーブルのテーブルＩＤである「親テーブルＩＤ」列を対応付けるレコードがリレーション毎に設けられたリレーション定義テーブルを基に、複数のテーブルにわたり各テーブルの各列を特定するための「リレーション逆探索ＩＤ」列、リレーションの親子関係を親ノードの前記「リレーション逆探索ＩＤ」により表す「親ノードＩＤ」及び親ノードを共通とする列の通し番号を表す「親ノード内順番号」を有するレコードが各テーブルの各列毎に設けられたテーブル列ノードテーブルを作成するステップを備えることを特徴とするテーブル列ノードテーブル等作成方法。
【請求項２９】
請求項２８に記載のテーブル列ノードテーブル等作成方法において、前記テーブル列定義テーブルを基に、前記「テーブルＩＤ」及び前記「テーブル列ＩＤ」を前記「リレーション逆探索ＩＤ」に対応付けるためのレコードが各テーブルの各列毎に設けられたリレーション逆探索テーブルを作成するステップを更に備えることを特徴とするリレーション逆探索テーブル等作成方法。
【請求項３０】
請求項２９に記載のリレーション逆探索テーブル等作成方法において、
前記テーブル列ノードテーブル、
前記リレーション逆探索テーブル、
リレーションを特定するための「リレーションＩＤ」列、リレーションを共通とする列の通し番号を有する「リレーション列ＩＤ」列並びに前記「リレーションＩＤ」列及び前記「リレーション列ＩＤ」に対応する「子テーブルＩＤ」列、「子テーブル列ＩＤ」列、「親テーブルＩＤ」列及び「親テーブル列ＩＤ」を有するレコードが設けられたリレーション列定義テーブルを基に、
「リレーション逆探索ＩＤ」列、該「リレーション逆探索ＩＤ」列で特定される列から主テーブルに遡るために必要なリレーションの通し番号である「リレーション逆順番」列及び前記「リレーション逆探索ＩＤ」列及び前記「リレーション逆順番」に対応する「リレーションＩＤ」列を有するレコードが設けられたリレーション逆探索リストテーブルを作成するステップを更に備えることを特徴とするリレーション逆探索テーブル等作成方法。
【請求項３１】
コンピュータに請求項１６乃至３０のいずれか１項に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベースを操作するためのデータベース問合せ文を作成するためのデータベース問合せ文作成装置及びその方法並びにプログラムに関する。
【０００２】
【従来の技術】
現在普及しているＭｉｃｒｏｓｏｆｔ  Ａｃｃｅｓｓ（登録商標）等のリレーショナルデータベースにおいては、データベースを操作するためのデータベース問合せ文を作成したり、実行したりすることが可能である。例えば、あるテーブルのある列に条件を設定して、レコードを絞り込むことが可能である。
【０００３】
なお、本発明に関連する先行技術文献としては、以下のものがある。
【０００４】
【特許文献１】
特開平５−１０８４３１号公報
【特許文献２】
特開２０００−１２３０３４公報
【特許文献３】
特開平７−７３１９９号公報
【特許文献４】
特開平９−２３７２８０号公報
【特許文献５】
特開平８−２２３８９号公報
【非特許文献１】
木村博文等著「入門ＳＱＬ」ソフトバンクパブリッシング株式会社出版、２０００年１月２４日
【０００５】
【発明が解決しようとする課題】
しかしながら、一般にリレーショナルデータベースは、複数のテーブルから構成されており、テーブル同士がリレーションで結ばれている。このようなリレーションで結ばれた複数のテーブルから任意のテーブルの任意の列を選択して検索を行うためには、例えば、Ｍｉｃｒｏｓｏｆｔ  Ａｃｃｅｓｓの場合には、クエリという方法で予めリレーションによりテーブルを結合させた仮想テーブルを用意しておくことが必要である。
【０００６】
また、従来のデータベースにおいては、任意のテーブルの任意の列の値毎にデータを分類して表示することが簡単にはできない。
【０００７】
そこで、本発明は、予め仮想テーブルを用意するのではなく、ユーザが任意に選択したテーブルの列から動的に問合せ文を生成し、その問合せを実行することによりデータベースから所定のデータを検索することが可能な汎用的なデータベース問合せ文作成装置及びその方法並びにプログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明の第１の観点によれば、検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報及び条件値により表現する手段と、前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記検索条件適用列の属するテーブルのテーブル名及び同列の列名並びに前記条件値を基に、検索条件式を作成する手段と、前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【０００９】
本発明の第２の観点によれば、検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報、条件の区分を示す条件区分及び該条件区分に対応する条件値により表現する手段と、前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記検索条件適用列の属するテーブルのテーブル名及び同列の列名、前記条件区分並びに該条件区分に対応する条件値を基に、検索条件式を作成する手段と、前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【００１０】
本発明の第３の観点によれば、選択するべき列を特定するための選択列特定情報を基に、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を基に、ｓｅｌｅｃｔキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルのテーブル名を基に、ｆｒｏｍキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、ｗｈｅｒｅキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、サブクエリのｓｅｌｅｃｔキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記リレーションに用いられる列の属するテーブルのテーブル名を基に、前記サブクエリのｆｒｏｍキーワードを含む句を作成する手段と、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、前記サブクエリの等結合の結合条件を作成する手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【００１１】
本発明の第１の観点によるデータベース問合せ文作成装置は、本発明の第３の観点によるデータベース問合せ文作成装置が作成したデータベース問合せ文を実行して得た結果を前記条件値として用いてもよい。
【００１２】
本発明の第１又は第２の観点によるデータベース問合せ文作成装置は、前記検索条件を適用する列をユーザに選択させるために、複数のテーブルにわたり各テーブルの各列を特定するための情報を各レコードに有する第１のテーブル、複数のテーブルにわたり各テーブルの各列を特定するための情報を各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に対応付けた第２のテーブル並びに各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に各列の列名を対応付けた第３のテーブルを基に作成したリストを表示する手段を更に備えていてもよい。
【００１３】
本発明の第１又は第２の観点によるデータベース問合せ文作成装置において、前記検索条件適用列特定情報は、複数のテーブルにわたり各テーブルの各列を特定するためのリレーション逆探索ＩＤにより表されてもよい。
【００１４】
本発明の第１又は第２の観点によるデータベース問合せ文作成装置において、前記検索条件適用列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記検索条件適用列特定情報であるリレーション逆探索ＩＤに対応するテーブルＩＤ及びテーブル列ＩＤを第１のテーブルから検索する手段と、検索されたテーブルＩＤに対応するテーブル名を第２のテーブルから検索する手段と、検索されたテーブルＩＤ及びテーブル列ＩＤに対応する列名を第３のテーブルから検索する手段と、を備えていてもよい。
【００１５】
本発明の第３の観点によるデータベース問合せ文作成装置において、前記選択列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記選択列特定情報であるリレーション逆探索ＩＤに対応するテーブルＩＤ及びテーブル列ＩＤを第１のテーブルから検索する手段と、検索されたテーブルＩＤに対応するテーブル名を第２のテーブルから検索する手段と、検索されたテーブルＩＤ及びテーブル列ＩＤに対応する列名を第３のテーブルから検索する手段と、を備えていてもよい。
【００１６】
本発明の第１、第２又は第３の観点によるデータベース問合せ文作成装置において、前記検索条件適用列（着目列）の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段、又は、前記選択するべき列（着目列）の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段は、前記着目列を特定するためのリレーション逆探索ＩＤに対応する全てのリレーションのリレーションＩＤを第１のテーブルから検索する手段を備えていてもよく、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記第１のテーブルから検索された前記リレーションＩＤに対応する子テーブルＩＤ、子テーブル列ＩＤ、親テーブルＩＤ及び親テーブル列ＩＤを第２のテーブルから検索する手段を備えていてもよく、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段、又は、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、サブクエリの等結合の結合条件を作成する手段は、前記第２のテーブルから検索された前記子テーブルＩＤに対応する子テーブルのテーブル名を第３のテーブルから検索する手段と、前記第２のテーブルから検索された前記親テーブルＩＤに対応する親テーブルのテーブル名を前記第３のテーブルから検索する手段と、前記第２のテーブルから検索された前記子テーブルＩＤ及び前記子テーブル列ＩＤに対応する列名を第４のテーブルから検索する手段と、前記第２のテーブルから検索された前記親テーブルＩＤ及び前記親テーブル列ＩＤに対応する列名を前記第４のテーブルから検索する手段とを備えていてもよい。
【００１７】
本発明の第４の観点によれば、テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル及びリレーション列定義テーブルを基に、テーブル列ノードテーブル、リレーション逆探索テーブル及びリレーション逆探索リストテーブルを作成するテーブル列ノードテーブル等作成手段と、前記テーブル列定義テーブル、前記テーブル列ノードテーブル及び前記リレーション逆探索リストテーブルを基に表示したリストを用いて作成されたフィルタ条件を基に、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル及び条件詳細テーブルを作成するフィルタテーブル等作成手段と、前記テーブル定義テーブル、前記テーブル列定義テーブル、前記リレーション列定義テーブル、前記リレーション逆探索テーブル、前記リレーション逆探索リストテーブル、前記フィルタテーブル、前記フィルタ分類フィールドテーブル、前記フィルタ分類フォルダテーブル、前記条件テーブル及び前記条件詳細テーブルを基に、問合せ文を作成する問合せ文作成手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【００１８】
本発明の第５の観点によれば、階層化された分類の項目の値毎に設けられたフォルダに、前記階層化された分類の項目の値及びその分類の項目に至るまでの上位層の分類の項目の値でデータを絞り込むためのデータベース問合せ文を関連付け、いずれかのフォルダが選択されたならば、そのフォルダに関連付けられたデータベース問合せ文を実行して、その実行結果を表示するようにしたことを特徴とするデータ表示装置が提供される。
【００１９】
本発明の第５の観点によるデータ表示装置において、前記データベース問合せ文は、本発明の第１乃至４の何れかの観点によるデータベース問合せ文作成装置で作成したものであってもよい。
【００２０】
本発明の第６の観点によれば、各テーブルを特定するための「テーブルＩＤ」列、各テーブルにおいて各列を特定するための「テーブル列ＩＤ」及びリレーションが付されている列についてリレーションＩＤが記述される「リレーションＩＤ」列を有するレコードが各テーブルの各列毎に設けられたテーブル列定義テーブルと、前記「リレーションＩＤ」列に子テーブルのテーブルＩＤである「子テーブルＩＤ」列及び親テーブルのテーブルＩＤである「親テーブルＩＤ」列を対応付けるレコードがリレーション毎に設けられたリレーション定義テーブルを基に、複数のテーブルにわたり各テーブルの各列を特定するための「リレーション逆探索ＩＤ」列、リレーションの親子関係を親ノードの前記「リレーション逆探索ＩＤ」により表す「親ノードＩＤ」及び親ノードを共通とする列の通し番号を表す「親ノード内順番号」を有するレコードが各テーブルの各列毎に設けられたテーブル列ノードテーブルを作成する手段を備えることを特徴とするテーブル列ノードテーブル等作成装置が提供される。
【００２１】
本発明の第６の観点によるテーブル列ノードテーブル等作成装置は、前記テーブル列定義テーブルを基に、前記「テーブルＩＤ」及び前記「テーブル列ＩＤ」を前記「リレーション逆探索ＩＤ」に対応付けるためのレコードが各テーブルの各列毎に設けられたリレーション逆探索テーブルを作成する手段を更に備えていてもよい。
【００２２】
本発明の第６の観点によるリレーション逆探索テーブル等作成装置は、前記テーブル列ノードテーブル、前記リレーション逆探索テーブル、リレーションを特定するための「リレーションＩＤ」列、リレーションを共通とする列の通し番号を有する「リレーション列ＩＤ」列並びに前記「リレーションＩＤ」列及び前記「リレーション列ＩＤ」に対応する「子テーブルＩＤ」列、「子テーブル列ＩＤ」列、「親テーブルＩＤ」列及び「親テーブル列ＩＤ」を有するレコードが設けられたリレーション列定義テーブルを基に、「リレーション逆探索ＩＤ」列、該「リレーション逆探索ＩＤ」列で特定される列から主テーブルに遡るために必要なリレーションの通し番号である「リレーション逆順番」列及び前記「リレーション逆探索ＩＤ」列及び前記「リレーション逆順番」に対応する「リレーションＩＤ」列を有するレコードが設けられたリレーション逆探索リストテーブルを作成する手段を更に備えていてもよい。
【００２３】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００２４】
なお、実施形態中、説明のためにテーブル名及び列名には日本語を用いているが、実際には、英数字を用いている。従って、ＳＱＬ文において日本語表示されている部分も、実際には英数字が用いられている。
【００２５】
図１は本発明の実施形態によるデータベース問合せ文作成装置の構成を示す。
【００２６】
図１を参照すると、データベース問合せ文作成装置は、テーブル定義テーブル等作成手段６０１、テーブル列ノードテーブル等作成手段６０２、フィルタ条件入力手段６０３、フィルタテーブル等作成手段６０４及びＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）文作成手段６０５を備える。
【００２７】
テーブル定義テーブル等作成手段６０１は、テーブル定義テーブル３０１、テーブル列定義テーブル３０２、リレーション定義テーブル３０３及びリレーション列定義テーブル３０４を作成する。テーブル列ノードテーブル等作成手段６０２は、テーブル定義テーブル３０１、テーブル列定義テーブル３０２、リレーション定義テーブル３０３及びリレーション列定義テーブル３０４を基に、テーブル列ノードテーブル３０５、リレーション逆探索テーブル３０６及びリレーション逆探索リストテーブル３０７を作成する。フィルタ条件入力手段６０３は、テーブル列定義テーブル３０２、テーブル列ノードテーブル３０５及びリレーション逆探索テーブル３０６並びにユーザ入力を基に、フィルタ条件を作成する。フィルタテーブル等作成手段６０４は、フィルタ条件を基に、フィルタテーブル３０８、フィルタ分類フィールドテーブル３０９、フィルタ分類フォルダテーブル３１０、条件テーブル３１１及び条件詳細テーブル３１２を作成する。ＳＱＬ文作成手段６０５は、テーブル定義テーブル３０１、テーブル列定義テーブル３０２、リレーション列定義テーブル３０４、リレーション逆探索テーブル３０６、リレーション逆探索リストテーブル３０７、フィルタテーブル３０８、フィルタ分類フィールドテーブル３０９、フィルタ分類フォルダテーブル３１０、条件テーブル３１１及び条件詳細テーブル３１２を基にＳＱＬ文３１３を作成する。
【００２８】
テーブル定義テーブル等作成手段６０１、テーブル列ノードテーブル等作成手段６０２、フィルタ条件入力手段６０３、フィルタテーブル等作成手段６０４及びＳＱＬ文作成手段６０５は、ハードウェアにより構成してもよい、コンピュータをこれらの手段として機能させるためのプログラムをコンピュータが読み込んで実行することによっても構成してもよい。
【００２９】
ＳＱＬ文３１３は、図２に示す「物件データ編集画面  データシートビュー」１７１のツリーリスト１７２に表示する各フォルダ毎に作成され、ユーザが任意のフォルダを選択すると、そのフォルダに関連付けられたＳＱＬ文が実行され、その実行結果がデータシートビュー１７３に表示される。例えば、「エリア・販売店で分類」という名称のフィルタがツリーリスト１７２に表示されているが、このフィルタの下には、「県央」フォルダ、「県東」フォルダ及び「県西」フォルダがあり、「県央」フォルダの下には、「ナガシマ」フォルダ及び「ＭＡＸ」フォルダがある。ユーザが「県央」フォルダを選択したときには、エリア名が「県央」である物件データを抽出するためのＳＱＬ文が実行され、その実行結果がデータシートビュー１７３に表示される。また、ユーザが「ＡＢＣショップ」フォルダを選択したときには、エリア名が「県央」であり、且つ、販売店名が「ＡＢＣショップ」である物件データを抽出するためのＳＱＬ文が実行され、その実行結果がデータシートビュー１７３に表示される。また、データシートビュー１７３に表示される各物件を１件毎にフォームビュー１８３（図３）に表示することも可能である。
【００３０】
図４は、本発明の実施形態による物件データベースに含まれるテーブル及びそれらの間に結ばれたリレーションを示す。
【００３１】
図４を参照すると、物件データベースは、「物件テーブル」、「メーカ車両テーブル」、「メーカテーブル」、「エリアテーブル」及び「販売店テーブル」を備える。「メーカ車両テーブル」、「メーカテーブル」、「エリアテーブル」及び「販売店テーブル」は、他のテーブルから参照される参照テーブルである。「物件テーブル」は主となるテーブル（主テーブル）である。「物件テーブル」は、「物件テーブル」、「メーカ車両テーブル」、「メーカテーブル」、「エリアテーブル」及び「販売店テーブル」のみから成るデータベースにおいては、他のテーブルから参照されることはなく、この意味において主テーブルである。
【００３２】
「物件テーブル」の列は、「物件ＩＤ」、「物件名」、「価格」、「メーカＩＤ」、「車両ＩＤ」、「ボディ形状・グレード」、「初年度登録年」、「排気量」、「車検年月」、「シフト」、「走行距離」、「色」、「備考」、「エリアＩＤ」、「販売店ＩＤ」及び「サムネイル画像」である。「メーカ車両テーブル」の列は、「メーカＩＤ」、「車両ＩＤ」及び「車両名」である。「メーカテーブル」の列は、「メーカＩＤ」及び「メーカ名」である。「エリアテーブル」の列は、「エリアＩＤ」及び「エリア名」である。「販売店テーブル」の列は、「販売店ＩＤ」、「販売店名」、「住所」、「電話番号」、「ＦＡＸ番号」、「営業時間」、「定休日」、「ＨＰアドレス」、「Ｅメールアドレス」、「振込先」及び「備考」である。
【００３３】
「物件テーブル」の主キーは「物件ＩＤ」である。「メーカ車両テーブル」の主キーは、「メーカＩＤ」及び「車両ＩＤ」より成る連結キーである。「メーカテーブル」の主キーは、「メーカＩＤ」である。「エリアテーブル」の主キーは、「エリアＩＤ」である。「販売店テーブル」の主キーは、「販売店ＩＤ」である。
【００３４】
「物件テーブル」は、「メーカＩＤ」及び「車両ＩＤ」の連結キーを第１の外部キーとして有する。第１の外部キーは、「メーカ車両テーブル」の主キーに対応する。また「物件テーブル」は、「エリアＩＤ」を第２の外部キーとして有する。第２の外部キーは、「エリアテーブル」の主キーに対応する。更に、「物件テーブル」は、「販売店ＩＤ」を外部キーとして有する。第３の外部キーは、「販売店テーブル」の主キーに対応する。以下、外部キーが設定される列を「参照列」という。
【００３５】
物件データベースの各テーブルは、図５に示す「テーブル定義テーブル」３０１及び図６に示す「テーブル列定義テーブル」３０２により定義される。また、物件データベースの各リレーションについての一部の情報は、図６に示す「テーブル列定義テーブル」３０２により定義される。
【００３６】
図５を参照すると、「テーブル定義テーブル」３０１の列は、「テーブルＩＤ」、「テーブル名（英数字表示）」、「テーブル名（日本語表記）」及び「テーブル区分」である。「テーブルＩＤ」は、各テーブルに固有のＩＤである。「テーブル名（英数字表記）」は、英数字で表したテーブルの名称である。「テーブル名（日本語表記）」は、日本語で表したテーブルの名称である。「テーブル区分」は、テーブルが「物件テーブル」であるか又は参照テーブルであるかの区分である。
【００３７】
図６を参照すると、「テーブル列定義テーブル」３０２の列は、「テーブルＩＤ」、「テーブル列ＩＤ」、「列順番」、「列名（英数字表記）」、「列名（日本語表記）」、「データ型」、「長さ」、「小数点」、「主キー」、「外部キー」及び「リレーションＩＤ」である。「テーブル列定義テーブル」３０２のレコードは、各テーブルの各列毎に設けられている。「テーブルＩＤ」は、各テーブルに固有のＩＤであり、「テーブル定義テーブル」３０１の「テーブルＩＤ」と一致する。「テーブル列ＩＤ」は、各テーブルにおける各列のＩＤである。「列順番」は、各テーブルにおける各列の順番である。「列名（英数字表記）」は、英数字で表した列の名称である。「列名（日本語表記）」は、日本語で表した列の名称である。「データ型」は、列のデータの型を示す。「データ型」は、例えば、数値、文字列、オブジェクト等である。「長さ」は、列のバイト数である。「小数点」は、「データ型」が数値である場合の小数点以下の桁数である。「主キー」は、列に主キーが設定されているか否かを示す。「外部キー」は、列に外部キーが設定されているか否かを示す。「リレーションＩＤ」は、列に外部キーが設定されている場合に、その外部キーに対応するリレーションが物件データベース全体の中で何番目のリレーションであるかを示す。
【００３８】
物件データベースの各リレーションについての一部の情報は、図７に示す「リレーション定義テーブル」３０３及び図８に示す「リレーション列定義テーブル」３０４により定義される。
【００３９】
図７を参照すると、「リレーション定義テーブル」３０３の列は、「リレーションＩＤ」、「子テーブルＩＤ」及び「親テーブルＩＤ」である。「リレーションＩＤ」は、「テーブル列定義テーブル」３０２の「リレーションＩＤ」に設定されたものである。「子テーブルＩＤ」は、リレーションに関し外部キーが設定されたテーブルの「テーブル定義テーブル」３０１における「テーブルＩＤ」である。「親テーブルＩＤ」は、リレーションに関し主キーが設定されたテーブルの「テーブル定義テーブル」３０１における「テーブルＩＤ」である。
【００４０】
図８を参照すると、「リレーション列定義テーブル」３０４の列は、「リレーションＩＤ」、「リレーション列ＩＤ」、「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」である。「リレーションＩＤ」は、「テーブル列定義テーブル」３０２の「リレーションＩＤ」に設定されたものである。「リレーション列ＩＤ」は、各リレーションにおける列の通し番号である。「子テーブルＩＤ」は、リレーションに関し外部キーが設定されたテーブルの「テーブル定義テーブル」３０１における「テーブルＩＤ」である。「子テーブル列ＩＤ」は、リレーションに関し外部キーが設定されたテーブルの列であって、「リレーション列ＩＤ」に対応するものの「テーブル列定義テーブル」３０２における「テーブル列ＩＤ」である。「親テーブルＩＤ」は、リレーションに関し主キーが設定されたテーブルの「テーブル定義テーブル」３０１における「テーブルＩＤ」である。「親テーブルＩＤ」は、リレーションに関し主キーが設定されたテーブルの列であって、「リレーション列ＩＤ」に対応するものの「テーブル列定義テーブル」３０２における「テーブル列ＩＤ」である。
【００４１】
次に、テーブル定義テーブル等作成手段６０１（図１）が行う「テーブル定義テーブル」３０１、「テーブル列定義テーブル」３０２、「リレーション定義テーブル」３０３及び「リレーション列定義テーブル」３０４の作成方法について説明する。
【００４２】
図９を参照すると、まず、ユーザ入力を受け付けて、「テーブル定義テーブル」３０１を作成する（ステップＳ５０１）。
【００４３】
次に、各テーブルについての列の定義を全テーブルについて繰り返す（ステップＳ５０２）。なお、基本的には、参照されるテーブルの列の定義を参照するテーブルの列の定義よりも先に行う。従って、全ての参照テーブルの列の定義を先に行い「物件テーブル」の定義を最後に行う。また「メーカテーブル」の列の定義を「メーカ車両テーブル」の列の定義よりも先に行う。
【００４４】
図１０は、参照テーブルの列の定義をするための「参照テーブル定義ダイアログ画面」１０１を示し、図１１は「物件テーブル」の列を定義するため「物件テーブル定義ダイアログ画面」１１１を示す。参照テーブルの列の定義をするときには、「参照テーブル定義ダイアログ画面」１０１を表示して、ステップＳ５０３〜Ｓ５０７を繰り返し、「物件テーブル」を定義するときには「物件テーブル定義ダイアログ画面」１１１を表示して、ステップＳ５０３〜Ｓ５０７を繰り返す。
【００４５】
図１０では、例として「メーカ車両テーブル」の定義画面を示している。ユーザが「列を追加…」ボタン１０３を押したときには（ステップＳ５０４で「一般列」）、列の属性を入力するためのダイアログ画面（図示せず。）を表示し、その画面で入力された列の属性（主キーであるか否か、「列名（日本語表記）」、「列名（英数字表記）」、「データ型」、「長さ」、「小数点」、ＮＵＬＬ不可か否か、重複不可か否か）（入力された値を有する。）及び属性である外部キー（「偽」の値を有する。）を有するレコードを「テーブル列定義テーブル」３０２に追加する。
【００４６】
一方、ユーザが「参照列を追加…」ボタン１０４を押したときには（ステップ５０４で「参照列」）、参照テーブルを入力するための図１２に示す「参照列追加ダイアログ画面」１０６を表示し、画面１０６上でユーザに参照テーブル（この例では「メーカテーブル」）を選択させ、画面１０６の「ＯＫ」ボタン１０７が押されたならば、その画面１０６で選択されたテーブルの主キーを参照して、「リレーション定義テーブル」３０３及び「リレーション列定義テーブル」３０４に追加するべきレコードのデータを算出し、そのデータを有するレコードをこれらのテーブル３０３、３０４に追加する（ステップＳ５０６）。そして、参照テーブルから引用した列の属性（「列名（日本語表記）」、「列名（英数字表記）」、「データ型」、「長さ」、「小数点」、ＮＵＬＬ不可か否か、重複不可か否か）、属性である「主キー」（入力された値を有する。）及び属性である外部キー（「真」の値を有する。）を有するレコードを「テーブル列定義テーブル」３０２に追加する。
【００４７】
「物件テーブル」ついても、図１０に示す「参照テーブル列定義ダイアログ画面」１０１が図１１に示す「物件テーブル列定義ダイアログ画面」１１１に置き換わり、図１２に示す「参照列追加ダイアログ画面」１０６が図１３に示す「参照列追加ダイアログ画面」１２１に置き換わるのみで、参照テーブルと同様に、「リレーション定義テーブル」３０３、「リレーション列定義テーブル」３０４及び「テーブル列定義テーブル」３０２にレコードが追加される。なお、図１１に示す「物件テーブル定義ダイアログ画面」１１１から図１３に示す「参照列追加ダイアログ画面」１２１を呼出し、ユーザが「メーカ車両テーブル」を選択した後に「ＯＫ」ボタン１２２を押した後の「物件テーブル定義ダイアログ画面」１１１を図１４に示す。
【００４８】
なお、「テーブル列定義テーブル」３０２において、「テーブル列ＩＤ」とは別に「列順番」が設けられているのは、「テーブル列ＩＤ」は入力順序により決まる一方で、図１０に示す「参照テーブル列定義ダイアログ画面」１０１の「上に移動」ボタン１０７及び「下に移動」ボタン１０８並びに図１１に示「物件テーブル定義ダイアログ画面」１１１の「上に移動」ボタン１１２及び「下に移動」ボタン１１３で列の移動ができ、「テーブル列ＩＤ」と「列順番」が異なることがあり得るからである。
【００４９】
以上のようにして、「テーブル定義テーブル」３０１、「テーブル列定義テーブル」３０２、「リレーション定義テーブル」３０３及び「リレーション列定義テーブル」３０４が作成される。
【００５０】
次に、テーブル列ノードテーブル等作成手段６０２（図１）が、図１５に示す「テーブル列ノードテーブル」３０５、図１６に示す「リレーション逆探索テーブル」３０６及び図１８に示す「リレーション逆探索リストテーブル」３０７を作成する。
【００５１】
図１５を参照すると、「テーブル列ノードテーブル」３０５の列は、「テーブル列ノードＩＤ」、「親ノードＩＤ」、「親ノード内順番号」、「ノード区分」及び「リレーション逆探索ＩＤ」である。「テーブル列ノードＩＤ」は、「テーブル列ノードテーブル」３０５におけるレコードの通し番号である。なお、ルートノードのレコードの「テーブル列ノードＩＤ」の値はゼロに設定される。「親ノードＩＤ」は、自ノードに対する親ノードのレコードの「テーブル列ノードＩＤ」である。「親ノード内順番号」は、親ノードを共通にするノードの通し番号である。「ノード区分」は、ノードの区分であり、「ルート」、「物件列」又は「参照列」の値をとる。ここでいう「参照列」は、当該列が参照テーブルに属する列であることを意味し、外部キーが設定されている列であることを意味するのではない。「リレーション逆探索ＩＤ」は、各ノードのレコードに固有の番号である。
【００５２】
リレーション逆探索ＩＤは、データベース中の複数のテーブルにわたり各テーブルの各列を特定することができ、この意味でデータベースにおける「列特定情報」ということができるが、「列特定情報」は、テーブルのＩＤ及びそのテーブルにおける列のＩＤより構成されるものであってもよい。  図１５に示す「テーブル列ノードテーブル」３０５を基に、全テーブルの全列のリレーションを階層構造で表示したものを図１７に示す。この階層構造においては、子ノードは親ノードに対して相対的に字下げして表示され、同一の親を共有する子ノードは「親ノード内順番号」の順に表示される。
【００５３】
図１６を参照すると、「リレーション逆探索テーブル」３０６の列は、「リレーション逆探索ＩＤ」、「テーブルＩＤ」及び「テーブル列ＩＤ」である。「リレーション逆探索ＩＤ」は、「リレーション逆探索テーブル」３０６におけるレコードの通し番号であり、また、「テーブル列ノードテーブル」３０５の「リレーション逆探索ＩＤ」に対応する。「テーブルＩＤ」及び「テーブル列ＩＤ」は、図６に示す「テーブル列定義テーブル」３０２における「テーブルＩＤ」及び「テーブル列ＩＤ」である。従って、各テーブルの各列に対し「リレーション逆探索ＩＤ」なる通し番号が「リレーション逆探索テーブル」３０６において付されることとなる。
【００５４】
図１８を参照すると、「リレーション逆探索リストテーブル」３０７の列は、「リレーション逆探索ＩＤ」、「リレーション逆順番」及び「リレーションＩＤ」である。「リレーション逆探索リストテーブル」３０７のレコードは、リレーション逆探索が必要な列に対してのみ設けられている。従って、「リレーション逆探索リストテーブル」３０７のレコードは「物件テーブル」の列に対しては設けられておらず、参照テーブルの列に対してのみ設けられている。「リレーション逆探索ＩＤ」は、図１６に示す「リレーション逆探索テーブル」３０６における「リレーション逆探索ＩＤ」である。「リレーション逆順番」は、図１６に示す「リレーション逆探索テーブル」３０６において「リレーション逆探索ＩＤ」に対応づけられている「テーブルＩＤ」及び「テーブルＩＤ」により特定される列から「物件テーブル」の対応列に向かって逆探索するときに用いられるリレーションの順番を示す。「リレーションＩＤ」は、図１６に示す「リレーション逆探索テーブル」３０６において「リレーション逆探索ＩＤ」に対応づけられている「テーブルＩＤ」及び「テーブルＩＤ」により特定される列から「物件テーブル」の対応列に向かって逆探索するときに用いられるリレーションの「リレーションＩＤ」を示す。
【００５５】
例えば、「リレーション逆探索リストテーブル」３０７に最初に現れる「リレーション逆探索ＩＤ」は５であるが、図１６に示す「リレーション逆探索テーブル」３０６において、この「リレーション逆探索ＩＤ」に対応する「テーブルＩＤ」及び「テーブル列ＩＤ」は２及び１である。これは「メーカ車両テーブル」の「メーカＩＤ」示す。そして「メーカ車両テーブル」の「メーカＩＤ」から「物件テーブル」の対応列である「メーカＩＤ」及び「車両ＩＤ」に向かって逆探索するときには１つのリレーションしか用いない。そして、このリレーションの「リレーションＩＤ」は１である。従って、「リレーション逆探索ＩＤ」５に対応する「リレーション逆順番」は１のみであり、これに対応する「リレーションＩＤ」は１である。
【００５６】
一方、「リレーション逆探索リストテーブル」３０７には「リレーション逆探索ＩＤ」６があるが、図１６に示す「リレーション逆探索テーブル」３０６において、この「リレーション逆探索ＩＤ」に対応する「テーブルＩＤ」及び「テーブル列ＩＤ」は３及び１である。これは「メーカテーブル」の「メーカＩＤ」示す。そして「メーカテーブル」の「メーカＩＤ」から「物件テーブル」の対応列である「メーカＩＤ」及び「車両ＩＤ」に逆探索するときには２つのリレーションを用いる。そして、これらのリレーションの「リレーションＩＤ」は順に４及び１である。従って、「リレーション逆探索ＩＤ」６に対応する「リレーション逆順番」は１及び２であり、これらに対応する「リレーションＩＤ」は順に４及び１である。
【００５７】
次に、テーブル列ノードテーブル等作成手段６０２（図１）が、「テーブル列ノードテーブル」３０５、「リレーション逆探索テーブル」３０６及び「リレーション逆探索リストテーブル」３０７を作成する方法について説明する。
【００５８】
図１９を参照すると、まず、「テーブル列ノードテーブル」３０５の第１レコードを作成する（ステップＳ５１１）。この第１レコードの「テーブル列ノードＩＤ」、「親ノードＩＤ」、「親ノード内順番号」、「ノード区分」及び「リレーション逆探索ＩＤ」は、それぞれ、０、ＮＵＬＬ、１、ルート、ＮＵＬＬであり、この第１レコードはルートノードについてのものである。
【００５９】
次に、対象テーブルを「物件テーブル」にする（ステップＳ５１２）。
【００６０】
次に、対象テーブルの全ての列についてステップＳ５１４〜Ｓ５１９の処理を繰り返す（ステップＳ５１３）。
【００６１】
ステップＳ５１４では、「テーブル列ノードテーブル」３０５に現在の対象テーブルの現在の列についてのレコードを追加する。ステップＳ５１５では、「リレーション逆探索テーブル」３０６に現在の対象テーブルの現在の列についてのレコードを追加し、必要に応じて「リレーション逆探索リストテーブル」３０７に現在の対象テーブルの現在の列についてのレコードを追加する。ステップＳ５１６では、現在の対象テーブルの現在の列が参照列であるか否かを判断し、そうであればステップＳ５１７に進み、そうでなければステップＳ５１４に戻る。
【００６２】
ステップ５１７では、「リレーション定義テーブル」３０３から参照先テーブルの「テーブルＩＤ」を取得し、ステップＳ５１８では、その「テーブルＩＤ」を用いて対象テーブルを参照先テーブルに更新して、ステップＳ５１９では、ステップＳ５１４〜Ｓ５１９の処理を再帰的に呼び出す。ステップＳ５１９の再帰的呼出しから抜けたならば対象テーブルを元に戻してステップＳ５１４に戻る。
【００６３】
ステップＳ５１５の詳細を図２０に示す。図２０を参照すると、まず、「リレーション逆探索テーブル」３０６に現在の対象テーブルの現在の列についてのレコードを追加する（ステップＳ５２１）。次に、現在の対象テーブルの現在の列からルートノードに達するまでステップＳ５２３〜Ｓ５２５を繰り返す（ステップＳ５２２）。ステップ５２３では、「テーブル列ノードテーブル」３０５から現在のノードの親ノードのレコードを取得し、ステップＳ５２４では、「リレーション列定義テーブル」３０４から親テーブル子テーブル間の「リレーションＩＤ」を取得し、ステップＳ５２５では、その「リレーションＩＤ」を有するレコードを「リレーション逆探索リストテーブル」３０７に追加する。
【００６４】
次に、「テーブル列ノードテーブル」３０５、「リレーション逆探索テーブル」３０６及び「リレーション逆探索リストテーブル」３０７を作成する方法について具体的に説明する。
【００６５】
まず、「テーブル列ノードテーブル」３０５の第１レコードを作成する（ステップＳ５１１）。次に、対象テーブル「物件テーブル」する（ステップＳ５１２）。
【００６６】
次に、「テーブル列ノードテーブル」３０５に「物件テーブル」の「物件ＩＤ」についてのレコードを追加する（ステップＳ５１４）。このレコードの「テーブル列ノードＩＤ」は、１であるが、これは通し番号（ステップＳ５１４を実行する度に増加する番号）である。また、このレコードの親ノードは、０であるが、これは初期値として与えられたものである。更に、このレコードの「親ノード内順番号」は１であるが、これは列ループ（ステップＳ５１３）の番号である。更に、「ノード区分」は、「物件列」であるが、これは現在の列が「物件テーブル」ものであることより求まる。このレコードの「リレーション逆探索ＩＤ」は、１であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」３０６の「リレーション逆探索ＩＤ」及び「リレーション逆探索リストテーブル」３０７の「リレーション逆探索ＩＤ」と一致している限りどのような番号であってもよい。
【００６７】
次に、「リレーション逆探索テーブル」３０６に「物件テーブル」の「物件ＩＤ」についてのレコードを追加する（ステップＳ５２１）。このレコードの「リレーション逆探索ＩＤ」は、１であるが、これは「テーブル列ノードテーブル」３０５の「リレーション逆探索ＩＤ」と一致するものである。このレコードの「テーブルＩＤ」は、１であるが、これは「テーブル列定義テーブル」３０２の第１レコードの「テーブルＩＤ」の値である。このレコードの「テーブル列ＩＤ」は、１であるが、これは「テーブル列定義テーブル」３０２の第１レコードの「テーブル列ＩＤ」の値である。
【００６８】
現在の列は「物件テーブル」の「物件ＩＤ」あり、既にルートノードであるので、ステップＳ５２２はスキップする。
【００６９】
次に、現在の列が通常の意味での参照列（外部キーが設定されている列）であるか否かを判断するが（ステップＳ５１６）、「テーブル列定義テーブル」３０２の第１レコードの外部キーは「偽」であるので、この判断結果は「偽」である。従って、ステップＳ５１７〜Ｓ５１９はスキップして、ステップＳ５１４に戻る。
【００７０】
次に、「テーブル列定義テーブル」３０２の第２及び第３レコード、すなわち「物件テーブル」の「物件名」及び「価格」について、「テーブル列定義テーブル」３０２の第１レコード、すなわち「物件テーブル」の「物件ＩＤ」、と同様に、処理が行われ、「テーブル列ノードテーブル」３０５の第３及び第４レコード及び「リレーション逆探索テーブル」３０６の第２及び第３レコードが追加される。
【００７１】
次に、「テーブル列ノードテーブル」３０５に「物件テーブル」の「メーカＩＤ」についてのレコードを追加する（ステップＳ５１４）。このレコードの「テーブル列ノードＩＤ」は、４であるが、これは通し番号（ステップＳ５１４を実行する度に増加する番号）である。また、このレコードの親ノードは、０であるが、これは初期値として与えられたものである。更に、このレコードの「親ノード内順番号」は４であるが、これは列ループ（ステップＳ５１３）の番号である。更に、「ノード区分」は、「物件列」であるが、これは「メーカＩＤ」が「物件テーブル」ものであることより求まる。このレコードの「リレーション逆探索ＩＤ」は、４であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」３０６の「リレーション逆探索ＩＤ」及び「リレーション逆探索リストテーブル」３０７の「リレーション逆探索ＩＤ」と一致している限りどのような番号であってもよい。
【００７２】
次に、「リレーション逆探索テーブル」３０６に「物件テーブル」の「メーカＩＤ」についてのレコードを追加する（ステップＳ５２１）。このレコードの「リレーション逆探索ＩＤ」は、４であるが、これは「テーブル列ノードテーブル」３０５の「リレーション逆探索ＩＤ」と一致するものである。このレコードの「テーブルＩＤ」は、１であるが、これは「テーブル列定義テーブル」３０２の第４レコードの「テーブルＩＤ」の値である。このレコードの「テーブル列ＩＤ」は、４であるが、これは「テーブル列定義テーブル」３０２の第４レコードの「テーブル列ＩＤ」の値である。
【００７３】
現在の列は「物件テーブル」の「メーカＩＤ」であり、既にルートノードであるので、ステップＳ５２２はスキップする。
【００７４】
次に、現在の列が通常の意味での参照列（外部キーが設定されている列）であるか否かを判断するが（ステップＳ５１６）、「テーブル列定義テーブル」３０２の第４レコードの外部キーは「真」であるので、この判断結果は「真」である。従って、ステップＳ５１７に進む。
【００７５】
ステップＳ５１７では、「テーブル列定義テーブル」３０２の第４レコードの「リレーションＩＤ」「１」を検索し、「リレーション定義テーブル」３０３から「リレーションＩＤ」「１」に対応する親テーブルの「テーブルＩＤ」「２」を検索する（ステップＳ５１７）。この親テーブルの「テーブルＩＤ」「２」が参照先のテーブルの「テーブルＩＤ」である。つぎに、「テーブルＩＤ」が「２」のテーブルである「メーカ車両テーブル」を対象テーブルとする（ステップＳ５１８）。
【００７６】
次に、「テーブル列ノードテーブル」３０５に「メーカ車両テーブル」の「メーカＩＤ」についてのレコードを追加する（ステップＳ５１４）。このレコードの「テーブル列ノードＩＤ」は、５であるが、これは通し番号（ステップＳ５１４を実行する度に増加する番号）である。また、このレコードの親ノードは、４であるが、これはステップＳ５１３を再帰的に呼び出す際の「リレーション逆探索ＩＤ」である。更に、このレコードの「親ノード内順番号」は１であるが、これは入れ子の列ループ（ステップＳ５１３）の番号である。更に、「ノード区分」は、「参照列」であるが、これは現在の「メーカＩＤ」が参照テーブルのものであることより求まる。このレコードの「リレーション逆探索ＩＤ」は、５であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」３０６の「リレーション逆探索ＩＤ」及び「リレーション逆探索リストテーブル」３０７の「リレーション逆探索ＩＤ」と一致している限りどのような番号であってもよい。
【００７７】
次に、「リレーション逆探索テーブル」３０６に「メーカ車両テーブル」の「メーカＩＤ」についてのレコードを追加する（ステップＳ５２１）。このレコードの「リレーション逆探索ＩＤ」は、５であるが、これは「テーブル列ノードテーブル」３０５の「リレーション逆探索ＩＤ」と一致するものである。このレコードの「テーブルＩＤ」は、２であるが、これは「テーブル列定義テーブル」３０２の第１７レコードの「テーブルＩＤ」の値である。このレコードの「テーブル列ＩＤ」は、１であるが、これは「テーブル列定義テーブル」３０２の第１７レコードの「テーブル列ＩＤ」の値である。
【００７８】
現在の列は「メーカ車両テーブル」の「メーカＩＤ」であり、ルートノードでないので、ステップＳ５２３に進む。
【００７９】
ステップＳ５２３では、「テーブル列ノードテーブル」３０５の現在のレコード（「リレーション逆探索ＩＤ」が５であるレコード）の「親ノードＩＤ」「４」を検索する。そして、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が５であるレコードの「テーブルＩＤ」「２」及び「テーブルＩＤ」が「２」であるテーブル「メーカ車両テーブル」の主キーが設定されている列の「テーブル列ＩＤ」「１」を検索し、これらを「リレーション列定義テーブル」３０４における「親テーブルＩＤ」及び「親テーブル列ＩＤ」の検索条件値とする。更に、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が４であるレコードの「テーブルＩＤ」「１」及び「テーブル列ＩＤ」「４」を検索し、これらを「リレーション定義テーブル」３０４における「子テーブルＩＤ」及び「子テーブル列ＩＤ」の検索条件値とする。更に、「リレーション列定義テーブル」３０４から「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」が「１」、「４」、「２」及び「１」であるレコードの「リレーションＩＤ」「１」を検索する（ステップＳ５２４）。
【００８０】
次に、「リレーション逆探索リストテーブル」３０７にレコードを追加する（ステップＳ５２５）。追加レコードの「リレーション逆探索ＩＤ」は、５であるが、これは、「テーブル列ノードテーブル」３０５における現在の「リレーション逆探索ＩＤ」及び「リレーション逆探索テーブル」３０６における現在の「リレーション逆探索ＩＤ」に一致するものである。追加レコードの「リレーション逆順番」は、１であるが、これはステップＳ５２２の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションＩＤ」は１であるが、これはステップＳ５２４で検索したものである。
【００８１】
現在、親テーブルが「物件テーブル」になっているので、ステップＳ５２２の繰返しを抜けて、ステップＳ５１６に進む。
【００８２】
ステップＳ５１６では、現在の列が通常の意味での参照列（外部キーが設定されている列）であるか否かを判断するが、「テーブル列定義テーブル」３０２の第１７レコードの外部キーは「真」であるので、この判断結果は「真」である。従って、ステップＳ５１７に進む。
【００８３】
ステップＳ５１７では、「テーブル列定義テーブル」３０２の第１７レコードの「リレーションＩＤ」「４」を検索し、「リレーション定義テーブル」３０３から「リレーションＩＤ」「４」に対応する親テーブルの「テーブルＩＤ」「３」を検索する（ステップＳ５１７）。この親テーブルの「テーブルＩＤ」「３」が参照先のテーブルの「テーブルＩＤ」である。つぎに、「テーブルＩＤ」が「３」のテーブルである「メーカテーブル」対象テーブルとする（ステップＳ５１８）。
【００８４】
次に、「テーブル列ノードテーブル」３０５「メーカテーブル」「メーカＩＤ」についてのレコードを追加する（ステップＳ５１４）。このレコードの「テーブル列ノードＩＤ」は、６であるが、これは通し番号（ステップＳ５１４を実行する度に増加する番号）である。また、このレコードの親ノードは、５であるが、これはステップＳ５１３を再帰的に呼び出す際の「リレーション逆探索ＩＤ」である。更に、このレコードの「親ノード内順番号」は１であるが、これは入れ子の列ループ（ステップＳ５１３）の番号である。更に、「ノード区分」は、「参照列」であるが、これは現在の「メーカＩＤ」が参照テーブルのものであることより求まる。このレコードの「リレーション逆探索ＩＤ」は、６であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」３０６の「リレーション逆探索ＩＤ」及び「リレーション逆探索リストテーブル」３０７の「リレーション逆探索ＩＤ」と一致している限りどのような番号であってもよい。
【００８５】
次に、「リレーション逆探索テーブル」３０６に「メーカテーブル」の「メーカＩＤ」についてのレコードを追加する（ステップＳ５２１）。このレコードの「リレーション逆探索ＩＤ」は、６であるが、これは「テーブル列ノードテーブル」３０５の「リレーション逆探索ＩＤ」と一致するものである。このレコードの「テーブルＩＤ」は、３であるが、これは「テーブル列定義テーブル」３０２の第２０レコードの「テーブルＩＤ」の値である。このレコードの「テーブル列ＩＤ」は、１であるが、これは「テーブル列定義テーブル」３０２の第２０レコードの「テーブル列ＩＤ」の値である。
【００８６】
現在の列は「メーカテーブル」の「メーカＩＤ」であり、ルートノードでないので、ステップＳ５２３に進む。
【００８７】
ステップＳ５２３では、「テーブル列ノードテーブル」３０５の現在のレコード（「リレーション逆探索ＩＤ」が６であるレコード）の「親ノードＩＤ」「５」を検索する。そして、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が６であるレコードの「テーブルＩＤ」「３」及び「テーブルＩＤ」が３であるテーブル「メーカテーブル」の主キーが設定されている列の「テーブル列ＩＤ」「１」を検索し、これらを「リレーション列定義テーブル」３０４における「親テーブルＩＤ」及び「親テーブル列ＩＤ」の検索条件値とする。更に、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が５であるレコードの「テーブルＩＤ」「２」及び「テーブル列ＩＤ」「１」を検索し、これらを「リレーション定義テーブル」３０４における「子テーブルＩＤ」及び「子テーブル列ＩＤ」の検索条件値とする。更に、「リレーション列定義テーブル」３０４から「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」が「２」、「１」、「３」及び「１」であるレコードの「リレーションＩＤ」「４」を検索する（ステップＳ５２４）。
【００８８】
次に、「リレーション逆探索リストテーブル」３０７にレコードを追加する（ステップＳ５２５）。追加レコードの「リレーション逆探索ＩＤ」は、６であるが、これは、「テーブル列ノードテーブル」３０５における現在の「リレーション逆探索ＩＤ」及び「リレーション逆探索テーブル」３０６における現在の「リレーション逆探索ＩＤ」に一致するものである。追加レコードの「リレーション逆順番」は、１であるが、これはステップＳ５２２の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションＩＤ」は４であるが、これはステップＳ５２４で検索したものである。
【００８９】
次に、現在の列は「メーカ車両テーブル」の「メーカＩＤ」であり、ルートノードでないので、ステップＳ５２３に戻る。
【００９０】
ステップＳ５２３では、「テーブル列ノードテーブル」３０５の現在のレコード（「リレーション逆探索ＩＤ」が５であるレコード）の「親ノードＩＤ」「４」を検索する。そして、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が５であるレコードの「テーブルＩＤ」「２」及び「テーブルＩＤ」が２であるテーブル「メーカ車両テーブル」の主キーが設定されている列の「テーブル列ＩＤ」「１」を検索し、これらを「リレーション列定義テーブル」３０４における「親テーブルＩＤ」及び「親テーブル列ＩＤ」の検索条件値とする。更に、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が４であるレコードの「テーブルＩＤ」「１」及び「テーブル列ＩＤ」「４」を検索し、これらを「リレーション定義テーブル」３０４における「子テーブルＩＤ」及び「子テーブル列ＩＤ」の検索条件値とする。更に、「リレーション列定義テーブル」３０４から「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」が「１」、「４」、「２」及び「１」であるレコードの「リレーションＩＤ」「１」を検索する（ステップＳ５２４）。
【００９１】
次に、「リレーション逆探索リストテーブル」３０７にレコードを追加する（ステップＳ５２５）。追加レコードの「リレーション逆探索ＩＤ」は、６であるが、これは、「テーブル列ノードテーブル」３０５における現在の「リレーション逆探索ＩＤ」及び「リレーション逆探索テーブル」３０６における現在の「リレーション逆探索ＩＤ」に一致するものである。追加レコードの「リレーション逆順番」は、２であるが、これはステップＳ５２２の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションＩＤ」は１であるが、これはステップＳ５２４で検索したものである。
【００９２】
現在、親テーブル「物件テーブル」なっているので、ステップＳ５２２の繰返しを抜けて、ステップＳ５１６に進む。
【００９３】
ステップＳ５１６では、現在の列が通常の意味での参照列（外部キーが設定されている列）であるか否かを判断するが、「テーブル列定義テーブル」３０２の第２０レコードの外部キーは「偽」であるので、この判断結果は「偽」である。従って、ステップＳ５１７〜Ｓ５１９はスキップして、ステップＳ５１４に戻る。
【００９４】
次に、「テーブル列ノードテーブル」３０５に「メーカテーブル」の「メーカ名」についてのレコードを追加する（ステップＳ５１４）。このレコードの「テーブル列ノードＩＤ」は、７であるが、これは通し番号（ステップＳ５１４を実行する度に増加する番号）である。また、このレコードの親ノードは、５であるが、これはステップＳ５１３を再帰的に呼び出す際の「リレーション逆探索ＩＤ」である。更に、このレコードの「親ノード内順番号」は２であるが、これは入れ子の列ループ（ステップＳ５１３）の番号である。更に、「ノード区分」は、「参照列」であるが、これは現在の「メーカ名」が参照テーブルのものであることより求まる。このレコードの「リレーション逆探索ＩＤ」は、７であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」３０６の「リレーション逆探索ＩＤ」及び「リレーション逆探索リストテーブル」３０７の「リレーション逆探索ＩＤ」と一致している限りどのような番号であってもよい。
【００９５】
次に、「リレーション逆探索テーブル」３０６に「メーカテーブル」の「メーカ名」についてのレコードを追加する（ステップＳ５２１）。このレコードの「リレーション逆探索ＩＤ」は、７であるが、これは「テーブル列ノードテーブル」３０５の「リレーション逆探索ＩＤ」と一致するものである。このレコードの「テーブルＩＤ」は、３であるが、これは「テーブル列定義テーブル」３０２の第２１レコードの「テーブルＩＤ」の値である。このレコードの「テーブル列ＩＤ」は、２であるが、これは「テーブル列定義テーブル」３０２の第２１レコードの「テーブル列ＩＤ」の値である。
【００９６】
現在の列は「メーカテーブル」の「メーカ名」であり、ルートノードでないので、ステップＳ５２３に進む。
【００９７】
ステップＳ５２３では、「テーブル列ノードテーブル」３０５の現在のレコード（「リレーション逆探索ＩＤ」が７であるレコード）の「親ノードＩＤ」「５」を検索する。そして、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が７であるレコードの「テーブルＩＤ」「３」及び「テーブルＩＤ」が３であるテーブル「メーカテーブル」の主キーが設定されている列の「テーブル列ＩＤ」「１」を検索し、これらを「リレーション列定義テーブル」３０４における「親テーブルＩＤ」及び「親テーブル列ＩＤ」の検索条件値とする。更に、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が５であるレコードの「テーブルＩＤ」「２」及び「テーブル列ＩＤ」「１」を検索し、これらを「リレーション定義テーブル」３０４における「子テーブルＩＤ」及び「子テーブル列ＩＤ」の検索条件値とする。更に、「リレーション列定義テーブル」３０４から「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」が「２」、「１」、「３」及び「１」であるレコードの「リレーションＩＤ」「４」を検索する（ステップＳ５２４）。
【００９８】
次に、「リレーション逆探索リストテーブル」３０７にレコードを追加する（ステップＳ５２５）。追加レコードの「リレーション逆探索ＩＤ」は、７であるが、これは、「テーブル列ノードテーブル」３０５における現在の「リレーション逆探索ＩＤ」及び「リレーション逆探索テーブル」３０６における現在の「リレーション逆探索ＩＤ」に一致するものである。追加レコードの「リレーション逆順番」は、１であるが、これはステップＳ５２２の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションＩＤ」は４であるが、これはステップＳ５２４で検索したものである。
【００９９】
次に、現在の列「メーカ車両テーブル」「メーカＩＤ」であり、ルートノードでないので、ステップＳ５２３に戻る。
【０１００】
ステップＳ５２３では、「テーブル列ノードテーブル」３０５の現在のレコード（「リレーション逆探索ＩＤ」が７であるレコード）の「親ノードＩＤ」「５」を検索する。そして、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が７であるレコードの「テーブルＩＤ」「３」及び「テーブルＩＤ」が３であるテーブル「メーカテーブル」の主キーが設定されている列の「テーブル列ＩＤ」「１」を検索し、これらを「リレーション列定義テーブル」３０４における「親テーブルＩＤ」及び「親テーブル列ＩＤ」の検索条件値とする。更に、「リレーション逆探索テーブル」３０６から「リレーション逆探索ＩＤ」が５であるレコードの「テーブルＩＤ」「２」及び「テーブル列ＩＤ」「１」を検索し、これらを「リレーション定義テーブル」３０４における「子テーブルＩＤ」及び「子テーブル列ＩＤ」の検索条件値とする。更に、「リレーション列定義テーブル」３０４から「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」が「２」、「１」、「３」及び「１」であるレコードの「リレーションＩＤ」「１」を検索する（ステップＳ５２４）。
【０１０１】
次に、「リレーション逆探索リストテーブル」３０７にレコードを追加する（ステップＳ５２５）。追加レコードの「リレーション逆探索ＩＤ」は、７であるが、これは、「テーブル列ノードテーブル」３０５における現在の「リレーション逆探索ＩＤ」及び「リレーション逆探索テーブル」３０６における現在の「リレーション逆探索ＩＤ」に一致するものである。追加レコードの「リレーション逆順番」は、２であるが、これはステップＳ５２２の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションＩＤ」は１であるが、これはステップＳ５２４で検索したものである。
【０１０２】
現在、親テーブル「物件テーブル」なっているので、ステップＳ５２２の繰返しを抜けて、ステップＳ５１６に進む。
【０１０３】
ステップＳ５１６では、現在の列が通常の意味での参照列（外部キーが設定されている列）であるか否かを判断するが、「テーブル列定義テーブル」３０２の第２１レコードの外部キーは「偽」であるので、この判断結果は「偽」である。従って、ステップＳ５１７〜Ｓ５１９はスキップする。
【０１０４】
そして「メーカテーブル」対象テーブルとした列ループ（ステップＳ５１３）は終了したので、対象テーブル「メーカ車両テーブル」戻して、「メーカ車両テーブル」についての第２回目のループに入る。
【０１０５】
以下、同様にして処理を続け、「テーブル列ノードテーブル」３０５、「リレーション逆探索テーブル」３０６及び「リレーション逆探索リストテーブル」３０７を完成する。
【０１０６】
次に、フィルタ条件入力手段６０３が下記の方法によりフィルタ条件を入力する。
【０１０７】
フィルタの条件をユーザに入力させるために図２１に示す「フィルタ作成ダイアログ画面」１３１を表示する。「フィルタ作成ダイアログ画面」１３１は、フィルタ名を入力するためのテキストボックス１３２、対象データを絞り込むか否かを決定するためのチェックボックス１３３、対象データを絞り込む場合に絞り込み条件を設定するための「対象データ絞り込み設定ダイアログ画面」１４１（図２２）を呼び出すための「絞り込み設定…」ボタン１３４、分類に使用する列を設定するためのコンボボックス１３５、フォルダを自分で設定するか否かを決定するためのチェックボックス１３６、フォルダを自分で設定する場合にフォルダを設定するための「フォルダ設定ダイアログ画面」１５１（図２３）を呼び出すための「フォルダ設定…」ボタン１３７、物件をソートするか否かを決定するためのチェックボックス１３８、物件をソートする場合にソート条件を設定するための「ソートダイアログ画面」１６１（図２４）を呼び出すための「ソート条件設定…」ボタン１３９を備える。
【０１０８】
フィルタ名を入力するためのテキストボックス１３２には、ユーザが任意のフィルタ名を入力する。図２１の例では、フィルタ名は「エリア・販売店で分類」となっている。
【０１０９】
対象データを絞り込まない場合には、物件データベースに格納されている全ての物件データが母集合となる。対象データを絞り込む場合には、物件テーブルに格納されている物件データの一部が母集合となる。ユーザは、対象データを絞り込みたい場合には、チェックボックス１３３をチェックし、「絞り込み設定…」ボタン１３４を押す。すると、図２２に示す「対象データ絞り込み設定ダイアログ画面」１４１が表示される。
【０１１０】
ユーザが、表示されている「条件」欄１４２のうちのいずれかを選択する。図２２の例では、ユーザが、左上隅の欄１４２−１を選択している。次に、ユーザが「抽出条件に使用する項目」コンボボックス１４３の矢印ボタンを押すと、図１７に示すような階層構造で表した全テーブルの全列（「物件ＩＤ」〜「サムネイル画像」、「メーカＩＤ」〜「車両名」、…、「販売店ＩＤ」〜「備考」）のプルダウンリストが表示される。なお、図１７に示すような階層構造のリストは、テーブル列ノードテーブル３０５、リレーション逆探索テーブル３０６及びテーブル列定義テーブル３０２を基に作成できる。すなわち、テーブル列ノードテーブル３０５の各レコードに記述されている「リレーション逆探索ＩＤ」に対応したテーブルの列名が、テーブル列ノードテーブル３０５の「親ノードＩＤ」によって示される階層構造に従って、図１７に示すような階層構造のリストに表示されるが、その列名は、リレーション逆探索テーブル３０６の「テーブル列ＩＤ」と同一の「テーブル列ＩＤ」を有するレコードの「列名（日本語表記）」をテーブル列定義テーブル３０２から検索して得たものである。ユーザはプルダウンリストから所望の列を選択する。図２２の例では、ユーザがメーカ名を選択した後のコンボボックス１４３を示している。そして、ユーザは、抽出条件のラジオボタングループ１４４のうちから所望のラジオボタンを選択する。図２２の例では、ユーザは抽出条件として「値指定」１４４−１を選択している。値指定の場合には、コンボボックス１４５において「＝（等しい）」、「≠（等しくない）」、…、「空でない」のうちの何れかを選択し、例えば、「＝（等しい）」を選択したときには、等しくなる値をテキストボックス１４６に入力する。なお、テキストボックス１４６に入力する文字としてワイルドカードを用いることも可能であり、この場合には、前方一致、後方一致又は部分一致を設定することができる。図２２の例では、「＝（等しい）」を選択し、等しくなる値として「ＴＯＹＯＨＡＳＨＩ」を入力している。次に、ユーザが「追加」ボタン１４７を押すと、設定した条件が選択している欄１４２に入力される。図２２の例では、欄１４２−１に条件として「メーカ名＝’ＴＯＹＯＨＡＳＨＩ’」が入力されている。ユーザは、他の欄１４２にも同様に条件を設定し、これらの条件をコンボボックス１４８の値を「ＡＮＤ」又は「ＯＲ」に設定することにより結合する。このようにして対象データ絞り込み条件が設定されたならば、ユーザは「ＯＫ」ボタン１４９を押し、これにより対象データ絞り込み条件の設定が終了する。
【０１１１】
図２１の例では、フィルタ名として「エリア・販売店で分類」をテキストボックスに入力しているように、分類を２階層構造とし、階層１で「エリア名」により分類し、階層２で「販売店名」により分類することとしている。コンボボックス１３５の矢印ボタンを押すと、コンボボックス１４３の場合と同様に、図１７に示すような階層構造で表した全テーブルの全列（「物件ＩＤ」〜「サムネイル画像」、「メーカＩＤ」〜「車両名」、…、「販売店ＩＤ」〜「備考」）のプルダウンリストが表示される。ユーザはプルダウンリストから所望の列を選択する。図２１の例では、ユーザは階層１のコンボボックス１３５−１で「エリア名」を選択し、階層２のコンボボックス１３５−２で「販売店名」を選択する。
【０１１２】
「フォルダを自分で設定する」チェックボックス１３６をチェックしないと、分類に使用する列の値が重複するレコードがグループ化され、検索条件の下にグループ毎にフォルダが作成される（フォルダについては後述する。）。例えば、分類に使用する列が「メーカ名」である場合には「物件テーブル」のレコードは、メーカ毎にグループ化され、メーカ毎のフォルダが作成される。
【０１１３】
一方、ユーザは、フォルダを自分で設定したい場合には、「フォルダを自分で設定する」チェックボックス１３６をチェックして、「フォルダ設定…」ボタン１３７を押す。すると、図２３に示すような「フォルダ設定ダイアログ画面」１５１が表示される。「フォルダ設定ダイアログ画面」１５１は「対象データ絞り込み設定ダイアログ画面」１４１と同様の構成の部分を有し、ユーザは、対象データ絞り込み条件を「対象データ絞り込み設定ダイアログ画面」１４１に入力する場合と同様の操作により、フォルダ設定条件を「フォルダ設定ダイアログ画面」１５１に入力する。入力した各フォルダのフォルダ設定条件は、左側のリストボックス１５２に表示される。図２３の例では、２つのフォルダ（「ナガシマ」フォルダ及び「ＭＡＸ」フォルダ）が作成済みの状態を示している。また、「条件」欄１５３には、「ナガシマ」フォルダの設定条件が表示されている。ユーザは、所望のフォルダを全て作成したならば、「ＯＫ」ボタン１５４を押して、図２１に示す「フィルタ作成ダイアログ画面」１３１に戻る。
【０１１４】
ユーザは、物件をソートしたい場合には、「物件をソートする」チェックボックス１３８をチェックし、「ソート条件設定…」ボタン１３９を押す。すると、図２４に示すような「ソートダイアログ画面」１６１が表示される。リストボックス１６２には「物件テーブル」全列が表示される。このリストボックス１６２の内容は、テーブル列定義テーブル３０２を基に作成できる。ユーザは、ソートに利用したい列を選択して、「＞」ボタン１６３を押すことにより、その列をリストボックス１６４にコピーする。ユーザは、ソートに利用したい他の列があれば、その列を選択し、「＞」ボタン１６３を押して、その列をリストボックス１６４にコピーする。更に、ユーザは、ラジオボタングループ１６５のうちの「昇順」ボタン又は「降順」ボタンを押して、ソートの順序を指定する。ユーザは、このようにして、ソートに利用したい列及びソート順序が決定したならば、「ＯＫ」ボタン１６６を押して、図２１に示す「フィルタ作成ダイアログ画面」１３１に戻る。
【０１１５】
以上のようにして、フィルタ条件の入力を完了する。
【０１１６】
次に、作成したフィルタ条件の内容を反映する「フィルタテーブル」３０８、「フィルタ分類列テーブル」３０９、「フィルタ分類フォルダテーブル」３１０、「条件テーブル」３１１及び「条件詳細テーブル」３１２をフィルタテーブル等作成手段６０４が作成する。テーブル３０８〜３１２を図２５に示す。
【０１１７】
「フィルタテーブル」３０８の列は、「フィルタＩＤ」、「フィルタ名」、「全データ対象」及び「条件ＩＤ」である。「フィルタＩＤ」は、各フィルタ毎に固有のＩＤであり、主キーである。「フィルタ名」は、各フィルタの名称である。「全対象データ」は、フィルタが物件テーブルの全レコードを対象とするか否かを示し、真のときにはフィルタが物件データの全レコードを対象とすることを示し、偽のときにはフィルタが物件データのレコードうち絞り込み条件により絞り込まれたもののみを対象とすることを示す。「条件ＩＤ」は、「全対象データ」の値が偽であるとき（すなわち、絞り込むとき）に、「条件テーブル」のレコードのうちの当該絞り込み条件に対応するものの「条件ＩＤ」の値を指し示す外部キーである。図２５の例では、「フィルタＩＤ」の値は、「１」であり、「フィルタ名」の値は、「フィルタ作成ダイアログ画面」１３１（図２１）で設定した「エリア・販売店で分類」であり、「全データ対象」の値は、「フィルタ作成ダイアログ画面」１３１（図２１）の「対象データを絞り込む」チェックボックスをチェックしたのに対応して「偽」である。「条件ＩＤ」の値は、「１」であり、「条件テーブル」３１１の第１レコードを指し示す。
【０１１８】
「フィルタ分類列テーブル」３０９の列は、「フィルタＩＤ」、「階層番号」、「リレーション逆探索ＩＤ」及び「分類条件あり／なし」である。「フィルタＩＤ」は、「フィルタテーブル」３０８の「フィルタＩＤ」に対応するものである。「階層番号」は、「フィルタ作成ダイアログ画面」１３１（図２１）の分類に使用する列を設定するためのコンボボックス１３５の階層番号である。コンボボックス１３５の上から順に１、２、…の「階層番号」が付けられる。図６の例では、２つの階層（階層１の「エリア名」及び階層２の「販売店名」）を設定したのに対応して、「階層番号」が１のレコードと２のレコードがある。「フィルタＩＤ」と「階層番号」の連結キーが主キーとなる。「リレーション逆探索ＩＤ」は、階層に設定された列の「リレーション逆探索ＩＤ」であり、「テーブル列ノードテーブル」３０５（図１５）から検索される。図２５の例では、階層１に「エリア名」を設定したのに対応して、階層１のレコードの「リレーション逆探索ＩＤ」の値は、「２６」であり、階層２に「販売店名」を設定したのに対応して、階層２のレコードの「リレーション逆探索ＩＤ」の値は、「２９」である（図１５参照）。「分類条件あり／なし」は、当該階層に分類条件が設定されたか否かを示す。「フィルタ作成ダイアログ画面」１３１（図２１）の「フォルダを自分で設定する」チェックボックス１３６がチェックされていれば「真」であり、チェックされていなければ「偽」である。図２１の例では、階層２の「販売店名」のチェックボックスのみがチェックされているので、階層１のレコードの「分類条件あり／なし」が「偽」であり、階層２のレコードの「分類あり／なし」が「真」である。
【０１１９】
「フィルタ分類フォルダテーブル」３１０の列は、「フィルタＩＤ」、「階層番号」、「フォルダＩＤ」、「順番号」、「フォルダ名」及び「条件ＩＤ」である。「フィルタＩＤ」は、「フィルタ分類列テーブル」３０９の「フィルタＩＤ」に対応するものである。「階層番号」は、「フィルタ分類列テーブル」３０９の「階層番号」に対応するものである。「フォルダＩＤ」は、「フィルタＩＤ」及び「階層番号」の組合せが同一のレコードの識別番号である。「順番号」は、「フォルダＩＤ」及び「階層番号」の組合せが同一のレコードの通し番号である。「フィルタ分類フォルダテーブル」３１０にレコードを追加する段階では、「フォルダＩＤ」と「順番号」は等しく、図２５の例でもそうなっているが、フォルダの削除を行うと、「フォルダＩＤ」には抜けが生じる。従って、一般に「フォルダＩＤ」は、「順番号」と等しいとは限らない。「フィルタＩＤ」、「階層番号」及び「フォルダＩＤ」の連結キー又は「フィルタＩＤ」、「階層番号」及び「順番号」の連結キーが主キーとなる。「フォルダ名」は、フォルダの名称であり、「フォルダ設定ダイアログ画面」１５１（図２３）のリストボックス１５２に設定したものである。「条件ＩＤ」は、「条件テーブル」３１１の「条件ＩＤ」を指し示すものであり、外部キーである。
【０１２０】
「条件テーブル」３１１の列は、「条件ＩＤ」、「条件１（）内演算子」、「条件２（）内演算子」、「条件３（）内演算子」、「条件４（）内演算子」、「条件１−２間演算子」、「条件２−３間演算子」及び「条件３−４間演算子」である。「条件ＩＤ」は各レコード毎に固有の番号であり、主キーである。「条件１（）内演算子」〜「条件３−４間演算子」は、「対象データ絞り込み設定ダイアログ画面」１４１（図２２）のコンボボックス１４８又は「フォルダ設定ダイアログ画面」１５１（図２３）のコンボボックス１５５に設定した論理演算子である。つまり、レコードが絞り込み条件についてのものであれば、「条件１（）内演算子」〜「条件３−４間演算子」は、「対象データ絞り込み設定ダイアログ画面」１４１のコンボボックス１４８に設定した論理演算子であり、レコードがフォルダ設定条件についてのものであれば、「条件１（）内演算子」〜「条件３−４間演算子」は、「フォルダ設定ダイアログ画面」１５１のコンボボックス１５５に設定した論理演算子である。
【０１２１】
「条件詳細テーブル」３１２の列は、「条件ＩＤ」、「条件番号」、「条件サブ番号」、「（）内順番号」、「リレーション逆探索ＩＤ」、「条件区分」、「範囲指定から」、「範囲指定まで」、「値指定」、「値指定比較演算子」、「含む文字列」、「含まない文字列」及び「ＹＥＳ／ＮＯ」である。「条件ＩＤ」は、「条件テーブル」の「条件ＩＤ」に対応するものである。「条件番号」は、「対象データ絞り込み設定ダイアログ画面」１４１（図２２）又は「フォルダ設定ダイアログ画面」１５１（図２３）で設定した条件の行番号である。「条件サブ番号」は、「対象データ絞り込み設定ダイアログ画面」１４１（図２２）又は「フォルダ設定ダイアログ画面」１５１（図２３）で設定した条件の各行における条件式の列番号である。「（）内順番号」は、「対象データ絞り込み設定ダイアログ画面」１４１（図２２）又は「フォルダ設定ダイアログ画面」１５１（図２３）で設定した条件の各行における条件式の通し番号である。条件を入力した当初は「条件サブ番号」と「（）内順番号」は等しく、図２５もその状態を示しているが、条件を削除すると、「条件サブ番号」には抜けが生じる。従って、「条件サブ番号」と「（）内順番号」は、一般的には等しいとは限らない。「条件ＩＤ」、「条件番号」及び「条件サブ番号」の連結キー又は「条件ＩＤ」、「条件番号」及び「（）内順番号」の連結キーが主キーとなる。「リレーション逆探索ＩＤ」は、条件式が設定された列の「リレーション逆探索ＩＤ」であり、「テーブル列ノードテーブル」３０５（図１５）から検索される。図２５の例では、「メーカ名＝’ＴＯＹＯＨＡＳＨＩ’」なる条件が設定された第１レコードの「リレーション逆探索ＩＤ」は、「メーカ名」に対応する７であり、「車両名＝’アスティマ’」なる条件が設定された第２レコードの「リレーション逆探索ＩＤ」は、「車両名」に対応する９であり、「車両名＝’ローラ’」なる条件が設定された第３レコードの「リレーション逆探索ＩＤ」は、「車両名」に対応する９であり、「販売店名＝’ナガシマ入間店’」なる条件が設定された第４レコードの「リレーション逆探索ＩＤ」は、「販売店名」に対応する２９であり、「販売店名＝’ナガシマ大宮店’」なる条件が設定された第５レコードの「リレーション逆探索ＩＤ」は、「販売店名」に対応する２９であり、「販売店名＝’ＭＡＸ’」なる条件が設定された第６レコードの「リレーション逆探索ＩＤ」は、「販売店名」に対応する２９である。「条件区分」は、条件の種類が「１（範囲指定）」、「２（値指定）」、「３（文字列を含む）」、「４（文字列を含まない）」及び「５（ＹＥＳ／ＮＯ）」のうちのどれであるかを示す。これは、「対象データ絞り込み設定ダイアログ画面」１４１（図２２）のラジオボタングループ１４４又はフォルダ設定ダイアログ画面（図２３）のラジオボタングループ１５６で選択したラジオボタンを反映する。「範囲指定から」〜「ＹＥＳ／ＮＯ」には、条件の種類に応じた条件の値が設定される。図２５の例では、「対象データ絞り込み設定ダイアログ画面１４１」（図２２）及び「フォルダ設定ダイアログ画面」１５１（図２３）で、設定した全条件要素について条件種類を「２（値指定）」とし、値指定比較演算子を「＝（等しい）」としているのに対応して、第１レコードから第６レコードの「値指定」に値（「ＴＯＹＯＨＡＳＨＩ」、「アスティマ」、「ローラ」、「ナガシマ入間店」及び「ＭＡＸ」）が入れられ、「値指定比較演算子」に「＝」が入れられている。
【０１２２】
次に、ＳＱＬ文作成手段６０５が行う各フォルダに関連付けるＳＱＬ文を作成する方法について説明する。
【０１２３】
図２６を参照すると、まず、「フィルタテーブル」３０８（図２５）から１レコードを取得する（ステップＳ５３１）。次に、ＳＱＬ文を初期化する（ステップＳ５３２）。初期化では、ＳＱＬ文のうちの以下の部分を作成する。
【０１２４】
ｓｅｌｅｃｔ  物件テーブル．＊
ｆｒｏｍ  メーカテーブル，
メーカ車両テーブル，
物件テーブル
次に、取得したレコードの「全データ対象」の値をみることにより、対象データを絞り込むか否かを判断する（ステップＳ５３３）。「全データ対象」の値が「偽」であれば、対象データを絞り込むと判断し、ステップＳ５３４に進む。「全データ対象」の値が「真」であれば、対象データを絞り込まないと判断し、ステップＳ５３４をスキップして、ステップＳ５３５に進む。
【０１２５】
ステップＳ５３４では、「条件詳細テーブル」３１２（図２５）を基にＳＱＬ文のｗｈｅｒｅ句を作成する。図２７は、ステップＳ５３４で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。ステップＳ５３４の詳細については後述する。
【０１２６】
ステップＳ５３５では、フィルタのルートとなるフォルダ（すなわち、階層が０のフォルダ）を作成する。次に、階層番号を０にセットして（ステップＳ５３６）、階層１以下のフィルタフォルダを作成する（ステップＳ５３７）。ステップＳ５３７の詳細については後述する。
【０１２７】
次に、ステップＳ５３４の詳細について説明する。
【０１２８】
図２８を参照すると、まず、ステップＳ５３１で取得したレコードの条件ＩＤと同一のＩＤを有するレコードを「条件詳細テーブル」３１２（図２５）から検索する（ステップＳ５４１）。図２５の例では、３つのレコード（第１レコード〜第３レコード）が検索される。次に、「条件詳細テーブル」３１２（図２５）から検索された全てのレコードについてステップＳ５４３〜Ｓ５４７を繰り返す（ステップＳ５４２）。
【０１２９】
ステップＳ５４３では、「条件詳細テーブル」３１２の当該レコードの「リレーション逆探索ＩＤ」と同一の「リレーション逆探索ＩＤ」を有するレコードを「リレーション逆探索テーブル」３０６（図１６）から検索する。「条件詳細テーブル」３１２の第１レコードについて処理をしているときには、このレコードの「リレーション逆探索ＩＤ」の値は「７」であるので、「リレーション逆探索テーブル」３０６の第７レコードが検索される。次に、ステップＳ５４３で検索したレコードの「テーブルＩＤ」と同一の「テーブルＩＤ」を有するレコードを「テーブル定義テーブル」３０１（図５）から検索し、そのレコードの「テーブル名（日本語表記）」の値を取得する（ステップＳ５４４）。ステップＳ５４３で検索したレコードが第７レコードであるときには、そのレコードの「テーブルＩＤ」は「３」であるので、「メーカテーブル」が取得される。次に、ステップＳ５４３で検索したレコードの「テーブルＩＤ」及び「テーブル列ＩＤ」と同一の「テーブルＩＤ」及び「テーブル列ＩＤ」を有するレコードを「テーブル列定義テーブル」３０２（図６）から検索し、そのレコードの「列名（日本語表記）」を取得する（ステップＳ５４５）。ステップＳ５４３で検索したレコードが第７レコードであるときには、そのレコードの「テーブルＩＤ」は「３」であり「テーブル列ＩＤ」は「２」であるので、「メーカ名」が取得される。次に、ステップＳ５４４及びＳ５４５で取得した「テーブル名（日本語表記）」及び「列名（日本語表記）」、条件テーブル３１１の内容並びに「条件詳細テーブル」３１２（図２５）の「条件区分」〜「ＹＥＳ／ＮＯ」の内容を基にしてＳＱＬ文のｗｈｅｒｅ句を作成する（ステップＳ５４６）。図２５に示す「条件詳細テーブル」３１２の第１レコードの場合には、ｗｈｅｒｅ句は、
（メーカテーブル．メーカ名＝’ＴＯＹＯＨＡＳＨＩ’）
となる。同様に、図２５に示す「条件詳細テーブル」３１２の第２レコード及び第３レコードの場合には、
（メーカ車両テーブル．車両名＝’アスティマ’）
（メーカ車両テーブル．車両名＝’ローラ）
となる。これらをまとめたものを図２９に示す。下線部が作成されたｗｈｅｒｅ句である。但し、ステップＳ５４２のループを繰り返すたびに一句ずつ作成される。
【０１３０】
次に、リレーションを逆探索してＳＱＬ文のｗｈｅｒｅ句に条件を追加する（ステップＳ５４７）。
【０１３１】
ステップＳ５４７の詳細について図３０を参照して説明する。
【０１３２】
まず、「条件詳細テーブル」３１２（図２５）の当該レコードの「リレーション逆探索ＩＤ」と同一の「リレーション逆探索ＩＤ」を有するレコードを「リレーション逆探索リストテーブル」３０７（図１８）から検索する（ステップＳ５５１）。図２５の「条件詳細テーブル」３１２の第１レコードの場合には、「リレーション逆探索ＩＤ」が「７」であるので、「リレーション逆探索リストテーブル」３０７の第４レコード及び第５レコードが検索される。次に、ステップＳ５５３〜Ｓ５５４をステップＳ５５１で検索されたレコードについて繰り返す（ステップＳ５５２）。
【０１３３】
ステップＳ５５３では、「リレーション逆探索リストテーブル」３０７から検索されたレコードのうちの当該レコードの「リレーションＩＤ」を取得し、この「リレーションＩＤ」と同一の「リレーションＩＤ」を有するレコードを「リレーション列定義テーブル」３０４（図８）から検索する。当該レコードが「リレーション逆探索リストテーブル」３０７（図１８）の第４レコードであるときには、「リレーションＩＤ」は「４」であるので、「リレーション列定義テーブル」３０４（図８）の第５レコードが検索される。この第５レコードの「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」は、それぞれ、「２」、「１」、「３」及び「１」である。そこで、ステップＳ５４４及びＳ５４５の場合と同様に、子テーブルの「テーブル名（日本語表記）」、子テーブルの「列名（日本語表記）」、親テーブルの「テーブル名（日本語表記）」及び親テーブルの「列名（日本語表記）」を「テーブル定義テーブル」３０１及び「テーブル列定義テーブル」３０２から検索する。「リレーション列定義テーブル」３０４（図８）の第５レコードの場合には、子テーブルの「テーブル名（日本語表記）」、子テーブルの「列名（日本語表記）」、親テーブルの「テーブル名（日本語表記）」及び親テーブルの「列名（日本語表記）」は、それぞれ、「メーカ車両テーブル」、「メーカＩＤ」、「メーカテーブル」及び「メーカＩＤ」である。次に、ステップＳ５５３で検索された子テーブルの「テーブル名（日本語表記）」、子テーブルの「列名（日本語表記）」、親テーブルの「テーブル名（日本語表記）」及び親テーブルの「列名（日本語表記）」を基にＳＱＬ文のｗｈｅｒｅ句を追加する（ステップＳ５５４）。ここでいうｗｈｅｒｅ句のことを一般的に等結合の結合条件をいう。「リレーションＩＤ」が４のリレーションについては、このｗｈｅｒｅ句は、
メーカテーブル．メーカＩＤ＝メーカ車両テーブル．メーカＩＤ
である。
【０１３４】
「リレーション逆探索ＩＤ」が「７」であるときのステップＳ５５２の２度目のループにおいて、「リレーション逆探索ＩＤ」及び「リレーション逆順番」が、それぞれ、「７」及び「２」である「リレーション逆探索リストテーブル」３０７（図１８）のレコードの「リレーションＩＤ」は「１」であるが、「リレーションＩＤ」が「１」である「リレーション列定義テーブル」３０４（図８）のレコードは２つ（第１レコード及び第２レコード）であるので、この２つのレコードについてｗｈｅｒｅ句を作成する。これらのｗｈｅｒｅ句は、
メーカ車両テーブル．メーカＩＤ＝物件テーブル．メーカＩＤ
及び
メーカ車両テーブル．車両ＩＤ＝物件テーブル．車両ＩＤ
である。これらをまとめたものを図３１に示す。下線部が追加されたｗｈｅｒｅ句である。但し、ステップＳ５５２の第１ループを実行したときに下線部第１行が作成され、ステップＳ５５２の第２ループを実行したときに下線部第２行が作成される。
【０１３５】
「条件詳細テーブル」３１２（図２５）の第２レコード及び第３レコードについてのステップＳ５４２についての繰返しにおいては、「リレーション逆探索ＩＤ」が「９」である。「リレーション逆探索ＩＤ」が「９」である「リレーション逆探索リストテーブル」３０７（図１８）のレコードの「リレーションＩＤ」は「１」であり、これについてのステップＳ５５２の処理は既に行ったので、これを行う必要はない。
【０１３６】
このようにして、図２７に示すＳＱＬ文が作成される。
【０１３７】
次に、ステップＳ５３７（図２６）の処理について詳細に説明する。
【０１３８】
図３２を参照すると、まず、階層番号ｉに１を加算し（ステップＳ５６１）、加算後の階層番号が最下層の階層番号を超えている場合には、全てのフィルタフォルダを作成が完了していることになるので、図２６の処理に戻る（ステップＳ５６２）。そうでない場合には、ステップＳ５６３（図３３）に進む。
【０１３９】
ステップＳ５６３では、「フィルタ分類列テーブル」３０９（図２５）から階層番号ｉのレコードを検索する。ステップＳ５６３で検索したレコードの「分類条件あり／なし」が「真」であればステップＳ５８１に進み、「偽」であればステップＳ５６５に進む（ステップＳ５６４）。
【０１４０】
ステップＳ５６５では、分類列を求めるＳＱＬ文を作成する。ステップＳ５６５で作成されたＳＱＬ文の例を図３４に示す。ステップＳ５６５の詳細については後述する。次に、ステップＳ５６５で作成したＳＱＬ文を実行する（ステップＳ５６６）。例えば、図３４のＳＱＬ文を実行すると、分類列である「エリアテーブル」の「エリア名」の全ての値が求められる。次に、分類列（例えば、「エリアテーブル「エリア名」）の値をパラメータとして、分類列の値の数だけステップＳ５６８〜Ｓ５７１を繰り返す（ステップＳ５６７）。
【０１４１】
ステップＳ５６８では、分類列の値の名称のフォルダを作成する。次に、分類列の値からの条件をステップＳ５３４で作成したＳＱＬ文のｗｈｅｒｅ句に追加する（ステップＳ５６９）。ステップＳ５３４で作成したＳＱＬ文の例を図２７に示したが、このＳＱＬ文にステップＳ５６９でｗｈｅｒｅ句を追加したＳＱＬ文を図３５に示す。図３５の例では、
ａｎｄ  エリアテーブル．エリア名＝’県央’
が追加されている。
【０１４２】
次に、リレーションを逆探索してＳＱＬ文のｗｈｅｒｅ句に条件を追加する（ステップＳ５７０）。図３５に示すＳＱＬ文にステップＳ５７０で条件を追加したＳＱＬ文を図３６に示す。図３６の例では、
ａｎｄ  エリアテーブル．エリアＩＤ＝物件テーブル．エリアＩＤ
が追加されている。ステップＳ５７０の詳細は、既に図３０を参照して説明した通りである。
【０１４３】
次に、ステップＳ５６８で作成したフォルダにステップＳ５７０を実行した後のＳＱＬ文を設定する（ステップＳ５７１）。
【０１４４】
ステップＳ５６７のループを抜けた後に、ステップＳ５３７（図３２）を再帰的に呼出し、下の階層の処理に進む（ステップＳ５７２）。
【０１４５】
ステップＳ５８１では、「フィルタ分類フォルダテーブル」３１０（図２５）から当該フィルタＩＤ及び階層番号を有するレコードを検索する（ステップＳ５８１）。次に、ステップＳ５８１で検索した全てのレコードについて、ステップＳ５８３〜Ｓ５８５を繰り返す（ステップＳ５８２）。
【０１４６】
ステップＳ５８２では、ステップＳ５６８と同様に、分類列の値の名称のフォルダを作成する。次に、ステップＳ５３４で作成したＳＱＬ文に条件詳細より求まるｗｈｅｒｅ句を追加する（ステップＳ５８４）。図２７に示すＳＱＬ文にステップＳ５８４でｗｈｅｒｅ句を追加したＳＱＬ文を図３７に示す。図３７の例では、
ａｎｄ  （販売店テーブル．販売店名＝’ナガシマ入間店’
ｏｒ    販売店テーブル．販売店名＝’ナガシマ大宮店’）
ａｎｄ  販売店テーブル．販売店ＩＤ＝物件テーブル．販売店ＩＤ
が追加されている。但し、図３７の例は、ステップＳ５６５〜Ｓ５７２を実行せずにステップＳ５８１〜Ｓ５８６を実行した場合のものであり、説明のために表したものであるが、図２５に示す例では、ステップＳ５６１〜Ｓ５６４、Ｓ５６５〜Ｓ５７１「エリアテーブル「エリア名」ついて実行した後に、ステップＳ５７２からステップＳ５３７を再帰的に呼出し、ステップＳ５６１〜Ｓ５６４、Ｓ５８１〜Ｓ５８５「販売店テーブル「販売店名」ついて実行する。この場合には、ステップＳ５８４を実行した後のＳＱＬ文は、図３８に示すようなものになる。ステップＳ５８４の詳細は、既に図２８を参照して説明した通りである。
【０１４７】
次に、ステップＳ５８３で作成したフォルダにステップＳ５８４を実行した後のＳＱＬ文を設定する（ステップＳ５８５）。
【０１４８】
ステップＳ５８２のループを抜けた後に、ステップＳ５３７（図３２）を再帰的に呼出し、下の階層の処理に進む（ステップＳ５８６）。
【０１４９】
次に、ステップＳ５６５の詳細について説明する。
【０１５０】
図３９を参照すると、まず、分類列からＳＱＬ文を作成する（ステップＳ５９１）。すなわち、「フィルタ分類列テーブル」３０９（図２５）から当該レコードの「リレーション逆探索ＩＤ」を取得し、この「リレーション逆探索ＩＤ」と同一の「リレーション逆探索ＩＤ」を有するレコードの「テーブルＩＤ」及び「テーブル列ＩＤ」を「リレーション逆探索テーブル」３０６（図１６）から検索し、検索された「テーブルＩＤ」と同一の「テーブルＩＤ」を有するレコードの「テーブル名（日本語表記）」を「テーブル定義テーブル」３０１（図５）から検索し、検索された「テーブルＩＤ」及び「テーブル列ＩＤ」と同一の「テーブルＩＤ」及び「テーブル列ＩＤ」を有するレコードの「列名（日本語表記）」を「テーブル列定義テーブル」３０２から検索し、検索された「テーブル名（日本語表記）」及び「列名（日本語表記）」を含むＳＱＬ文を作成する。図２５に示す「フィルタ分類列テーブル」３０９の例では、第１レコードの「リレーション逆探索ＩＤ」が２６であるので、「テーブルＩＤ」及び「テーブル列ＩＤ」は、「４」及び「２」となり、「テーブル名（日本語表記）」及び「列名（日本語表記）」として「エリアテーブル」及び「エリア名」が検索され、図４０に示すようなＳＱＬ文が作成される。
【０１５１】
次に、分類列を有するテーブルの主キーが付されている列の列名を用いてＳＱＬ文にｗｈｅｒｅ句を追加する（ステップＳ５９２）。すなわち、ステップＳ５９１の過程で検索された「テーブルＩＤ」と同一の「テーブルＩＤ」を有するレコードのうちの「主キー」が「真」であるレコードの「列名（日本語表記）」を「テーブル列定義テーブル」３０２（図６）から検索し、この「列名（日本語表記）」及びステップＳ５９１の過程で検索した「テーブル名（日本語表記）」を含むｗｈｅｒｅ句をＳＱＬ文に追加する。図２５に示す「フィルタ分類列テーブル」３０９の第１レコードの「リレーション逆探索ＩＤ」が２６であるので、「テーブルＩＤ」は「４」となり、「テーブル列定義テーブル」３０２（図６）からは「列名（日本語表記）」として「エリアＩＤ」が検索され、図４１に示すようなｗｈｅｒｅ句及びサブクエリのｓｅｌｅｃｔ句が追加される。
【０１５２】
次に、ステップＳ５９１で検索した「リレーション逆探索ＩＤ」と同一の「リレーション逆探索ＩＤ」を有するレコードを「リレーション逆探索リストテーブル」３０７から検索する（ステップＳ５９３）。
【０１５３】
次に、ステップＳ５９３で検索したレコードについてステップＳ５９５〜Ｓ５９６を繰り返す（ステップＳ５９４）。
【０１５４】
ステップＳ５９５では、ステップＳ５９３で検索したレコードの「リレーションＩＤ」と同一の「リレーションＩＤ」を有するレコードの「子テーブルＩＤ」、「子テーブル列ＩＤ」、「親テーブルＩＤ」及び「親テーブル列ＩＤ」を「リレーション列定義テーブル」３０４から検索し、「リレーション列定義テーブル」３０４から検索された「子テーブルＩＤ」と同一の「テーブルＩＤ」を有するレコードの「テーブル名（日本語表記）」を「テーブル定義テーブル」３０１（図５）から検索し、「リレーション列定義テーブル」３０４から検索された「子テーブルＩＤ」及び「子テーブル列ＩＤ」と同一の「テーブルＩＤ」及び「テーブル列ＩＤ」を有するレコードの「列名（日本語表記）」を「テーブル列定義テーブル」３０２（図６）から検索し、「リレーション列定義テーブル」３０４から検索された「親テーブルＩＤ」と同一の「テーブルＩＤ」を有するレコードの「テーブル名（日本語表記）」を「テーブル定義テーブル」３０１（図５）から検索し、「リレーション列定義テーブル」３０４から検索された「親テーブルＩＤ」及び「親テーブル列ＩＤ」と同一の「テーブルＩＤ」及び「テーブル列ＩＤ」を有するレコードの「列名（日本語表記）」を「テーブル列定義テーブル」３０２（図６）から検索する。
【０１５５】
次に、ステップＳ５９５で検索された子テーブル及び親テーブルの「テーブル名（日本語表記）」を用いてＳＱＬ文のサブクエリのｆｒｏｍ句を追加し、ステップＳ５９５で検索された子テーブル及び親テーブルの「テーブル名（日本語表記）」及び「テーブル列名（日本語表記）」を用いてＳＱＬ文のサブクエリのｗｈｅｒｅ句を追加する（ステップＳ５９６）。図２５に示す「フィルタ分類列テーブル」３０９の第１レコードの場合には、子テーブル及び親テーブルの「テーブル名（日本語表記）」及び「テーブル列名（日本語表記）」として「物件テーブル」、「エリアＩＤ」、「エリアテーブル」及び「エリアＩＤ」が検索されるので、図４２に示すように、ｆｒｏｍ句及びｗｈｅｒｅ句として
ｆｒｏｍ  エリアテーブル，物件テーブル
ｗｈｅｒｅ  エリアテーブル．エリアＩＤ＝物件テーブル．エリアＩＤ
が追加される。
【０１５６】
ステップＳ５９４のループを抜けたならば、分類列のテーブルの「主キー」からｇｒｏｕｐ  ｂｙ句を追加する（ステップＳ５９７）。すなわち、ステップＳ５９１の過程で検索された「テーブルＩＤ」と同一の「テーブルＩＤ」を有するレコードのうちの「主キー」が「真」であるレコードの「列名（日本語表記）」を「テーブル列定義テーブル」３０２（図６）から検索し、この「列名（日本語表記）」及びステップＳ５９１の過程で検索した「テーブル名（日本語表記）」を含むｇｒｏｕｐ  ｂｙ句をＳＱＬ文に追加する。図２５に示す「フィルタ分類列テーブル」３０９の第１レコードの「リレーション逆探索ＩＤ」が２６であるので、「テーブルＩＤ」は「４」となり、「テーブル列定義テーブル」３０２（図６）からは「列名（日本語表記）」として「エリアＩＤ」が検索され、ステップＳ５９１の過程では「テーブル名（日本語表記）」として「エリアテーブル」が検索されるので、図４３に示すようなｇｒｏｕｐ  ｂｙ句
ｇｒｏｕｐ  ｂｙ  エリアテーブル．エリアＩＤ
が追加される。
【０１５７】
次に、分類列からｏｒｄｅｒ  ｂｙ句を追加する（ステップＳ５９８）。すなわち、ステップＳ５９１で検索された「テーブル名（日本語表記）」及び「列名（日本語表記）」を含むｏｒｄｅｒ  ｂｙ句を追加する。図２５に示す「フィルタ分類列テーブル」３０９の例では、第１レコードの「リレーション逆探索ＩＤ」が２６であるので、テーブル名（日本語表記）」及び「列名（日本語表記）」として「エリアテーブル」及び「エリア名」がステップＳ５９１で検索されているので、図４４に示すようなｏｒｄｅｒ  ｂｙ句
ｏｒｄｅｒ  ｂｙ  エリアテーブル．エリア名
が追加される。
【０１５８】
図２６、２８、３０、３２、３３及び３９に示す処理が終了すると、必要なフォルダが作成され、作成された各フォルダには、例えば、図３６、３８に示すようなＳＱＬ文３１３（図４７）が設定される。
【０１５９】
作成されたフォルダは図２に示す「物件データ編集画面  データシートビュー」１７１のツリーリスト１７２にフィルタ毎に階層構造で表示される。例えば、図２に示すように、「エリア・販売店で分類」という名称のフィルタの下には、「県央」フォルダ、「県東」フォルダ及び「県西」フォルダが作成され、「県央」フォルダの下には、「ナガシマ」フォルダ及び「ＭＡＸ」フォルダが作成される。そして、それぞれのフォルダにＳＱＬ文が関連付けられる。「県央」フォルダ、「県東」フォルダ、「県西」フォルダ、「ナガシマ」フォルダ及び「ＭＡＸ」フォルダに関連付けられるＳＱＬ文は、それぞれ、図４５、４６、４７、４８及び４９に示すようなものとなる。ユーザが「県央」フォルダを選択すると、図４５に示すＳＱＬ文が実行されて、その実行結果がデータシートビュー１７３に表示される。同様に、ユーザが「県東」フォルダを選択すると、図４６に示すＳＱＬ文が実行されて、その実行結果がデータシートビュー１７３に表示され、ユーザが「県西」フォルダを選択すると、図４７に示すＳＱＬ文が実行されて、その実行結果がデータシートビュー１７３に表示されユーザが「ナガシマ」フォルダを選択すると、図４８に示すＳＱＬ文が実行されて、その実行結果がデータシートビュー１７３に表示されユーザが「ＭＡＸ」フォルダを選択すると、図４９に示すＳＱＬ文が実行されて、その実行結果がデータシートビュー１７３に表示される。
【０１６０】
また、データシートビューを図３に示すフォームビュー１９３に切り替えると、データシートビューに表示される物件データのうちの任意の１件分の物件データがフォームビュー１９３に表示される。
【０１６１】
【発明の効果】
以上説明したように、本発明によれば、ユーザが所定の画面で検索条件を設定するのみで、階層化された分類の項目の値毎にフォルダが作成され、各フォルダに設定する問合せ文が自動作成され、ユーザがフォルダを選択したときにフォルダに設定された問合せ文が実行され、実行結果が表示されるようになり、しかも、データベースを構成するテーブルの構造及びテーブル間のリレーションを把握して行われるので、汎用性をもった機能として本発明を提供することが可能となる。
【図面の簡単な説明】
【図１】本発明の実施形態によるデータベース問合せ文作成装置の構成を示すブロック図である。
【図２】本発明の実施形態による「物件データ編集画面  データシートビュー」を示す図である。
【図３】本発明の実施形態による「物件データ編集画面  フォームビュー」を示す図である。
【図４】本発明の実施形態による物件データベースの構成を示す図である。
【図５】本発明の実施形態による「テーブル定義テーブル」の構成を示す図である。
【図６】本発明の実施形態による「テーブル列定義テーブル」の構成を示す図である。
【図７】本発明の実施形態による「リレーション定義テーブル」の構成を示す図である。
【図８】本発明の実施形態による「リレーション列定義テーブル」の構成を示す図である。
【図９】本発明の実施形態によるテーブル定義テーブル等作成手段の動作を示すフローチャートである。
【図１０】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する「参照テーブル定義ダイアログ画面」を示す図である。
【図１１】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する「物件テーブル定義ダイアログ画面」を示す図である。
【図１２】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する第１の「参照列追加ダイアログ画面」を示す図である。
【図１３】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する第２の「参照列追加ダイアログ画面」を示す図である。
【図１４】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する「物件テーブル定義ダイアログ画面」を示す図である。
【図１５】本発明の実施形態による「テーブル列ノードテーブル」の構成を示す図である。
【図１６】本発明の実施形態による「リレーション逆探索テーブル」の構成を示す図である。
【図１７】図１５に示す「テーブル列ノードテーブル」３０５を基に、全テーブルの全列のリレーションを階層構造で表示したものを示す図である。
【図１８】本発明の実施形態似よる「リレーション逆探索リストテーブル」の構成を示すブロック図である。
【図１９】本発明の実施形態によるテーブル列ノードテーブル等作成手段の動作を示す第１のフローチャートである。
【図２０】本発明の実施形態によるテーブル列ノードテーブル等作成手段の動作を示す第２のフローチャートである。
【図２１】本発明の実施形態によるフィルタ条件入力手段が表示する「フィルタ作成ダイアログ画面」を示す図である。
【図２２】本発明の実施形態によるフィルタ条件入力手段が表示する「対象データ絞り込み設定ダイアログ画面」を示す図である。
【図２３】本発明の実施形態によるフィルタ条件入力手段が表示する「フォルダ設定ダイアログ画面」を示す図である。
【図２４】本発明の実施形態によるフィルタ条件入力手段が表示する「ソートダイアログ画面」を示す図である。
【図２５】本発明の実施形態による「フィルタテーブル」、「フィルタ分類列テーブル」、「フィルタ分類フォルダテーブル」、「条件テーブル」及び「条件詳細テーブル」の構成を示す図である。
【図２６】本発明の実施形態によるＳＱＬ文作成手段の動作を示す第１のフローチャートである。
【図２７】本発明の実施形態によるステップＳ５３４で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。
【図２８】本発明の実施形態によるＳＱＬ文作成手段の動作を示す第２のフローチャートである。
【図２９】本発明の実施形態によるステップＳ５４６で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。
【図３０】本発明の実施形態によるＳＱＬ文作成手段の動作を示す第３のフローチャートである。
【図３１】本発明の実施形態によるステップＳ５５４で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。
【図３２】本発明の実施形態によるＳＱＬ文作成手段の動作を示す第４のフローチャートである。
【図３３】本発明の実施形態によるＳＱＬ文作成手段の動作を示す第５のフローチャートである。
【図３４】本発明の実施形態によるステップＳ５６５で作成したＳＱＬ文の例を示す。
【図３５】本発明の実施形態によるステップＳ５６９で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。
【図３６】本発明の実施形態によるステップＳ５７０で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。
【図３７】本発明の実施形態によるステップＳ５８４で作成したｗｈｅｒｅ句が追加された説明のためのＳＱＬ文の例を示す。
【図３８】本発明の実施形態によるステップＳ５８４で作成したｗｈｅｒｅ句が追加された実際のＳＱＬ文の例を示す。
【図３９】本発明の実施形態によるＳＱＬ文作成手段の動作を示す第６のフローチャートである。
【図４０】本発明の実施形態によるステップＳ５９１による作成されたＳＱＬ文の例を示す。
【図４１】本発明の実施形態によるステップＳ５９２で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。
【図４２】本発明の実施形態によるステップＳ５９６で作成したｗｈｅｒｅ句が追加されたＳＱＬ文の例を示す。
【図４３】本発明の実施形態によるステップＳ５９７で作成したｇｒｏｕｐ  ｂｙ句が追加されたＳＱＬ文の例を示す。
【図４４】本発明の実施形態によるステップＳ５９８で作成したｏｒｄｅｒ  ｂｙ句が追加されたＳＱＬ文の例を示す。
【図４５】本発明の実施形態による図２に示す「県央」フォルダに関連付けられるＳＱＬ文の例を示す。
【図４６】本発明の実施形態による図２に示す「県東」フォルダに関連付けられるＳＱＬ文の例を示す。
【図４７】本発明の実施形態による図２に示す「県西」フォルダに関連付けられるＳＱＬ文の例を示す。
【図４８】本発明の実施形態による図２に示す「ナガシマ」フォルダに関連付けられるＳＱＬ文の例を示す。
【図４９】本発明の実施形態による図２に示す「ＭＡＸ」フォルダに関連付けられるＳＱＬ文の例を示す。
【符号の説明】
６０１  テーブル定義テーブル等作成手段
６０２  テーブル列ノードテーブル等作成手段
６０３  フィルタ条件入力手段
６０４  フィルタテーブル等作成手段
６０５  ＳＱＬ文作成手段
【図１】
2004246405.tif 000003
【図２】
2004246405.tif 000004
【図３】
2004246405.tif 000005
【図４】
2004246405.tif 000006
【図５】
2004246405.tif 000007
【図６】
2004246405.tif 000008
【図７】
2004246405.tif 000009
【図８】
2004246405.tif 000010
【図９】
2004246405.tif 000011
【図１０】
2004246405.tif 000012
【図１１】
2004246405.tif 000013
【図１２】
2004246405.tif 000014
【図１３】
2004246405.tif 000015
【図１４】
2004246405.tif 000016
【図１５】
2004246405.tif 000017
【図１６】
2004246405.tif 000018
【図１７】
2004246405.tif 000019
【図１８】
2004246405.tif 000020
【図１９】
2004246405.tif 000021
【図２０】
2004246405.tif 000022
【図２１】
2004246405.tif 000023
【図２２】
2004246405.tif 000024
【図２３】
2004246405.tif 000025
【図２４】
2004246405.tif 000026
【図２５】
2004246405.tif 000027
【図２６】
2004246405.tif 000028
【図２７】
2004246405.tif 000029
【図２８】
2004246405.tif 000030
【図２９】
2004246405.tif 000031
【図３０】
2004246405.tif 000032
【図３１】
2004246405.tif 000033
【図３２】
2004246405.tif 000034
【図３３】
2004246405.tif 000035
【図３４】
2004246405.tif 000036
【図３５】
2004246405.tif 000037
【図３６】
2004246405.tif 000038
【図３７】
2004246405.tif 000039
【図３８】
2004246405.tif 000040
【図３９】
2004246405.tif 000041
【図４０】
2004246405.tif 000042
【図４１】
2004246405.tif 000043
【図４２】
2004246405.tif 000044
【図４３】
2004246405.tif 000045
【図４４】
2004246405.tif 000046
【図４５】
2004246405.tif 000047
【図４６】
2004246405.tif 000048
【図４７】
2004246405.tif 000049
【図４８】
2004246405.tif 000050
【図４９】
2004246405.tif 000051