JP2004246405A - データベース問合せ文作成装置及びその方法並びにプログラム - Google Patents
データベース問合せ文作成装置及びその方法並びにプログラム Download PDFInfo
- Publication number
- JP2004246405A JP2004246405A JP2003032466A JP2003032466A JP2004246405A JP 2004246405 A JP2004246405 A JP 2004246405A JP 2003032466 A JP2003032466 A JP 2003032466A JP 2003032466 A JP2003032466 A JP 2003032466A JP 2004246405 A JP2004246405 A JP 2004246405A
- Authority
- JP
- Japan
- Prior art keywords
- column
- relation
- name
- creating
- condition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル、リレーション列定義テーブル及びユーザが入力したフィルタ条件を基に、テーブル列ノードテーブル、リレーション逆探索テーブル、リレーション逆探索リストテーブル、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル、条件詳細テーブルを経て、所定のアルゴリズムにより問合せ文を自動生成する。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、データベースを操作するためのデータベース問合せ文を作成するためのデータベース問合せ文作成装置及びその方法並びにプログラムに関する。
【0002】
【従来の技術】
現在普及しているMicrosoft Access(登録商標)等のリレーショナルデータベースにおいては、データベースを操作するためのデータベース問合せ文を作成したり、実行したりすることが可能である。例えば、あるテーブルのある列に条件を設定して、レコードを絞り込むことが可能である。
【0003】
なお、本発明に関連する先行技術文献としては、以下のものがある。
【0004】
【特許文献1】
特開平5−108431号公報
【特許文献2】
特開2000−123034公報
【特許文献3】
特開平7−73199号公報
【特許文献4】
特開平9−237280号公報
【特許文献5】
特開平8−22389号公報
【非特許文献1】
木村博文等著「入門SQL」ソフトバンクパブリッシング株式会社出版、2000年1月24日
【0005】
【発明が解決しようとする課題】
しかしながら、一般にリレーショナルデータベースは、複数のテーブルから構成されており、テーブル同士がリレーションで結ばれている。このようなリレーションで結ばれた複数のテーブルから任意のテーブルの任意の列を選択して検索を行うためには、例えば、Microsoft Accessの場合には、クエリという方法で予めリレーションによりテーブルを結合させた仮想テーブルを用意しておくことが必要である。
【0006】
また、従来のデータベースにおいては、任意のテーブルの任意の列の値毎にデータを分類して表示することが簡単にはできない。
【0007】
そこで、本発明は、予め仮想テーブルを用意するのではなく、ユーザが任意に選択したテーブルの列から動的に問合せ文を生成し、その問合せを実行することによりデータベースから所定のデータを検索することが可能な汎用的なデータベース問合せ文作成装置及びその方法並びにプログラムを提供することを目的とする。
【0008】
【課題を解決するための手段】
本発明の第1の観点によれば、検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報及び条件値により表現する手段と、前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記検索条件適用列の属するテーブルのテーブル名及び同列の列名並びに前記条件値を基に、検索条件式を作成する手段と、前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【0009】
本発明の第2の観点によれば、検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報、条件の区分を示す条件区分及び該条件区分に対応する条件値により表現する手段と、前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記検索条件適用列の属するテーブルのテーブル名及び同列の列名、前記条件区分並びに該条件区分に対応する条件値を基に、検索条件式を作成する手段と、前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【0010】
本発明の第3の観点によれば、選択するべき列を特定するための選択列特定情報を基に、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を基に、selectキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルのテーブル名を基に、fromキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、whereキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、サブクエリのselectキーワードを含む句を作成する手段と、前記選択するべき列の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、前記リレーションに用いられる列の属するテーブルのテーブル名を基に、前記サブクエリのfromキーワードを含む句を作成する手段と、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、前記サブクエリの等結合の結合条件を作成する手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【0011】
本発明の第1の観点によるデータベース問合せ文作成装置は、本発明の第3の観点によるデータベース問合せ文作成装置が作成したデータベース問合せ文を実行して得た結果を前記条件値として用いてもよい。
【0012】
本発明の第1又は第2の観点によるデータベース問合せ文作成装置は、前記検索条件を適用する列をユーザに選択させるために、複数のテーブルにわたり各テーブルの各列を特定するための情報を各レコードに有する第1のテーブル、複数のテーブルにわたり各テーブルの各列を特定するための情報を各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に対応付けた第2のテーブル並びに各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に各列の列名を対応付けた第3のテーブルを基に作成したリストを表示する手段を更に備えていてもよい。
【0013】
本発明の第1又は第2の観点によるデータベース問合せ文作成装置において、前記検索条件適用列特定情報は、複数のテーブルにわたり各テーブルの各列を特定するためのリレーション逆探索IDにより表されてもよい。
【0014】
本発明の第1又は第2の観点によるデータベース問合せ文作成装置において、前記検索条件適用列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記検索条件適用列特定情報であるリレーション逆探索IDに対応するテーブルID及びテーブル列IDを第1のテーブルから検索する手段と、検索されたテーブルIDに対応するテーブル名を第2のテーブルから検索する手段と、検索されたテーブルID及びテーブル列IDに対応する列名を第3のテーブルから検索する手段と、を備えていてもよい。
【0015】
本発明の第3の観点によるデータベース問合せ文作成装置において、前記選択列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記選択列特定情報であるリレーション逆探索IDに対応するテーブルID及びテーブル列IDを第1のテーブルから検索する手段と、検索されたテーブルIDに対応するテーブル名を第2のテーブルから検索する手段と、検索されたテーブルID及びテーブル列IDに対応する列名を第3のテーブルから検索する手段と、を備えていてもよい。
【0016】
本発明の第1、第2又は第3の観点によるデータベース問合せ文作成装置において、前記検索条件適用列(着目列)の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段、又は、前記選択するべき列(着目列)の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段は、前記着目列を特定するためのリレーション逆探索IDに対応する全てのリレーションのリレーションIDを第1のテーブルから検索する手段を備えていてもよく、前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記第1のテーブルから検索された前記リレーションIDに対応する子テーブルID、子テーブル列ID、親テーブルID及び親テーブル列IDを第2のテーブルから検索する手段を備えていてもよく、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段、又は、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、サブクエリの等結合の結合条件を作成する手段は、前記第2のテーブルから検索された前記子テーブルIDに対応する子テーブルのテーブル名を第3のテーブルから検索する手段と、前記第2のテーブルから検索された前記親テーブルIDに対応する親テーブルのテーブル名を前記第3のテーブルから検索する手段と、前記第2のテーブルから検索された前記子テーブルID及び前記子テーブル列IDに対応する列名を第4のテーブルから検索する手段と、前記第2のテーブルから検索された前記親テーブルID及び前記親テーブル列IDに対応する列名を前記第4のテーブルから検索する手段とを備えていてもよい。
【0017】
本発明の第4の観点によれば、テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル及びリレーション列定義テーブルを基に、テーブル列ノードテーブル、リレーション逆探索テーブル及びリレーション逆探索リストテーブルを作成するテーブル列ノードテーブル等作成手段と、前記テーブル列定義テーブル、前記テーブル列ノードテーブル及び前記リレーション逆探索リストテーブルを基に表示したリストを用いて作成されたフィルタ条件を基に、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル及び条件詳細テーブルを作成するフィルタテーブル等作成手段と、前記テーブル定義テーブル、前記テーブル列定義テーブル、前記リレーション列定義テーブル、前記リレーション逆探索テーブル、前記リレーション逆探索リストテーブル、前記フィルタテーブル、前記フィルタ分類フィールドテーブル、前記フィルタ分類フォルダテーブル、前記条件テーブル及び前記条件詳細テーブルを基に、問合せ文を作成する問合せ文作成手段と、を備えることを特徴とするデータベース問合せ文作成装置が提供される。
【0018】
本発明の第5の観点によれば、階層化された分類の項目の値毎に設けられたフォルダに、前記階層化された分類の項目の値及びその分類の項目に至るまでの上位層の分類の項目の値でデータを絞り込むためのデータベース問合せ文を関連付け、いずれかのフォルダが選択されたならば、そのフォルダに関連付けられたデータベース問合せ文を実行して、その実行結果を表示するようにしたことを特徴とするデータ表示装置が提供される。
【0019】
本発明の第5の観点によるデータ表示装置において、前記データベース問合せ文は、本発明の第1乃至4の何れかの観点によるデータベース問合せ文作成装置で作成したものであってもよい。
【0020】
本発明の第6の観点によれば、各テーブルを特定するための「テーブルID」列、各テーブルにおいて各列を特定するための「テーブル列ID」及びリレーションが付されている列についてリレーションIDが記述される「リレーションID」列を有するレコードが各テーブルの各列毎に設けられたテーブル列定義テーブルと、前記「リレーションID」列に子テーブルのテーブルIDである「子テーブルID」列及び親テーブルのテーブルIDである「親テーブルID」列を対応付けるレコードがリレーション毎に設けられたリレーション定義テーブルを基に、複数のテーブルにわたり各テーブルの各列を特定するための「リレーション逆探索ID」列、リレーションの親子関係を親ノードの前記「リレーション逆探索ID」により表す「親ノードID」及び親ノードを共通とする列の通し番号を表す「親ノード内順番号」を有するレコードが各テーブルの各列毎に設けられたテーブル列ノードテーブルを作成する手段を備えることを特徴とするテーブル列ノードテーブル等作成装置が提供される。
【0021】
本発明の第6の観点によるテーブル列ノードテーブル等作成装置は、前記テーブル列定義テーブルを基に、前記「テーブルID」及び前記「テーブル列ID」を前記「リレーション逆探索ID」に対応付けるためのレコードが各テーブルの各列毎に設けられたリレーション逆探索テーブルを作成する手段を更に備えていてもよい。
【0022】
本発明の第6の観点によるリレーション逆探索テーブル等作成装置は、前記テーブル列ノードテーブル、前記リレーション逆探索テーブル、リレーションを特定するための「リレーションID」列、リレーションを共通とする列の通し番号を有する「リレーション列ID」列並びに前記「リレーションID」列及び前記「リレーション列ID」に対応する「子テーブルID」列、「子テーブル列ID」列、「親テーブルID」列及び「親テーブル列ID」を有するレコードが設けられたリレーション列定義テーブルを基に、「リレーション逆探索ID」列、該「リレーション逆探索ID」列で特定される列から主テーブルに遡るために必要なリレーションの通し番号である「リレーション逆順番」列及び前記「リレーション逆探索ID」列及び前記「リレーション逆順番」に対応する「リレーションID」列を有するレコードが設けられたリレーション逆探索リストテーブルを作成する手段を更に備えていてもよい。
【0023】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【0024】
なお、実施形態中、説明のためにテーブル名及び列名には日本語を用いているが、実際には、英数字を用いている。従って、SQL文において日本語表示されている部分も、実際には英数字が用いられている。
【0025】
図1は本発明の実施形態によるデータベース問合せ文作成装置の構成を示す。
【0026】
図1を参照すると、データベース問合せ文作成装置は、テーブル定義テーブル等作成手段601、テーブル列ノードテーブル等作成手段602、フィルタ条件入力手段603、フィルタテーブル等作成手段604及びSQL(Structured Query Language)文作成手段605を備える。
【0027】
テーブル定義テーブル等作成手段601は、テーブル定義テーブル301、テーブル列定義テーブル302、リレーション定義テーブル303及びリレーション列定義テーブル304を作成する。テーブル列ノードテーブル等作成手段602は、テーブル定義テーブル301、テーブル列定義テーブル302、リレーション定義テーブル303及びリレーション列定義テーブル304を基に、テーブル列ノードテーブル305、リレーション逆探索テーブル306及びリレーション逆探索リストテーブル307を作成する。フィルタ条件入力手段603は、テーブル列定義テーブル302、テーブル列ノードテーブル305及びリレーション逆探索テーブル306並びにユーザ入力を基に、フィルタ条件を作成する。フィルタテーブル等作成手段604は、フィルタ条件を基に、フィルタテーブル308、フィルタ分類フィールドテーブル309、フィルタ分類フォルダテーブル310、条件テーブル311及び条件詳細テーブル312を作成する。SQL文作成手段605は、テーブル定義テーブル301、テーブル列定義テーブル302、リレーション列定義テーブル304、リレーション逆探索テーブル306、リレーション逆探索リストテーブル307、フィルタテーブル308、フィルタ分類フィールドテーブル309、フィルタ分類フォルダテーブル310、条件テーブル311及び条件詳細テーブル312を基にSQL文313を作成する。
【0028】
テーブル定義テーブル等作成手段601、テーブル列ノードテーブル等作成手段602、フィルタ条件入力手段603、フィルタテーブル等作成手段604及びSQL文作成手段605は、ハードウェアにより構成してもよい、コンピュータをこれらの手段として機能させるためのプログラムをコンピュータが読み込んで実行することによっても構成してもよい。
【0029】
SQL文313は、図2に示す「物件データ編集画面 データシートビュー」171のツリーリスト172に表示する各フォルダ毎に作成され、ユーザが任意のフォルダを選択すると、そのフォルダに関連付けられたSQL文が実行され、その実行結果がデータシートビュー173に表示される。例えば、「エリア・販売店で分類」という名称のフィルタがツリーリスト172に表示されているが、このフィルタの下には、「県央」フォルダ、「県東」フォルダ及び「県西」フォルダがあり、「県央」フォルダの下には、「ナガシマ」フォルダ及び「MAX」フォルダがある。ユーザが「県央」フォルダを選択したときには、エリア名が「県央」である物件データを抽出するためのSQL文が実行され、その実行結果がデータシートビュー173に表示される。また、ユーザが「ABCショップ」フォルダを選択したときには、エリア名が「県央」であり、且つ、販売店名が「ABCショップ」である物件データを抽出するためのSQL文が実行され、その実行結果がデータシートビュー173に表示される。また、データシートビュー173に表示される各物件を1件毎にフォームビュー183(図3)に表示することも可能である。
【0030】
図4は、本発明の実施形態による物件データベースに含まれるテーブル及びそれらの間に結ばれたリレーションを示す。
【0031】
図4を参照すると、物件データベースは、「物件テーブル」、「メーカ車両テーブル」、「メーカテーブル」、「エリアテーブル」及び「販売店テーブル」を備える。「メーカ車両テーブル」、「メーカテーブル」、「エリアテーブル」及び「販売店テーブル」は、他のテーブルから参照される参照テーブルである。「物件テーブル」は主となるテーブル(主テーブル)である。「物件テーブル」は、「物件テーブル」、「メーカ車両テーブル」、「メーカテーブル」、「エリアテーブル」及び「販売店テーブル」のみから成るデータベースにおいては、他のテーブルから参照されることはなく、この意味において主テーブルである。
【0032】
「物件テーブル」の列は、「物件ID」、「物件名」、「価格」、「メーカID」、「車両ID」、「ボディ形状・グレード」、「初年度登録年」、「排気量」、「車検年月」、「シフト」、「走行距離」、「色」、「備考」、「エリアID」、「販売店ID」及び「サムネイル画像」である。「メーカ車両テーブル」の列は、「メーカID」、「車両ID」及び「車両名」である。「メーカテーブル」の列は、「メーカID」及び「メーカ名」である。「エリアテーブル」の列は、「エリアID」及び「エリア名」である。「販売店テーブル」の列は、「販売店ID」、「販売店名」、「住所」、「電話番号」、「FAX番号」、「営業時間」、「定休日」、「HPアドレス」、「Eメールアドレス」、「振込先」及び「備考」である。
【0033】
「物件テーブル」の主キーは「物件ID」である。「メーカ車両テーブル」の主キーは、「メーカID」及び「車両ID」より成る連結キーである。「メーカテーブル」の主キーは、「メーカID」である。「エリアテーブル」の主キーは、「エリアID」である。「販売店テーブル」の主キーは、「販売店ID」である。
【0034】
「物件テーブル」は、「メーカID」及び「車両ID」の連結キーを第1の外部キーとして有する。第1の外部キーは、「メーカ車両テーブル」の主キーに対応する。また「物件テーブル」は、「エリアID」を第2の外部キーとして有する。第2の外部キーは、「エリアテーブル」の主キーに対応する。更に、「物件テーブル」は、「販売店ID」を外部キーとして有する。第3の外部キーは、「販売店テーブル」の主キーに対応する。以下、外部キーが設定される列を「参照列」という。
【0035】
物件データベースの各テーブルは、図5に示す「テーブル定義テーブル」301及び図6に示す「テーブル列定義テーブル」302により定義される。また、物件データベースの各リレーションについての一部の情報は、図6に示す「テーブル列定義テーブル」302により定義される。
【0036】
図5を参照すると、「テーブル定義テーブル」301の列は、「テーブルID」、「テーブル名(英数字表示)」、「テーブル名(日本語表記)」及び「テーブル区分」である。「テーブルID」は、各テーブルに固有のIDである。「テーブル名(英数字表記)」は、英数字で表したテーブルの名称である。「テーブル名(日本語表記)」は、日本語で表したテーブルの名称である。「テーブル区分」は、テーブルが「物件テーブル」であるか又は参照テーブルであるかの区分である。
【0037】
図6を参照すると、「テーブル列定義テーブル」302の列は、「テーブルID」、「テーブル列ID」、「列順番」、「列名(英数字表記)」、「列名(日本語表記)」、「データ型」、「長さ」、「小数点」、「主キー」、「外部キー」及び「リレーションID」である。「テーブル列定義テーブル」302のレコードは、各テーブルの各列毎に設けられている。「テーブルID」は、各テーブルに固有のIDであり、「テーブル定義テーブル」301の「テーブルID」と一致する。「テーブル列ID」は、各テーブルにおける各列のIDである。「列順番」は、各テーブルにおける各列の順番である。「列名(英数字表記)」は、英数字で表した列の名称である。「列名(日本語表記)」は、日本語で表した列の名称である。「データ型」は、列のデータの型を示す。「データ型」は、例えば、数値、文字列、オブジェクト等である。「長さ」は、列のバイト数である。「小数点」は、「データ型」が数値である場合の小数点以下の桁数である。「主キー」は、列に主キーが設定されているか否かを示す。「外部キー」は、列に外部キーが設定されているか否かを示す。「リレーションID」は、列に外部キーが設定されている場合に、その外部キーに対応するリレーションが物件データベース全体の中で何番目のリレーションであるかを示す。
【0038】
物件データベースの各リレーションについての一部の情報は、図7に示す「リレーション定義テーブル」303及び図8に示す「リレーション列定義テーブル」304により定義される。
【0039】
図7を参照すると、「リレーション定義テーブル」303の列は、「リレーションID」、「子テーブルID」及び「親テーブルID」である。「リレーションID」は、「テーブル列定義テーブル」302の「リレーションID」に設定されたものである。「子テーブルID」は、リレーションに関し外部キーが設定されたテーブルの「テーブル定義テーブル」301における「テーブルID」である。「親テーブルID」は、リレーションに関し主キーが設定されたテーブルの「テーブル定義テーブル」301における「テーブルID」である。
【0040】
図8を参照すると、「リレーション列定義テーブル」304の列は、「リレーションID」、「リレーション列ID」、「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」である。「リレーションID」は、「テーブル列定義テーブル」302の「リレーションID」に設定されたものである。「リレーション列ID」は、各リレーションにおける列の通し番号である。「子テーブルID」は、リレーションに関し外部キーが設定されたテーブルの「テーブル定義テーブル」301における「テーブルID」である。「子テーブル列ID」は、リレーションに関し外部キーが設定されたテーブルの列であって、「リレーション列ID」に対応するものの「テーブル列定義テーブル」302における「テーブル列ID」である。「親テーブルID」は、リレーションに関し主キーが設定されたテーブルの「テーブル定義テーブル」301における「テーブルID」である。「親テーブルID」は、リレーションに関し主キーが設定されたテーブルの列であって、「リレーション列ID」に対応するものの「テーブル列定義テーブル」302における「テーブル列ID」である。
【0041】
次に、テーブル定義テーブル等作成手段601(図1)が行う「テーブル定義テーブル」301、「テーブル列定義テーブル」302、「リレーション定義テーブル」303及び「リレーション列定義テーブル」304の作成方法について説明する。
【0042】
図9を参照すると、まず、ユーザ入力を受け付けて、「テーブル定義テーブル」301を作成する(ステップS501)。
【0043】
次に、各テーブルについての列の定義を全テーブルについて繰り返す(ステップS502)。なお、基本的には、参照されるテーブルの列の定義を参照するテーブルの列の定義よりも先に行う。従って、全ての参照テーブルの列の定義を先に行い「物件テーブル」の定義を最後に行う。また「メーカテーブル」の列の定義を「メーカ車両テーブル」の列の定義よりも先に行う。
【0044】
図10は、参照テーブルの列の定義をするための「参照テーブル定義ダイアログ画面」101を示し、図11は「物件テーブル」の列を定義するため「物件テーブル定義ダイアログ画面」111を示す。参照テーブルの列の定義をするときには、「参照テーブル定義ダイアログ画面」101を表示して、ステップS503〜S507を繰り返し、「物件テーブル」を定義するときには「物件テーブル定義ダイアログ画面」111を表示して、ステップS503〜S507を繰り返す。
【0045】
図10では、例として「メーカ車両テーブル」の定義画面を示している。ユーザが「列を追加…」ボタン103を押したときには(ステップS504で「一般列」)、列の属性を入力するためのダイアログ画面(図示せず。)を表示し、その画面で入力された列の属性(主キーであるか否か、「列名(日本語表記)」、「列名(英数字表記)」、「データ型」、「長さ」、「小数点」、NULL不可か否か、重複不可か否か)(入力された値を有する。)及び属性である外部キー(「偽」の値を有する。)を有するレコードを「テーブル列定義テーブル」302に追加する。
【0046】
一方、ユーザが「参照列を追加…」ボタン104を押したときには(ステップ504で「参照列」)、参照テーブルを入力するための図12に示す「参照列追加ダイアログ画面」106を表示し、画面106上でユーザに参照テーブル(この例では「メーカテーブル」)を選択させ、画面106の「OK」ボタン107が押されたならば、その画面106で選択されたテーブルの主キーを参照して、「リレーション定義テーブル」303及び「リレーション列定義テーブル」304に追加するべきレコードのデータを算出し、そのデータを有するレコードをこれらのテーブル303、304に追加する(ステップS506)。そして、参照テーブルから引用した列の属性(「列名(日本語表記)」、「列名(英数字表記)」、「データ型」、「長さ」、「小数点」、NULL不可か否か、重複不可か否か)、属性である「主キー」(入力された値を有する。)及び属性である外部キー(「真」の値を有する。)を有するレコードを「テーブル列定義テーブル」302に追加する。
【0047】
「物件テーブル」ついても、図10に示す「参照テーブル列定義ダイアログ画面」101が図11に示す「物件テーブル列定義ダイアログ画面」111に置き換わり、図12に示す「参照列追加ダイアログ画面」106が図13に示す「参照列追加ダイアログ画面」121に置き換わるのみで、参照テーブルと同様に、「リレーション定義テーブル」303、「リレーション列定義テーブル」304及び「テーブル列定義テーブル」302にレコードが追加される。なお、図11に示す「物件テーブル定義ダイアログ画面」111から図13に示す「参照列追加ダイアログ画面」121を呼出し、ユーザが「メーカ車両テーブル」を選択した後に「OK」ボタン122を押した後の「物件テーブル定義ダイアログ画面」111を図14に示す。
【0048】
なお、「テーブル列定義テーブル」302において、「テーブル列ID」とは別に「列順番」が設けられているのは、「テーブル列ID」は入力順序により決まる一方で、図10に示す「参照テーブル列定義ダイアログ画面」101の「上に移動」ボタン107及び「下に移動」ボタン108並びに図11に示「物件テーブル定義ダイアログ画面」111の「上に移動」ボタン112及び「下に移動」ボタン113で列の移動ができ、「テーブル列ID」と「列順番」が異なることがあり得るからである。
【0049】
以上のようにして、「テーブル定義テーブル」301、「テーブル列定義テーブル」302、「リレーション定義テーブル」303及び「リレーション列定義テーブル」304が作成される。
【0050】
次に、テーブル列ノードテーブル等作成手段602(図1)が、図15に示す「テーブル列ノードテーブル」305、図16に示す「リレーション逆探索テーブル」306及び図18に示す「リレーション逆探索リストテーブル」307を作成する。
【0051】
図15を参照すると、「テーブル列ノードテーブル」305の列は、「テーブル列ノードID」、「親ノードID」、「親ノード内順番号」、「ノード区分」及び「リレーション逆探索ID」である。「テーブル列ノードID」は、「テーブル列ノードテーブル」305におけるレコードの通し番号である。なお、ルートノードのレコードの「テーブル列ノードID」の値はゼロに設定される。「親ノードID」は、自ノードに対する親ノードのレコードの「テーブル列ノードID」である。「親ノード内順番号」は、親ノードを共通にするノードの通し番号である。「ノード区分」は、ノードの区分であり、「ルート」、「物件列」又は「参照列」の値をとる。ここでいう「参照列」は、当該列が参照テーブルに属する列であることを意味し、外部キーが設定されている列であることを意味するのではない。「リレーション逆探索ID」は、各ノードのレコードに固有の番号である。
【0052】
リレーション逆探索IDは、データベース中の複数のテーブルにわたり各テーブルの各列を特定することができ、この意味でデータベースにおける「列特定情報」ということができるが、「列特定情報」は、テーブルのID及びそのテーブルにおける列のIDより構成されるものであってもよい。 図15に示す「テーブル列ノードテーブル」305を基に、全テーブルの全列のリレーションを階層構造で表示したものを図17に示す。この階層構造においては、子ノードは親ノードに対して相対的に字下げして表示され、同一の親を共有する子ノードは「親ノード内順番号」の順に表示される。
【0053】
図16を参照すると、「リレーション逆探索テーブル」306の列は、「リレーション逆探索ID」、「テーブルID」及び「テーブル列ID」である。「リレーション逆探索ID」は、「リレーション逆探索テーブル」306におけるレコードの通し番号であり、また、「テーブル列ノードテーブル」305の「リレーション逆探索ID」に対応する。「テーブルID」及び「テーブル列ID」は、図6に示す「テーブル列定義テーブル」302における「テーブルID」及び「テーブル列ID」である。従って、各テーブルの各列に対し「リレーション逆探索ID」なる通し番号が「リレーション逆探索テーブル」306において付されることとなる。
【0054】
図18を参照すると、「リレーション逆探索リストテーブル」307の列は、「リレーション逆探索ID」、「リレーション逆順番」及び「リレーションID」である。「リレーション逆探索リストテーブル」307のレコードは、リレーション逆探索が必要な列に対してのみ設けられている。従って、「リレーション逆探索リストテーブル」307のレコードは「物件テーブル」の列に対しては設けられておらず、参照テーブルの列に対してのみ設けられている。「リレーション逆探索ID」は、図16に示す「リレーション逆探索テーブル」306における「リレーション逆探索ID」である。「リレーション逆順番」は、図16に示す「リレーション逆探索テーブル」306において「リレーション逆探索ID」に対応づけられている「テーブルID」及び「テーブルID」により特定される列から「物件テーブル」の対応列に向かって逆探索するときに用いられるリレーションの順番を示す。「リレーションID」は、図16に示す「リレーション逆探索テーブル」306において「リレーション逆探索ID」に対応づけられている「テーブルID」及び「テーブルID」により特定される列から「物件テーブル」の対応列に向かって逆探索するときに用いられるリレーションの「リレーションID」を示す。
【0055】
例えば、「リレーション逆探索リストテーブル」307に最初に現れる「リレーション逆探索ID」は5であるが、図16に示す「リレーション逆探索テーブル」306において、この「リレーション逆探索ID」に対応する「テーブルID」及び「テーブル列ID」は2及び1である。これは「メーカ車両テーブル」の「メーカID」示す。そして「メーカ車両テーブル」の「メーカID」から「物件テーブル」の対応列である「メーカID」及び「車両ID」に向かって逆探索するときには1つのリレーションしか用いない。そして、このリレーションの「リレーションID」は1である。従って、「リレーション逆探索ID」5に対応する「リレーション逆順番」は1のみであり、これに対応する「リレーションID」は1である。
【0056】
一方、「リレーション逆探索リストテーブル」307には「リレーション逆探索ID」6があるが、図16に示す「リレーション逆探索テーブル」306において、この「リレーション逆探索ID」に対応する「テーブルID」及び「テーブル列ID」は3及び1である。これは「メーカテーブル」の「メーカID」示す。そして「メーカテーブル」の「メーカID」から「物件テーブル」の対応列である「メーカID」及び「車両ID」に逆探索するときには2つのリレーションを用いる。そして、これらのリレーションの「リレーションID」は順に4及び1である。従って、「リレーション逆探索ID」6に対応する「リレーション逆順番」は1及び2であり、これらに対応する「リレーションID」は順に4及び1である。
【0057】
次に、テーブル列ノードテーブル等作成手段602(図1)が、「テーブル列ノードテーブル」305、「リレーション逆探索テーブル」306及び「リレーション逆探索リストテーブル」307を作成する方法について説明する。
【0058】
図19を参照すると、まず、「テーブル列ノードテーブル」305の第1レコードを作成する(ステップS511)。この第1レコードの「テーブル列ノードID」、「親ノードID」、「親ノード内順番号」、「ノード区分」及び「リレーション逆探索ID」は、それぞれ、0、NULL、1、ルート、NULLであり、この第1レコードはルートノードについてのものである。
【0059】
次に、対象テーブルを「物件テーブル」にする(ステップS512)。
【0060】
次に、対象テーブルの全ての列についてステップS514〜S519の処理を繰り返す(ステップS513)。
【0061】
ステップS514では、「テーブル列ノードテーブル」305に現在の対象テーブルの現在の列についてのレコードを追加する。ステップS515では、「リレーション逆探索テーブル」306に現在の対象テーブルの現在の列についてのレコードを追加し、必要に応じて「リレーション逆探索リストテーブル」307に現在の対象テーブルの現在の列についてのレコードを追加する。ステップS516では、現在の対象テーブルの現在の列が参照列であるか否かを判断し、そうであればステップS517に進み、そうでなければステップS514に戻る。
【0062】
ステップ517では、「リレーション定義テーブル」303から参照先テーブルの「テーブルID」を取得し、ステップS518では、その「テーブルID」を用いて対象テーブルを参照先テーブルに更新して、ステップS519では、ステップS514〜S519の処理を再帰的に呼び出す。ステップS519の再帰的呼出しから抜けたならば対象テーブルを元に戻してステップS514に戻る。
【0063】
ステップS515の詳細を図20に示す。図20を参照すると、まず、「リレーション逆探索テーブル」306に現在の対象テーブルの現在の列についてのレコードを追加する(ステップS521)。次に、現在の対象テーブルの現在の列からルートノードに達するまでステップS523〜S525を繰り返す(ステップS522)。ステップ523では、「テーブル列ノードテーブル」305から現在のノードの親ノードのレコードを取得し、ステップS524では、「リレーション列定義テーブル」304から親テーブル子テーブル間の「リレーションID」を取得し、ステップS525では、その「リレーションID」を有するレコードを「リレーション逆探索リストテーブル」307に追加する。
【0064】
次に、「テーブル列ノードテーブル」305、「リレーション逆探索テーブル」306及び「リレーション逆探索リストテーブル」307を作成する方法について具体的に説明する。
【0065】
まず、「テーブル列ノードテーブル」305の第1レコードを作成する(ステップS511)。次に、対象テーブル「物件テーブル」する(ステップS512)。
【0066】
次に、「テーブル列ノードテーブル」305に「物件テーブル」の「物件ID」についてのレコードを追加する(ステップS514)。このレコードの「テーブル列ノードID」は、1であるが、これは通し番号(ステップS514を実行する度に増加する番号)である。また、このレコードの親ノードは、0であるが、これは初期値として与えられたものである。更に、このレコードの「親ノード内順番号」は1であるが、これは列ループ(ステップS513)の番号である。更に、「ノード区分」は、「物件列」であるが、これは現在の列が「物件テーブル」ものであることより求まる。このレコードの「リレーション逆探索ID」は、1であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」306の「リレーション逆探索ID」及び「リレーション逆探索リストテーブル」307の「リレーション逆探索ID」と一致している限りどのような番号であってもよい。
【0067】
次に、「リレーション逆探索テーブル」306に「物件テーブル」の「物件ID」についてのレコードを追加する(ステップS521)。このレコードの「リレーション逆探索ID」は、1であるが、これは「テーブル列ノードテーブル」305の「リレーション逆探索ID」と一致するものである。このレコードの「テーブルID」は、1であるが、これは「テーブル列定義テーブル」302の第1レコードの「テーブルID」の値である。このレコードの「テーブル列ID」は、1であるが、これは「テーブル列定義テーブル」302の第1レコードの「テーブル列ID」の値である。
【0068】
現在の列は「物件テーブル」の「物件ID」あり、既にルートノードであるので、ステップS522はスキップする。
【0069】
次に、現在の列が通常の意味での参照列(外部キーが設定されている列)であるか否かを判断するが(ステップS516)、「テーブル列定義テーブル」302の第1レコードの外部キーは「偽」であるので、この判断結果は「偽」である。従って、ステップS517〜S519はスキップして、ステップS514に戻る。
【0070】
次に、「テーブル列定義テーブル」302の第2及び第3レコード、すなわち「物件テーブル」の「物件名」及び「価格」について、「テーブル列定義テーブル」302の第1レコード、すなわち「物件テーブル」の「物件ID」、と同様に、処理が行われ、「テーブル列ノードテーブル」305の第3及び第4レコード及び「リレーション逆探索テーブル」306の第2及び第3レコードが追加される。
【0071】
次に、「テーブル列ノードテーブル」305に「物件テーブル」の「メーカID」についてのレコードを追加する(ステップS514)。このレコードの「テーブル列ノードID」は、4であるが、これは通し番号(ステップS514を実行する度に増加する番号)である。また、このレコードの親ノードは、0であるが、これは初期値として与えられたものである。更に、このレコードの「親ノード内順番号」は4であるが、これは列ループ(ステップS513)の番号である。更に、「ノード区分」は、「物件列」であるが、これは「メーカID」が「物件テーブル」ものであることより求まる。このレコードの「リレーション逆探索ID」は、4であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」306の「リレーション逆探索ID」及び「リレーション逆探索リストテーブル」307の「リレーション逆探索ID」と一致している限りどのような番号であってもよい。
【0072】
次に、「リレーション逆探索テーブル」306に「物件テーブル」の「メーカID」についてのレコードを追加する(ステップS521)。このレコードの「リレーション逆探索ID」は、4であるが、これは「テーブル列ノードテーブル」305の「リレーション逆探索ID」と一致するものである。このレコードの「テーブルID」は、1であるが、これは「テーブル列定義テーブル」302の第4レコードの「テーブルID」の値である。このレコードの「テーブル列ID」は、4であるが、これは「テーブル列定義テーブル」302の第4レコードの「テーブル列ID」の値である。
【0073】
現在の列は「物件テーブル」の「メーカID」であり、既にルートノードであるので、ステップS522はスキップする。
【0074】
次に、現在の列が通常の意味での参照列(外部キーが設定されている列)であるか否かを判断するが(ステップS516)、「テーブル列定義テーブル」302の第4レコードの外部キーは「真」であるので、この判断結果は「真」である。従って、ステップS517に進む。
【0075】
ステップS517では、「テーブル列定義テーブル」302の第4レコードの「リレーションID」「1」を検索し、「リレーション定義テーブル」303から「リレーションID」「1」に対応する親テーブルの「テーブルID」「2」を検索する(ステップS517)。この親テーブルの「テーブルID」「2」が参照先のテーブルの「テーブルID」である。つぎに、「テーブルID」が「2」のテーブルである「メーカ車両テーブル」を対象テーブルとする(ステップS518)。
【0076】
次に、「テーブル列ノードテーブル」305に「メーカ車両テーブル」の「メーカID」についてのレコードを追加する(ステップS514)。このレコードの「テーブル列ノードID」は、5であるが、これは通し番号(ステップS514を実行する度に増加する番号)である。また、このレコードの親ノードは、4であるが、これはステップS513を再帰的に呼び出す際の「リレーション逆探索ID」である。更に、このレコードの「親ノード内順番号」は1であるが、これは入れ子の列ループ(ステップS513)の番号である。更に、「ノード区分」は、「参照列」であるが、これは現在の「メーカID」が参照テーブルのものであることより求まる。このレコードの「リレーション逆探索ID」は、5であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」306の「リレーション逆探索ID」及び「リレーション逆探索リストテーブル」307の「リレーション逆探索ID」と一致している限りどのような番号であってもよい。
【0077】
次に、「リレーション逆探索テーブル」306に「メーカ車両テーブル」の「メーカID」についてのレコードを追加する(ステップS521)。このレコードの「リレーション逆探索ID」は、5であるが、これは「テーブル列ノードテーブル」305の「リレーション逆探索ID」と一致するものである。このレコードの「テーブルID」は、2であるが、これは「テーブル列定義テーブル」302の第17レコードの「テーブルID」の値である。このレコードの「テーブル列ID」は、1であるが、これは「テーブル列定義テーブル」302の第17レコードの「テーブル列ID」の値である。
【0078】
現在の列は「メーカ車両テーブル」の「メーカID」であり、ルートノードでないので、ステップS523に進む。
【0079】
ステップS523では、「テーブル列ノードテーブル」305の現在のレコード(「リレーション逆探索ID」が5であるレコード)の「親ノードID」「4」を検索する。そして、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が5であるレコードの「テーブルID」「2」及び「テーブルID」が「2」であるテーブル「メーカ車両テーブル」の主キーが設定されている列の「テーブル列ID」「1」を検索し、これらを「リレーション列定義テーブル」304における「親テーブルID」及び「親テーブル列ID」の検索条件値とする。更に、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が4であるレコードの「テーブルID」「1」及び「テーブル列ID」「4」を検索し、これらを「リレーション定義テーブル」304における「子テーブルID」及び「子テーブル列ID」の検索条件値とする。更に、「リレーション列定義テーブル」304から「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」が「1」、「4」、「2」及び「1」であるレコードの「リレーションID」「1」を検索する(ステップS524)。
【0080】
次に、「リレーション逆探索リストテーブル」307にレコードを追加する(ステップS525)。追加レコードの「リレーション逆探索ID」は、5であるが、これは、「テーブル列ノードテーブル」305における現在の「リレーション逆探索ID」及び「リレーション逆探索テーブル」306における現在の「リレーション逆探索ID」に一致するものである。追加レコードの「リレーション逆順番」は、1であるが、これはステップS522の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションID」は1であるが、これはステップS524で検索したものである。
【0081】
現在、親テーブルが「物件テーブル」になっているので、ステップS522の繰返しを抜けて、ステップS516に進む。
【0082】
ステップS516では、現在の列が通常の意味での参照列(外部キーが設定されている列)であるか否かを判断するが、「テーブル列定義テーブル」302の第17レコードの外部キーは「真」であるので、この判断結果は「真」である。従って、ステップS517に進む。
【0083】
ステップS517では、「テーブル列定義テーブル」302の第17レコードの「リレーションID」「4」を検索し、「リレーション定義テーブル」303から「リレーションID」「4」に対応する親テーブルの「テーブルID」「3」を検索する(ステップS517)。この親テーブルの「テーブルID」「3」が参照先のテーブルの「テーブルID」である。つぎに、「テーブルID」が「3」のテーブルである「メーカテーブル」対象テーブルとする(ステップS518)。
【0084】
次に、「テーブル列ノードテーブル」305「メーカテーブル」「メーカID」についてのレコードを追加する(ステップS514)。このレコードの「テーブル列ノードID」は、6であるが、これは通し番号(ステップS514を実行する度に増加する番号)である。また、このレコードの親ノードは、5であるが、これはステップS513を再帰的に呼び出す際の「リレーション逆探索ID」である。更に、このレコードの「親ノード内順番号」は1であるが、これは入れ子の列ループ(ステップS513)の番号である。更に、「ノード区分」は、「参照列」であるが、これは現在の「メーカID」が参照テーブルのものであることより求まる。このレコードの「リレーション逆探索ID」は、6であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」306の「リレーション逆探索ID」及び「リレーション逆探索リストテーブル」307の「リレーション逆探索ID」と一致している限りどのような番号であってもよい。
【0085】
次に、「リレーション逆探索テーブル」306に「メーカテーブル」の「メーカID」についてのレコードを追加する(ステップS521)。このレコードの「リレーション逆探索ID」は、6であるが、これは「テーブル列ノードテーブル」305の「リレーション逆探索ID」と一致するものである。このレコードの「テーブルID」は、3であるが、これは「テーブル列定義テーブル」302の第20レコードの「テーブルID」の値である。このレコードの「テーブル列ID」は、1であるが、これは「テーブル列定義テーブル」302の第20レコードの「テーブル列ID」の値である。
【0086】
現在の列は「メーカテーブル」の「メーカID」であり、ルートノードでないので、ステップS523に進む。
【0087】
ステップS523では、「テーブル列ノードテーブル」305の現在のレコード(「リレーション逆探索ID」が6であるレコード)の「親ノードID」「5」を検索する。そして、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が6であるレコードの「テーブルID」「3」及び「テーブルID」が3であるテーブル「メーカテーブル」の主キーが設定されている列の「テーブル列ID」「1」を検索し、これらを「リレーション列定義テーブル」304における「親テーブルID」及び「親テーブル列ID」の検索条件値とする。更に、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が5であるレコードの「テーブルID」「2」及び「テーブル列ID」「1」を検索し、これらを「リレーション定義テーブル」304における「子テーブルID」及び「子テーブル列ID」の検索条件値とする。更に、「リレーション列定義テーブル」304から「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」が「2」、「1」、「3」及び「1」であるレコードの「リレーションID」「4」を検索する(ステップS524)。
【0088】
次に、「リレーション逆探索リストテーブル」307にレコードを追加する(ステップS525)。追加レコードの「リレーション逆探索ID」は、6であるが、これは、「テーブル列ノードテーブル」305における現在の「リレーション逆探索ID」及び「リレーション逆探索テーブル」306における現在の「リレーション逆探索ID」に一致するものである。追加レコードの「リレーション逆順番」は、1であるが、これはステップS522の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションID」は4であるが、これはステップS524で検索したものである。
【0089】
次に、現在の列は「メーカ車両テーブル」の「メーカID」であり、ルートノードでないので、ステップS523に戻る。
【0090】
ステップS523では、「テーブル列ノードテーブル」305の現在のレコード(「リレーション逆探索ID」が5であるレコード)の「親ノードID」「4」を検索する。そして、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が5であるレコードの「テーブルID」「2」及び「テーブルID」が2であるテーブル「メーカ車両テーブル」の主キーが設定されている列の「テーブル列ID」「1」を検索し、これらを「リレーション列定義テーブル」304における「親テーブルID」及び「親テーブル列ID」の検索条件値とする。更に、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が4であるレコードの「テーブルID」「1」及び「テーブル列ID」「4」を検索し、これらを「リレーション定義テーブル」304における「子テーブルID」及び「子テーブル列ID」の検索条件値とする。更に、「リレーション列定義テーブル」304から「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」が「1」、「4」、「2」及び「1」であるレコードの「リレーションID」「1」を検索する(ステップS524)。
【0091】
次に、「リレーション逆探索リストテーブル」307にレコードを追加する(ステップS525)。追加レコードの「リレーション逆探索ID」は、6であるが、これは、「テーブル列ノードテーブル」305における現在の「リレーション逆探索ID」及び「リレーション逆探索テーブル」306における現在の「リレーション逆探索ID」に一致するものである。追加レコードの「リレーション逆順番」は、2であるが、これはステップS522の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションID」は1であるが、これはステップS524で検索したものである。
【0092】
現在、親テーブル「物件テーブル」なっているので、ステップS522の繰返しを抜けて、ステップS516に進む。
【0093】
ステップS516では、現在の列が通常の意味での参照列(外部キーが設定されている列)であるか否かを判断するが、「テーブル列定義テーブル」302の第20レコードの外部キーは「偽」であるので、この判断結果は「偽」である。従って、ステップS517〜S519はスキップして、ステップS514に戻る。
【0094】
次に、「テーブル列ノードテーブル」305に「メーカテーブル」の「メーカ名」についてのレコードを追加する(ステップS514)。このレコードの「テーブル列ノードID」は、7であるが、これは通し番号(ステップS514を実行する度に増加する番号)である。また、このレコードの親ノードは、5であるが、これはステップS513を再帰的に呼び出す際の「リレーション逆探索ID」である。更に、このレコードの「親ノード内順番号」は2であるが、これは入れ子の列ループ(ステップS513)の番号である。更に、「ノード区分」は、「参照列」であるが、これは現在の「メーカ名」が参照テーブルのものであることより求まる。このレコードの「リレーション逆探索ID」は、7であり、これは通し番号であるが、過去に用いられなかった番号であり、且つ、「リレーション逆探索テーブル」306の「リレーション逆探索ID」及び「リレーション逆探索リストテーブル」307の「リレーション逆探索ID」と一致している限りどのような番号であってもよい。
【0095】
次に、「リレーション逆探索テーブル」306に「メーカテーブル」の「メーカ名」についてのレコードを追加する(ステップS521)。このレコードの「リレーション逆探索ID」は、7であるが、これは「テーブル列ノードテーブル」305の「リレーション逆探索ID」と一致するものである。このレコードの「テーブルID」は、3であるが、これは「テーブル列定義テーブル」302の第21レコードの「テーブルID」の値である。このレコードの「テーブル列ID」は、2であるが、これは「テーブル列定義テーブル」302の第21レコードの「テーブル列ID」の値である。
【0096】
現在の列は「メーカテーブル」の「メーカ名」であり、ルートノードでないので、ステップS523に進む。
【0097】
ステップS523では、「テーブル列ノードテーブル」305の現在のレコード(「リレーション逆探索ID」が7であるレコード)の「親ノードID」「5」を検索する。そして、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が7であるレコードの「テーブルID」「3」及び「テーブルID」が3であるテーブル「メーカテーブル」の主キーが設定されている列の「テーブル列ID」「1」を検索し、これらを「リレーション列定義テーブル」304における「親テーブルID」及び「親テーブル列ID」の検索条件値とする。更に、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が5であるレコードの「テーブルID」「2」及び「テーブル列ID」「1」を検索し、これらを「リレーション定義テーブル」304における「子テーブルID」及び「子テーブル列ID」の検索条件値とする。更に、「リレーション列定義テーブル」304から「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」が「2」、「1」、「3」及び「1」であるレコードの「リレーションID」「4」を検索する(ステップS524)。
【0098】
次に、「リレーション逆探索リストテーブル」307にレコードを追加する(ステップS525)。追加レコードの「リレーション逆探索ID」は、7であるが、これは、「テーブル列ノードテーブル」305における現在の「リレーション逆探索ID」及び「リレーション逆探索テーブル」306における現在の「リレーション逆探索ID」に一致するものである。追加レコードの「リレーション逆順番」は、1であるが、これはステップS522の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションID」は4であるが、これはステップS524で検索したものである。
【0099】
次に、現在の列「メーカ車両テーブル」「メーカID」であり、ルートノードでないので、ステップS523に戻る。
【0100】
ステップS523では、「テーブル列ノードテーブル」305の現在のレコード(「リレーション逆探索ID」が7であるレコード)の「親ノードID」「5」を検索する。そして、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が7であるレコードの「テーブルID」「3」及び「テーブルID」が3であるテーブル「メーカテーブル」の主キーが設定されている列の「テーブル列ID」「1」を検索し、これらを「リレーション列定義テーブル」304における「親テーブルID」及び「親テーブル列ID」の検索条件値とする。更に、「リレーション逆探索テーブル」306から「リレーション逆探索ID」が5であるレコードの「テーブルID」「2」及び「テーブル列ID」「1」を検索し、これらを「リレーション定義テーブル」304における「子テーブルID」及び「子テーブル列ID」の検索条件値とする。更に、「リレーション列定義テーブル」304から「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」が「2」、「1」、「3」及び「1」であるレコードの「リレーションID」「1」を検索する(ステップS524)。
【0101】
次に、「リレーション逆探索リストテーブル」307にレコードを追加する(ステップS525)。追加レコードの「リレーション逆探索ID」は、7であるが、これは、「テーブル列ノードテーブル」305における現在の「リレーション逆探索ID」及び「リレーション逆探索テーブル」306における現在の「リレーション逆探索ID」に一致するものである。追加レコードの「リレーション逆順番」は、2であるが、これはステップS522の繰返しにおける現在の繰返し番号である。追加レコードの「リレーションID」は1であるが、これはステップS524で検索したものである。
【0102】
現在、親テーブル「物件テーブル」なっているので、ステップS522の繰返しを抜けて、ステップS516に進む。
【0103】
ステップS516では、現在の列が通常の意味での参照列(外部キーが設定されている列)であるか否かを判断するが、「テーブル列定義テーブル」302の第21レコードの外部キーは「偽」であるので、この判断結果は「偽」である。従って、ステップS517〜S519はスキップする。
【0104】
そして「メーカテーブル」対象テーブルとした列ループ(ステップS513)は終了したので、対象テーブル「メーカ車両テーブル」戻して、「メーカ車両テーブル」についての第2回目のループに入る。
【0105】
以下、同様にして処理を続け、「テーブル列ノードテーブル」305、「リレーション逆探索テーブル」306及び「リレーション逆探索リストテーブル」307を完成する。
【0106】
次に、フィルタ条件入力手段603が下記の方法によりフィルタ条件を入力する。
【0107】
フィルタの条件をユーザに入力させるために図21に示す「フィルタ作成ダイアログ画面」131を表示する。「フィルタ作成ダイアログ画面」131は、フィルタ名を入力するためのテキストボックス132、対象データを絞り込むか否かを決定するためのチェックボックス133、対象データを絞り込む場合に絞り込み条件を設定するための「対象データ絞り込み設定ダイアログ画面」141(図22)を呼び出すための「絞り込み設定…」ボタン134、分類に使用する列を設定するためのコンボボックス135、フォルダを自分で設定するか否かを決定するためのチェックボックス136、フォルダを自分で設定する場合にフォルダを設定するための「フォルダ設定ダイアログ画面」151(図23)を呼び出すための「フォルダ設定…」ボタン137、物件をソートするか否かを決定するためのチェックボックス138、物件をソートする場合にソート条件を設定するための「ソートダイアログ画面」161(図24)を呼び出すための「ソート条件設定…」ボタン139を備える。
【0108】
フィルタ名を入力するためのテキストボックス132には、ユーザが任意のフィルタ名を入力する。図21の例では、フィルタ名は「エリア・販売店で分類」となっている。
【0109】
対象データを絞り込まない場合には、物件データベースに格納されている全ての物件データが母集合となる。対象データを絞り込む場合には、物件テーブルに格納されている物件データの一部が母集合となる。ユーザは、対象データを絞り込みたい場合には、チェックボックス133をチェックし、「絞り込み設定…」ボタン134を押す。すると、図22に示す「対象データ絞り込み設定ダイアログ画面」141が表示される。
【0110】
ユーザが、表示されている「条件」欄142のうちのいずれかを選択する。図22の例では、ユーザが、左上隅の欄142−1を選択している。次に、ユーザが「抽出条件に使用する項目」コンボボックス143の矢印ボタンを押すと、図17に示すような階層構造で表した全テーブルの全列(「物件ID」〜「サムネイル画像」、「メーカID」〜「車両名」、…、「販売店ID」〜「備考」)のプルダウンリストが表示される。なお、図17に示すような階層構造のリストは、テーブル列ノードテーブル305、リレーション逆探索テーブル306及びテーブル列定義テーブル302を基に作成できる。すなわち、テーブル列ノードテーブル305の各レコードに記述されている「リレーション逆探索ID」に対応したテーブルの列名が、テーブル列ノードテーブル305の「親ノードID」によって示される階層構造に従って、図17に示すような階層構造のリストに表示されるが、その列名は、リレーション逆探索テーブル306の「テーブル列ID」と同一の「テーブル列ID」を有するレコードの「列名(日本語表記)」をテーブル列定義テーブル302から検索して得たものである。ユーザはプルダウンリストから所望の列を選択する。図22の例では、ユーザがメーカ名を選択した後のコンボボックス143を示している。そして、ユーザは、抽出条件のラジオボタングループ144のうちから所望のラジオボタンを選択する。図22の例では、ユーザは抽出条件として「値指定」144−1を選択している。値指定の場合には、コンボボックス145において「=(等しい)」、「≠(等しくない)」、…、「空でない」のうちの何れかを選択し、例えば、「=(等しい)」を選択したときには、等しくなる値をテキストボックス146に入力する。なお、テキストボックス146に入力する文字としてワイルドカードを用いることも可能であり、この場合には、前方一致、後方一致又は部分一致を設定することができる。図22の例では、「=(等しい)」を選択し、等しくなる値として「TOYOHASHI」を入力している。次に、ユーザが「追加」ボタン147を押すと、設定した条件が選択している欄142に入力される。図22の例では、欄142−1に条件として「メーカ名=’TOYOHASHI’」が入力されている。ユーザは、他の欄142にも同様に条件を設定し、これらの条件をコンボボックス148の値を「AND」又は「OR」に設定することにより結合する。このようにして対象データ絞り込み条件が設定されたならば、ユーザは「OK」ボタン149を押し、これにより対象データ絞り込み条件の設定が終了する。
【0111】
図21の例では、フィルタ名として「エリア・販売店で分類」をテキストボックスに入力しているように、分類を2階層構造とし、階層1で「エリア名」により分類し、階層2で「販売店名」により分類することとしている。コンボボックス135の矢印ボタンを押すと、コンボボックス143の場合と同様に、図17に示すような階層構造で表した全テーブルの全列(「物件ID」〜「サムネイル画像」、「メーカID」〜「車両名」、…、「販売店ID」〜「備考」)のプルダウンリストが表示される。ユーザはプルダウンリストから所望の列を選択する。図21の例では、ユーザは階層1のコンボボックス135−1で「エリア名」を選択し、階層2のコンボボックス135−2で「販売店名」を選択する。
【0112】
「フォルダを自分で設定する」チェックボックス136をチェックしないと、分類に使用する列の値が重複するレコードがグループ化され、検索条件の下にグループ毎にフォルダが作成される(フォルダについては後述する。)。例えば、分類に使用する列が「メーカ名」である場合には「物件テーブル」のレコードは、メーカ毎にグループ化され、メーカ毎のフォルダが作成される。
【0113】
一方、ユーザは、フォルダを自分で設定したい場合には、「フォルダを自分で設定する」チェックボックス136をチェックして、「フォルダ設定…」ボタン137を押す。すると、図23に示すような「フォルダ設定ダイアログ画面」151が表示される。「フォルダ設定ダイアログ画面」151は「対象データ絞り込み設定ダイアログ画面」141と同様の構成の部分を有し、ユーザは、対象データ絞り込み条件を「対象データ絞り込み設定ダイアログ画面」141に入力する場合と同様の操作により、フォルダ設定条件を「フォルダ設定ダイアログ画面」151に入力する。入力した各フォルダのフォルダ設定条件は、左側のリストボックス152に表示される。図23の例では、2つのフォルダ(「ナガシマ」フォルダ及び「MAX」フォルダ)が作成済みの状態を示している。また、「条件」欄153には、「ナガシマ」フォルダの設定条件が表示されている。ユーザは、所望のフォルダを全て作成したならば、「OK」ボタン154を押して、図21に示す「フィルタ作成ダイアログ画面」131に戻る。
【0114】
ユーザは、物件をソートしたい場合には、「物件をソートする」チェックボックス138をチェックし、「ソート条件設定…」ボタン139を押す。すると、図24に示すような「ソートダイアログ画面」161が表示される。リストボックス162には「物件テーブル」全列が表示される。このリストボックス162の内容は、テーブル列定義テーブル302を基に作成できる。ユーザは、ソートに利用したい列を選択して、「>」ボタン163を押すことにより、その列をリストボックス164にコピーする。ユーザは、ソートに利用したい他の列があれば、その列を選択し、「>」ボタン163を押して、その列をリストボックス164にコピーする。更に、ユーザは、ラジオボタングループ165のうちの「昇順」ボタン又は「降順」ボタンを押して、ソートの順序を指定する。ユーザは、このようにして、ソートに利用したい列及びソート順序が決定したならば、「OK」ボタン166を押して、図21に示す「フィルタ作成ダイアログ画面」131に戻る。
【0115】
以上のようにして、フィルタ条件の入力を完了する。
【0116】
次に、作成したフィルタ条件の内容を反映する「フィルタテーブル」308、「フィルタ分類列テーブル」309、「フィルタ分類フォルダテーブル」310、「条件テーブル」311及び「条件詳細テーブル」312をフィルタテーブル等作成手段604が作成する。テーブル308〜312を図25に示す。
【0117】
「フィルタテーブル」308の列は、「フィルタID」、「フィルタ名」、「全データ対象」及び「条件ID」である。「フィルタID」は、各フィルタ毎に固有のIDであり、主キーである。「フィルタ名」は、各フィルタの名称である。「全対象データ」は、フィルタが物件テーブルの全レコードを対象とするか否かを示し、真のときにはフィルタが物件データの全レコードを対象とすることを示し、偽のときにはフィルタが物件データのレコードうち絞り込み条件により絞り込まれたもののみを対象とすることを示す。「条件ID」は、「全対象データ」の値が偽であるとき(すなわち、絞り込むとき)に、「条件テーブル」のレコードのうちの当該絞り込み条件に対応するものの「条件ID」の値を指し示す外部キーである。図25の例では、「フィルタID」の値は、「1」であり、「フィルタ名」の値は、「フィルタ作成ダイアログ画面」131(図21)で設定した「エリア・販売店で分類」であり、「全データ対象」の値は、「フィルタ作成ダイアログ画面」131(図21)の「対象データを絞り込む」チェックボックスをチェックしたのに対応して「偽」である。「条件ID」の値は、「1」であり、「条件テーブル」311の第1レコードを指し示す。
【0118】
「フィルタ分類列テーブル」309の列は、「フィルタID」、「階層番号」、「リレーション逆探索ID」及び「分類条件あり/なし」である。「フィルタID」は、「フィルタテーブル」308の「フィルタID」に対応するものである。「階層番号」は、「フィルタ作成ダイアログ画面」131(図21)の分類に使用する列を設定するためのコンボボックス135の階層番号である。コンボボックス135の上から順に1、2、…の「階層番号」が付けられる。図6の例では、2つの階層(階層1の「エリア名」及び階層2の「販売店名」)を設定したのに対応して、「階層番号」が1のレコードと2のレコードがある。「フィルタID」と「階層番号」の連結キーが主キーとなる。「リレーション逆探索ID」は、階層に設定された列の「リレーション逆探索ID」であり、「テーブル列ノードテーブル」305(図15)から検索される。図25の例では、階層1に「エリア名」を設定したのに対応して、階層1のレコードの「リレーション逆探索ID」の値は、「26」であり、階層2に「販売店名」を設定したのに対応して、階層2のレコードの「リレーション逆探索ID」の値は、「29」である(図15参照)。「分類条件あり/なし」は、当該階層に分類条件が設定されたか否かを示す。「フィルタ作成ダイアログ画面」131(図21)の「フォルダを自分で設定する」チェックボックス136がチェックされていれば「真」であり、チェックされていなければ「偽」である。図21の例では、階層2の「販売店名」のチェックボックスのみがチェックされているので、階層1のレコードの「分類条件あり/なし」が「偽」であり、階層2のレコードの「分類あり/なし」が「真」である。
【0119】
「フィルタ分類フォルダテーブル」310の列は、「フィルタID」、「階層番号」、「フォルダID」、「順番号」、「フォルダ名」及び「条件ID」である。「フィルタID」は、「フィルタ分類列テーブル」309の「フィルタID」に対応するものである。「階層番号」は、「フィルタ分類列テーブル」309の「階層番号」に対応するものである。「フォルダID」は、「フィルタID」及び「階層番号」の組合せが同一のレコードの識別番号である。「順番号」は、「フォルダID」及び「階層番号」の組合せが同一のレコードの通し番号である。「フィルタ分類フォルダテーブル」310にレコードを追加する段階では、「フォルダID」と「順番号」は等しく、図25の例でもそうなっているが、フォルダの削除を行うと、「フォルダID」には抜けが生じる。従って、一般に「フォルダID」は、「順番号」と等しいとは限らない。「フィルタID」、「階層番号」及び「フォルダID」の連結キー又は「フィルタID」、「階層番号」及び「順番号」の連結キーが主キーとなる。「フォルダ名」は、フォルダの名称であり、「フォルダ設定ダイアログ画面」151(図23)のリストボックス152に設定したものである。「条件ID」は、「条件テーブル」311の「条件ID」を指し示すものであり、外部キーである。
【0120】
「条件テーブル」311の列は、「条件ID」、「条件1()内演算子」、「条件2()内演算子」、「条件3()内演算子」、「条件4()内演算子」、「条件1−2間演算子」、「条件2−3間演算子」及び「条件3−4間演算子」である。「条件ID」は各レコード毎に固有の番号であり、主キーである。「条件1()内演算子」〜「条件3−4間演算子」は、「対象データ絞り込み設定ダイアログ画面」141(図22)のコンボボックス148又は「フォルダ設定ダイアログ画面」151(図23)のコンボボックス155に設定した論理演算子である。つまり、レコードが絞り込み条件についてのものであれば、「条件1()内演算子」〜「条件3−4間演算子」は、「対象データ絞り込み設定ダイアログ画面」141のコンボボックス148に設定した論理演算子であり、レコードがフォルダ設定条件についてのものであれば、「条件1()内演算子」〜「条件3−4間演算子」は、「フォルダ設定ダイアログ画面」151のコンボボックス155に設定した論理演算子である。
【0121】
「条件詳細テーブル」312の列は、「条件ID」、「条件番号」、「条件サブ番号」、「()内順番号」、「リレーション逆探索ID」、「条件区分」、「範囲指定から」、「範囲指定まで」、「値指定」、「値指定比較演算子」、「含む文字列」、「含まない文字列」及び「YES/NO」である。「条件ID」は、「条件テーブル」の「条件ID」に対応するものである。「条件番号」は、「対象データ絞り込み設定ダイアログ画面」141(図22)又は「フォルダ設定ダイアログ画面」151(図23)で設定した条件の行番号である。「条件サブ番号」は、「対象データ絞り込み設定ダイアログ画面」141(図22)又は「フォルダ設定ダイアログ画面」151(図23)で設定した条件の各行における条件式の列番号である。「()内順番号」は、「対象データ絞り込み設定ダイアログ画面」141(図22)又は「フォルダ設定ダイアログ画面」151(図23)で設定した条件の各行における条件式の通し番号である。条件を入力した当初は「条件サブ番号」と「()内順番号」は等しく、図25もその状態を示しているが、条件を削除すると、「条件サブ番号」には抜けが生じる。従って、「条件サブ番号」と「()内順番号」は、一般的には等しいとは限らない。「条件ID」、「条件番号」及び「条件サブ番号」の連結キー又は「条件ID」、「条件番号」及び「()内順番号」の連結キーが主キーとなる。「リレーション逆探索ID」は、条件式が設定された列の「リレーション逆探索ID」であり、「テーブル列ノードテーブル」305(図15)から検索される。図25の例では、「メーカ名=’TOYOHASHI’」なる条件が設定された第1レコードの「リレーション逆探索ID」は、「メーカ名」に対応する7であり、「車両名=’アスティマ’」なる条件が設定された第2レコードの「リレーション逆探索ID」は、「車両名」に対応する9であり、「車両名=’ローラ’」なる条件が設定された第3レコードの「リレーション逆探索ID」は、「車両名」に対応する9であり、「販売店名=’ナガシマ入間店’」なる条件が設定された第4レコードの「リレーション逆探索ID」は、「販売店名」に対応する29であり、「販売店名=’ナガシマ大宮店’」なる条件が設定された第5レコードの「リレーション逆探索ID」は、「販売店名」に対応する29であり、「販売店名=’MAX’」なる条件が設定された第6レコードの「リレーション逆探索ID」は、「販売店名」に対応する29である。「条件区分」は、条件の種類が「1(範囲指定)」、「2(値指定)」、「3(文字列を含む)」、「4(文字列を含まない)」及び「5(YES/NO)」のうちのどれであるかを示す。これは、「対象データ絞り込み設定ダイアログ画面」141(図22)のラジオボタングループ144又はフォルダ設定ダイアログ画面(図23)のラジオボタングループ156で選択したラジオボタンを反映する。「範囲指定から」〜「YES/NO」には、条件の種類に応じた条件の値が設定される。図25の例では、「対象データ絞り込み設定ダイアログ画面141」(図22)及び「フォルダ設定ダイアログ画面」151(図23)で、設定した全条件要素について条件種類を「2(値指定)」とし、値指定比較演算子を「=(等しい)」としているのに対応して、第1レコードから第6レコードの「値指定」に値(「TOYOHASHI」、「アスティマ」、「ローラ」、「ナガシマ入間店」及び「MAX」)が入れられ、「値指定比較演算子」に「=」が入れられている。
【0122】
次に、SQL文作成手段605が行う各フォルダに関連付けるSQL文を作成する方法について説明する。
【0123】
図26を参照すると、まず、「フィルタテーブル」308(図25)から1レコードを取得する(ステップS531)。次に、SQL文を初期化する(ステップS532)。初期化では、SQL文のうちの以下の部分を作成する。
【0124】
select 物件テーブル.*
from メーカテーブル,
メーカ車両テーブル,
物件テーブル
次に、取得したレコードの「全データ対象」の値をみることにより、対象データを絞り込むか否かを判断する(ステップS533)。「全データ対象」の値が「偽」であれば、対象データを絞り込むと判断し、ステップS534に進む。「全データ対象」の値が「真」であれば、対象データを絞り込まないと判断し、ステップS534をスキップして、ステップS535に進む。
【0125】
ステップS534では、「条件詳細テーブル」312(図25)を基にSQL文のwhere句を作成する。図27は、ステップS534で作成したwhere句が追加されたSQL文の例を示す。ステップS534の詳細については後述する。
【0126】
ステップS535では、フィルタのルートとなるフォルダ(すなわち、階層が0のフォルダ)を作成する。次に、階層番号を0にセットして(ステップS536)、階層1以下のフィルタフォルダを作成する(ステップS537)。ステップS537の詳細については後述する。
【0127】
次に、ステップS534の詳細について説明する。
【0128】
図28を参照すると、まず、ステップS531で取得したレコードの条件IDと同一のIDを有するレコードを「条件詳細テーブル」312(図25)から検索する(ステップS541)。図25の例では、3つのレコード(第1レコード〜第3レコード)が検索される。次に、「条件詳細テーブル」312(図25)から検索された全てのレコードについてステップS543〜S547を繰り返す(ステップS542)。
【0129】
ステップS543では、「条件詳細テーブル」312の当該レコードの「リレーション逆探索ID」と同一の「リレーション逆探索ID」を有するレコードを「リレーション逆探索テーブル」306(図16)から検索する。「条件詳細テーブル」312の第1レコードについて処理をしているときには、このレコードの「リレーション逆探索ID」の値は「7」であるので、「リレーション逆探索テーブル」306の第7レコードが検索される。次に、ステップS543で検索したレコードの「テーブルID」と同一の「テーブルID」を有するレコードを「テーブル定義テーブル」301(図5)から検索し、そのレコードの「テーブル名(日本語表記)」の値を取得する(ステップS544)。ステップS543で検索したレコードが第7レコードであるときには、そのレコードの「テーブルID」は「3」であるので、「メーカテーブル」が取得される。次に、ステップS543で検索したレコードの「テーブルID」及び「テーブル列ID」と同一の「テーブルID」及び「テーブル列ID」を有するレコードを「テーブル列定義テーブル」302(図6)から検索し、そのレコードの「列名(日本語表記)」を取得する(ステップS545)。ステップS543で検索したレコードが第7レコードであるときには、そのレコードの「テーブルID」は「3」であり「テーブル列ID」は「2」であるので、「メーカ名」が取得される。次に、ステップS544及びS545で取得した「テーブル名(日本語表記)」及び「列名(日本語表記)」、条件テーブル311の内容並びに「条件詳細テーブル」312(図25)の「条件区分」〜「YES/NO」の内容を基にしてSQL文のwhere句を作成する(ステップS546)。図25に示す「条件詳細テーブル」312の第1レコードの場合には、where句は、
(メーカテーブル.メーカ名=’TOYOHASHI’)
となる。同様に、図25に示す「条件詳細テーブル」312の第2レコード及び第3レコードの場合には、
(メーカ車両テーブル.車両名=’アスティマ’)
(メーカ車両テーブル.車両名=’ローラ)
となる。これらをまとめたものを図29に示す。下線部が作成されたwhere句である。但し、ステップS542のループを繰り返すたびに一句ずつ作成される。
【0130】
次に、リレーションを逆探索してSQL文のwhere句に条件を追加する(ステップS547)。
【0131】
ステップS547の詳細について図30を参照して説明する。
【0132】
まず、「条件詳細テーブル」312(図25)の当該レコードの「リレーション逆探索ID」と同一の「リレーション逆探索ID」を有するレコードを「リレーション逆探索リストテーブル」307(図18)から検索する(ステップS551)。図25の「条件詳細テーブル」312の第1レコードの場合には、「リレーション逆探索ID」が「7」であるので、「リレーション逆探索リストテーブル」307の第4レコード及び第5レコードが検索される。次に、ステップS553〜S554をステップS551で検索されたレコードについて繰り返す(ステップS552)。
【0133】
ステップS553では、「リレーション逆探索リストテーブル」307から検索されたレコードのうちの当該レコードの「リレーションID」を取得し、この「リレーションID」と同一の「リレーションID」を有するレコードを「リレーション列定義テーブル」304(図8)から検索する。当該レコードが「リレーション逆探索リストテーブル」307(図18)の第4レコードであるときには、「リレーションID」は「4」であるので、「リレーション列定義テーブル」304(図8)の第5レコードが検索される。この第5レコードの「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」は、それぞれ、「2」、「1」、「3」及び「1」である。そこで、ステップS544及びS545の場合と同様に、子テーブルの「テーブル名(日本語表記)」、子テーブルの「列名(日本語表記)」、親テーブルの「テーブル名(日本語表記)」及び親テーブルの「列名(日本語表記)」を「テーブル定義テーブル」301及び「テーブル列定義テーブル」302から検索する。「リレーション列定義テーブル」304(図8)の第5レコードの場合には、子テーブルの「テーブル名(日本語表記)」、子テーブルの「列名(日本語表記)」、親テーブルの「テーブル名(日本語表記)」及び親テーブルの「列名(日本語表記)」は、それぞれ、「メーカ車両テーブル」、「メーカID」、「メーカテーブル」及び「メーカID」である。次に、ステップS553で検索された子テーブルの「テーブル名(日本語表記)」、子テーブルの「列名(日本語表記)」、親テーブルの「テーブル名(日本語表記)」及び親テーブルの「列名(日本語表記)」を基にSQL文のwhere句を追加する(ステップS554)。ここでいうwhere句のことを一般的に等結合の結合条件をいう。「リレーションID」が4のリレーションについては、このwhere句は、
メーカテーブル.メーカID=メーカ車両テーブル.メーカID
である。
【0134】
「リレーション逆探索ID」が「7」であるときのステップS552の2度目のループにおいて、「リレーション逆探索ID」及び「リレーション逆順番」が、それぞれ、「7」及び「2」である「リレーション逆探索リストテーブル」307(図18)のレコードの「リレーションID」は「1」であるが、「リレーションID」が「1」である「リレーション列定義テーブル」304(図8)のレコードは2つ(第1レコード及び第2レコード)であるので、この2つのレコードについてwhere句を作成する。これらのwhere句は、
メーカ車両テーブル.メーカID=物件テーブル.メーカID
及び
メーカ車両テーブル.車両ID=物件テーブル.車両ID
である。これらをまとめたものを図31に示す。下線部が追加されたwhere句である。但し、ステップS552の第1ループを実行したときに下線部第1行が作成され、ステップS552の第2ループを実行したときに下線部第2行が作成される。
【0135】
「条件詳細テーブル」312(図25)の第2レコード及び第3レコードについてのステップS542についての繰返しにおいては、「リレーション逆探索ID」が「9」である。「リレーション逆探索ID」が「9」である「リレーション逆探索リストテーブル」307(図18)のレコードの「リレーションID」は「1」であり、これについてのステップS552の処理は既に行ったので、これを行う必要はない。
【0136】
このようにして、図27に示すSQL文が作成される。
【0137】
次に、ステップS537(図26)の処理について詳細に説明する。
【0138】
図32を参照すると、まず、階層番号iに1を加算し(ステップS561)、加算後の階層番号が最下層の階層番号を超えている場合には、全てのフィルタフォルダを作成が完了していることになるので、図26の処理に戻る(ステップS562)。そうでない場合には、ステップS563(図33)に進む。
【0139】
ステップS563では、「フィルタ分類列テーブル」309(図25)から階層番号iのレコードを検索する。ステップS563で検索したレコードの「分類条件あり/なし」が「真」であればステップS581に進み、「偽」であればステップS565に進む(ステップS564)。
【0140】
ステップS565では、分類列を求めるSQL文を作成する。ステップS565で作成されたSQL文の例を図34に示す。ステップS565の詳細については後述する。次に、ステップS565で作成したSQL文を実行する(ステップS566)。例えば、図34のSQL文を実行すると、分類列である「エリアテーブル」の「エリア名」の全ての値が求められる。次に、分類列(例えば、「エリアテーブル「エリア名」)の値をパラメータとして、分類列の値の数だけステップS568〜S571を繰り返す(ステップS567)。
【0141】
ステップS568では、分類列の値の名称のフォルダを作成する。次に、分類列の値からの条件をステップS534で作成したSQL文のwhere句に追加する(ステップS569)。ステップS534で作成したSQL文の例を図27に示したが、このSQL文にステップS569でwhere句を追加したSQL文を図35に示す。図35の例では、
and エリアテーブル.エリア名=’県央’
が追加されている。
【0142】
次に、リレーションを逆探索してSQL文のwhere句に条件を追加する(ステップS570)。図35に示すSQL文にステップS570で条件を追加したSQL文を図36に示す。図36の例では、
and エリアテーブル.エリアID=物件テーブル.エリアID
が追加されている。ステップS570の詳細は、既に図30を参照して説明した通りである。
【0143】
次に、ステップS568で作成したフォルダにステップS570を実行した後のSQL文を設定する(ステップS571)。
【0144】
ステップS567のループを抜けた後に、ステップS537(図32)を再帰的に呼出し、下の階層の処理に進む(ステップS572)。
【0145】
ステップS581では、「フィルタ分類フォルダテーブル」310(図25)から当該フィルタID及び階層番号を有するレコードを検索する(ステップS581)。次に、ステップS581で検索した全てのレコードについて、ステップS583〜S585を繰り返す(ステップS582)。
【0146】
ステップS582では、ステップS568と同様に、分類列の値の名称のフォルダを作成する。次に、ステップS534で作成したSQL文に条件詳細より求まるwhere句を追加する(ステップS584)。図27に示すSQL文にステップS584でwhere句を追加したSQL文を図37に示す。図37の例では、
and (販売店テーブル.販売店名=’ナガシマ入間店’
or 販売店テーブル.販売店名=’ナガシマ大宮店’)
and 販売店テーブル.販売店ID=物件テーブル.販売店ID
が追加されている。但し、図37の例は、ステップS565〜S572を実行せずにステップS581〜S586を実行した場合のものであり、説明のために表したものであるが、図25に示す例では、ステップS561〜S564、S565〜S571「エリアテーブル「エリア名」ついて実行した後に、ステップS572からステップS537を再帰的に呼出し、ステップS561〜S564、S581〜S585「販売店テーブル「販売店名」ついて実行する。この場合には、ステップS584を実行した後のSQL文は、図38に示すようなものになる。ステップS584の詳細は、既に図28を参照して説明した通りである。
【0147】
次に、ステップS583で作成したフォルダにステップS584を実行した後のSQL文を設定する(ステップS585)。
【0148】
ステップS582のループを抜けた後に、ステップS537(図32)を再帰的に呼出し、下の階層の処理に進む(ステップS586)。
【0149】
次に、ステップS565の詳細について説明する。
【0150】
図39を参照すると、まず、分類列からSQL文を作成する(ステップS591)。すなわち、「フィルタ分類列テーブル」309(図25)から当該レコードの「リレーション逆探索ID」を取得し、この「リレーション逆探索ID」と同一の「リレーション逆探索ID」を有するレコードの「テーブルID」及び「テーブル列ID」を「リレーション逆探索テーブル」306(図16)から検索し、検索された「テーブルID」と同一の「テーブルID」を有するレコードの「テーブル名(日本語表記)」を「テーブル定義テーブル」301(図5)から検索し、検索された「テーブルID」及び「テーブル列ID」と同一の「テーブルID」及び「テーブル列ID」を有するレコードの「列名(日本語表記)」を「テーブル列定義テーブル」302から検索し、検索された「テーブル名(日本語表記)」及び「列名(日本語表記)」を含むSQL文を作成する。図25に示す「フィルタ分類列テーブル」309の例では、第1レコードの「リレーション逆探索ID」が26であるので、「テーブルID」及び「テーブル列ID」は、「4」及び「2」となり、「テーブル名(日本語表記)」及び「列名(日本語表記)」として「エリアテーブル」及び「エリア名」が検索され、図40に示すようなSQL文が作成される。
【0151】
次に、分類列を有するテーブルの主キーが付されている列の列名を用いてSQL文にwhere句を追加する(ステップS592)。すなわち、ステップS591の過程で検索された「テーブルID」と同一の「テーブルID」を有するレコードのうちの「主キー」が「真」であるレコードの「列名(日本語表記)」を「テーブル列定義テーブル」302(図6)から検索し、この「列名(日本語表記)」及びステップS591の過程で検索した「テーブル名(日本語表記)」を含むwhere句をSQL文に追加する。図25に示す「フィルタ分類列テーブル」309の第1レコードの「リレーション逆探索ID」が26であるので、「テーブルID」は「4」となり、「テーブル列定義テーブル」302(図6)からは「列名(日本語表記)」として「エリアID」が検索され、図41に示すようなwhere句及びサブクエリのselect句が追加される。
【0152】
次に、ステップS591で検索した「リレーション逆探索ID」と同一の「リレーション逆探索ID」を有するレコードを「リレーション逆探索リストテーブル」307から検索する(ステップS593)。
【0153】
次に、ステップS593で検索したレコードについてステップS595〜S596を繰り返す(ステップS594)。
【0154】
ステップS595では、ステップS593で検索したレコードの「リレーションID」と同一の「リレーションID」を有するレコードの「子テーブルID」、「子テーブル列ID」、「親テーブルID」及び「親テーブル列ID」を「リレーション列定義テーブル」304から検索し、「リレーション列定義テーブル」304から検索された「子テーブルID」と同一の「テーブルID」を有するレコードの「テーブル名(日本語表記)」を「テーブル定義テーブル」301(図5)から検索し、「リレーション列定義テーブル」304から検索された「子テーブルID」及び「子テーブル列ID」と同一の「テーブルID」及び「テーブル列ID」を有するレコードの「列名(日本語表記)」を「テーブル列定義テーブル」302(図6)から検索し、「リレーション列定義テーブル」304から検索された「親テーブルID」と同一の「テーブルID」を有するレコードの「テーブル名(日本語表記)」を「テーブル定義テーブル」301(図5)から検索し、「リレーション列定義テーブル」304から検索された「親テーブルID」及び「親テーブル列ID」と同一の「テーブルID」及び「テーブル列ID」を有するレコードの「列名(日本語表記)」を「テーブル列定義テーブル」302(図6)から検索する。
【0155】
次に、ステップS595で検索された子テーブル及び親テーブルの「テーブル名(日本語表記)」を用いてSQL文のサブクエリのfrom句を追加し、ステップS595で検索された子テーブル及び親テーブルの「テーブル名(日本語表記)」及び「テーブル列名(日本語表記)」を用いてSQL文のサブクエリのwhere句を追加する(ステップS596)。図25に示す「フィルタ分類列テーブル」309の第1レコードの場合には、子テーブル及び親テーブルの「テーブル名(日本語表記)」及び「テーブル列名(日本語表記)」として「物件テーブル」、「エリアID」、「エリアテーブル」及び「エリアID」が検索されるので、図42に示すように、from句及びwhere句として
from エリアテーブル,物件テーブル
where エリアテーブル.エリアID=物件テーブル.エリアID
が追加される。
【0156】
ステップS594のループを抜けたならば、分類列のテーブルの「主キー」からgroup by句を追加する(ステップS597)。すなわち、ステップS591の過程で検索された「テーブルID」と同一の「テーブルID」を有するレコードのうちの「主キー」が「真」であるレコードの「列名(日本語表記)」を「テーブル列定義テーブル」302(図6)から検索し、この「列名(日本語表記)」及びステップS591の過程で検索した「テーブル名(日本語表記)」を含むgroup by句をSQL文に追加する。図25に示す「フィルタ分類列テーブル」309の第1レコードの「リレーション逆探索ID」が26であるので、「テーブルID」は「4」となり、「テーブル列定義テーブル」302(図6)からは「列名(日本語表記)」として「エリアID」が検索され、ステップS591の過程では「テーブル名(日本語表記)」として「エリアテーブル」が検索されるので、図43に示すようなgroup by句
group by エリアテーブル.エリアID
が追加される。
【0157】
次に、分類列からorder by句を追加する(ステップS598)。すなわち、ステップS591で検索された「テーブル名(日本語表記)」及び「列名(日本語表記)」を含むorder by句を追加する。図25に示す「フィルタ分類列テーブル」309の例では、第1レコードの「リレーション逆探索ID」が26であるので、テーブル名(日本語表記)」及び「列名(日本語表記)」として「エリアテーブル」及び「エリア名」がステップS591で検索されているので、図44に示すようなorder by句
order by エリアテーブル.エリア名
が追加される。
【0158】
図26、28、30、32、33及び39に示す処理が終了すると、必要なフォルダが作成され、作成された各フォルダには、例えば、図36、38に示すようなSQL文313(図47)が設定される。
【0159】
作成されたフォルダは図2に示す「物件データ編集画面 データシートビュー」171のツリーリスト172にフィルタ毎に階層構造で表示される。例えば、図2に示すように、「エリア・販売店で分類」という名称のフィルタの下には、「県央」フォルダ、「県東」フォルダ及び「県西」フォルダが作成され、「県央」フォルダの下には、「ナガシマ」フォルダ及び「MAX」フォルダが作成される。そして、それぞれのフォルダにSQL文が関連付けられる。「県央」フォルダ、「県東」フォルダ、「県西」フォルダ、「ナガシマ」フォルダ及び「MAX」フォルダに関連付けられるSQL文は、それぞれ、図45、46、47、48及び49に示すようなものとなる。ユーザが「県央」フォルダを選択すると、図45に示すSQL文が実行されて、その実行結果がデータシートビュー173に表示される。同様に、ユーザが「県東」フォルダを選択すると、図46に示すSQL文が実行されて、その実行結果がデータシートビュー173に表示され、ユーザが「県西」フォルダを選択すると、図47に示すSQL文が実行されて、その実行結果がデータシートビュー173に表示されユーザが「ナガシマ」フォルダを選択すると、図48に示すSQL文が実行されて、その実行結果がデータシートビュー173に表示されユーザが「MAX」フォルダを選択すると、図49に示すSQL文が実行されて、その実行結果がデータシートビュー173に表示される。
【0160】
また、データシートビューを図3に示すフォームビュー193に切り替えると、データシートビューに表示される物件データのうちの任意の1件分の物件データがフォームビュー193に表示される。
【0161】
【発明の効果】
以上説明したように、本発明によれば、ユーザが所定の画面で検索条件を設定するのみで、階層化された分類の項目の値毎にフォルダが作成され、各フォルダに設定する問合せ文が自動作成され、ユーザがフォルダを選択したときにフォルダに設定された問合せ文が実行され、実行結果が表示されるようになり、しかも、データベースを構成するテーブルの構造及びテーブル間のリレーションを把握して行われるので、汎用性をもった機能として本発明を提供することが可能となる。
【図面の簡単な説明】
【図1】本発明の実施形態によるデータベース問合せ文作成装置の構成を示すブロック図である。
【図2】本発明の実施形態による「物件データ編集画面 データシートビュー」を示す図である。
【図3】本発明の実施形態による「物件データ編集画面 フォームビュー」を示す図である。
【図4】本発明の実施形態による物件データベースの構成を示す図である。
【図5】本発明の実施形態による「テーブル定義テーブル」の構成を示す図である。
【図6】本発明の実施形態による「テーブル列定義テーブル」の構成を示す図である。
【図7】本発明の実施形態による「リレーション定義テーブル」の構成を示す図である。
【図8】本発明の実施形態による「リレーション列定義テーブル」の構成を示す図である。
【図9】本発明の実施形態によるテーブル定義テーブル等作成手段の動作を示すフローチャートである。
【図10】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する「参照テーブル定義ダイアログ画面」を示す図である。
【図11】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する「物件テーブル定義ダイアログ画面」を示す図である。
【図12】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する第1の「参照列追加ダイアログ画面」を示す図である。
【図13】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する第2の「参照列追加ダイアログ画面」を示す図である。
【図14】本発明の実施形態によるテーブル定義テーブル等作成手段が表示する「物件テーブル定義ダイアログ画面」を示す図である。
【図15】本発明の実施形態による「テーブル列ノードテーブル」の構成を示す図である。
【図16】本発明の実施形態による「リレーション逆探索テーブル」の構成を示す図である。
【図17】図15に示す「テーブル列ノードテーブル」305を基に、全テーブルの全列のリレーションを階層構造で表示したものを示す図である。
【図18】本発明の実施形態似よる「リレーション逆探索リストテーブル」の構成を示すブロック図である。
【図19】本発明の実施形態によるテーブル列ノードテーブル等作成手段の動作を示す第1のフローチャートである。
【図20】本発明の実施形態によるテーブル列ノードテーブル等作成手段の動作を示す第2のフローチャートである。
【図21】本発明の実施形態によるフィルタ条件入力手段が表示する「フィルタ作成ダイアログ画面」を示す図である。
【図22】本発明の実施形態によるフィルタ条件入力手段が表示する「対象データ絞り込み設定ダイアログ画面」を示す図である。
【図23】本発明の実施形態によるフィルタ条件入力手段が表示する「フォルダ設定ダイアログ画面」を示す図である。
【図24】本発明の実施形態によるフィルタ条件入力手段が表示する「ソートダイアログ画面」を示す図である。
【図25】本発明の実施形態による「フィルタテーブル」、「フィルタ分類列テーブル」、「フィルタ分類フォルダテーブル」、「条件テーブル」及び「条件詳細テーブル」の構成を示す図である。
【図26】本発明の実施形態によるSQL文作成手段の動作を示す第1のフローチャートである。
【図27】本発明の実施形態によるステップS534で作成したwhere句が追加されたSQL文の例を示す。
【図28】本発明の実施形態によるSQL文作成手段の動作を示す第2のフローチャートである。
【図29】本発明の実施形態によるステップS546で作成したwhere句が追加されたSQL文の例を示す。
【図30】本発明の実施形態によるSQL文作成手段の動作を示す第3のフローチャートである。
【図31】本発明の実施形態によるステップS554で作成したwhere句が追加されたSQL文の例を示す。
【図32】本発明の実施形態によるSQL文作成手段の動作を示す第4のフローチャートである。
【図33】本発明の実施形態によるSQL文作成手段の動作を示す第5のフローチャートである。
【図34】本発明の実施形態によるステップS565で作成したSQL文の例を示す。
【図35】本発明の実施形態によるステップS569で作成したwhere句が追加されたSQL文の例を示す。
【図36】本発明の実施形態によるステップS570で作成したwhere句が追加されたSQL文の例を示す。
【図37】本発明の実施形態によるステップS584で作成したwhere句が追加された説明のためのSQL文の例を示す。
【図38】本発明の実施形態によるステップS584で作成したwhere句が追加された実際のSQL文の例を示す。
【図39】本発明の実施形態によるSQL文作成手段の動作を示す第6のフローチャートである。
【図40】本発明の実施形態によるステップS591による作成されたSQL文の例を示す。
【図41】本発明の実施形態によるステップS592で作成したwhere句が追加されたSQL文の例を示す。
【図42】本発明の実施形態によるステップS596で作成したwhere句が追加されたSQL文の例を示す。
【図43】本発明の実施形態によるステップS597で作成したgroup by句が追加されたSQL文の例を示す。
【図44】本発明の実施形態によるステップS598で作成したorder by句が追加されたSQL文の例を示す。
【図45】本発明の実施形態による図2に示す「県央」フォルダに関連付けられるSQL文の例を示す。
【図46】本発明の実施形態による図2に示す「県東」フォルダに関連付けられるSQL文の例を示す。
【図47】本発明の実施形態による図2に示す「県西」フォルダに関連付けられるSQL文の例を示す。
【図48】本発明の実施形態による図2に示す「ナガシマ」フォルダに関連付けられるSQL文の例を示す。
【図49】本発明の実施形態による図2に示す「MAX」フォルダに関連付けられるSQL文の例を示す。
【符号の説明】
601 テーブル定義テーブル等作成手段
602 テーブル列ノードテーブル等作成手段
603 フィルタ条件入力手段
604 フィルタテーブル等作成手段
605 SQL文作成手段
Claims (31)
- 検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報及び条件値により表現する手段と、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名並びに前記条件値を基に、検索条件式を作成する手段と、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。 - 検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報、条件の区分を示す条件区分及び該条件区分に対応する条件値により表現する手段と、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名、前記条件区分並びに該条件区分に対応する条件値を基に、検索条件式を作成する手段と、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。 - 選択するべき列を特定するための選択列特定情報を基に、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記選択するべき列の属するテーブルのテーブル名及び同列の列名を基に、selectキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルのテーブル名を基に、fromキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、whereキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、サブクエリのselectキーワードを含む句を作成する手段と、
前記選択するべき列の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段と、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名を基に、前記サブクエリのfromキーワードを含む句を作成する手段と、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、前記サブクエリの等結合の結合条件を作成する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。 - 請求項1に記載のデータベース問合せ文作成装置において、
請求項3のデータベース問合せ文作成装置が作成したデータベース問合せ文を実行して得た結果を前記条件値として用いることを特徴とするデータベース問合せ文作成装置。 - 請求項1又は2に記載のデータベース問合せ文作成装置において、
前記検索条件を適用する列をユーザに選択させるために、複数のテーブルにわたり各テーブルの各列を特定するための情報を各レコードに有する第1のテーブル、複数のテーブルにわたり各テーブルの各列を特定するための情報を各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に対応付けた第2のテーブル並びに各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に各列の列名を対応付けた第3のテーブルを基に作成したリストを表示する手段を更に備えることを特徴とするデータベース問合せ文作成装置。 - 請求項1又は2に記載のデータベース問合せ文作成装置において、
前記検索条件適用列特定情報は、複数のテーブルにわたり各テーブルの各列を特定するためのリレーション逆探索IDにより表されることを特徴とするデータベース問合せ文作成装置。 - 請求項1又は2に記載のデータベース問合せ文作成装置において、
前記検索条件適用列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、
前記検索条件適用列特定情報であるリレーション逆探索IDに対応するテーブルID及びテーブル列IDを第1のテーブルから検索する手段と、
検索されたテーブルIDに対応するテーブル名を第2のテーブルから検索する手段と、
検索されたテーブルID及びテーブル列IDに対応する列名を第3のテーブルから検索する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。 - 請求項3に記載のデータベース問合せ文作成装置において、前記選択列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求める手段は、
前記選択列特定情報であるリレーション逆探索IDに対応するテーブルID及びテーブル列IDを第1のテーブルから検索する手段と、
検索されたテーブルIDに対応するテーブル名を第2のテーブルから検索する手段と、
検索されたテーブルID及びテーブル列IDに対応する列名を第3のテーブルから検索する手段と、
を備えることを特徴とするデータベース問合せ文作成装置。 - 請求項1、2又は3に記載のデータベース問合せ文作成装置において、
前記検索条件適用列(着目列)の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段、又は、前記選択するべき列(着目列)の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求める手段は、前記着目列を特定するためのリレーション逆探索IDに対応する全てのリレーションのリレーションIDを第1のテーブルから検索する手段を備え、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求める手段は、前記第1のテーブルから検索された前記リレーションIDに対応する子テーブルID、子テーブル列ID、親テーブルID及び親テーブル列IDを第2のテーブルから検索する手段を備え、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成する手段、又は、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、サブクエリの等結合の結合条件を作成する手段は、前記第2のテーブルから検索された前記子テーブルIDに対応する子テーブルのテーブル名を第3のテーブルから検索する手段と、前記第2のテーブルから検索された前記親テーブルIDに対応する親テーブルのテーブル名を前記第3のテーブルから検索する手段と、前記第2のテーブルから検索された前記子テーブルID及び前記子テーブル列IDに対応する列名を第4のテーブルから検索する手段と、前記第2のテーブルから検索された前記親テーブルID及び前記親テーブル列IDに対応する列名を前記第4のテーブルから検索する手段とを備えることを特徴とするデータベース問合せ文作成装置。 - テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル及びリレーション列定義テーブルを基に、テーブル列ノードテーブル、リレーション逆探索テーブル及びリレーション逆探索リストテーブルを作成するテーブル列ノードテーブル等作成手段と、
前記テーブル列定義テーブル、前記テーブル列ノードテーブル及び前記リレーション逆探索リストテーブルを基に表示したリストを用いて作成されたフィルタ条件を基に、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル及び条件詳細テーブルを作成するフィルタテーブル等作成手段と、
前記テーブル定義テーブル、前記テーブル列定義テーブル、前記リレーション列定義テーブル、前記リレーション逆探索テーブル、前記リレーション逆探索リストテーブル、前記フィルタテーブル、前記フィルタ分類フィールドテーブル、前記フィルタ分類フォルダテーブル、前記条件テーブル及び前記条件詳細テーブルを基に、問合せ文を作成する問合せ文作成手段と、
を備えることを特徴とするデータベース問合せ文作成装置。 - 階層化された分類の項目の値毎に設けられたフォルダに、前記階層化された分類の項目の値及びその分類の項目に至るまでの上位層の分類の項目の値でデータを絞り込むためのデータベース問合せ文を関連付け、いずれかのフォルダが選択されたならば、そのフォルダに関連付けられたデータベース問合せ文を実行して、その実行結果を表示するようにしたことを特徴とするデータ表示装置。
- 請求項11に記載のデータ表示装置において、前記データベース問合せ文は、請求項1、2、4、5、6、7、8、9又は10に記載のデータベース問合せ文作成装置で作成したものであることを特徴とするデータ表示装置。
- 各テーブルを特定するための「テーブルID」列、各テーブルにおいて各列を特定するための「テーブル列ID」及びリレーションが付されている列についてリレーションIDが記述される「リレーションID」列を有するレコードが各テーブルの各列毎に設けられたテーブル列定義テーブルと、前記「リレーションID」列に子テーブルのテーブルIDである「子テーブルID」列及び親テーブルのテーブルIDである「親テーブルID」列を対応付けるレコードがリレーション毎に設けられたリレーション定義テーブルを基に、複数のテーブルにわたり各テーブルの各列を特定するための「リレーション逆探索ID」列、リレーションの親子関係を親ノードの前記「リレーション逆探索ID」により表す「親ノードID」及び親ノードを共通とする列の通し番号を表す「親ノード内順番号」を有するレコードが各テーブルの各列毎に設けられたテーブル列ノードテーブルを作成する手段を備えることを特徴とするテーブル列ノードテーブル等作成装置。
- 請求項13に記載のテーブル列ノードテーブル等作成装置において、前記テーブル列定義テーブルを基に、前記「テーブルID」及び前記「テーブル列ID」を前記「リレーション逆探索ID」に対応付けるためのレコードが各テーブルの各列毎に設けられたリレーション逆探索テーブルを作成する手段を更に備えることを特徴とするリレーション逆探索テーブル等作成装置。
- 請求項14に記載のリレーション逆探索テーブル等作成装置において、
前記テーブル列ノードテーブル、
前記リレーション逆探索テーブル、
リレーションを特定するための「リレーションID」列、リレーションを共通とする列の通し番号を有する「リレーション列ID」列並びに前記「リレーションID」列及び前記「リレーション列ID」に対応する「子テーブルID」列、「子テーブル列ID」列、「親テーブルID」列及び「親テーブル列ID」を有するレコードが設けられたリレーション列定義テーブルを基に、
「リレーション逆探索ID」列、該「リレーション逆探索ID」列で特定される列から主テーブルに遡るために必要なリレーションの通し番号である「リレーション逆順番」列及び前記「リレーション逆探索ID」列及び前記「リレーション逆順番」に対応する「リレーションID」列を有するレコードが設けられたリレーション逆探索リストテーブルを作成する手段を更に備えることを特徴とするリレーション逆探索テーブル等作成装置。 - 検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報及び条件値により表現するステップと、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名並びに前記条件値を基に、検索条件式を作成するステップと、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップと、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。 - 検索条件を、検索条件を適用する列を特定するための検索条件適用列特定情報、条件の区分を示す条件区分及び該条件区分に対応する条件値により表現するステップと、
前記検索条件適用列特定情報を基に、検索条件適用列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記検索条件適用列の属するテーブルのテーブル名及び同列の列名、前記条件区分並びに該条件区分に対応する条件値を基に、検索条件式を作成するステップと、
前記検索条件適用列の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップと、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。 - 選択するべき列を特定するための選択列特定情報を基に、前記選択するべき列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記選択するべき列の属するテーブルのテーブル名及び同列の列名を基に、selectキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルのテーブル名を基に、fromキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、whereキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルのテーブル名及び同テーブルの主キーが設定されている列の列名を基に、サブクエリのselectキーワードを含む句を作成するステップと、
前記選択するべき列の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップと、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名を基に、前記サブクエリのfromキーワードを含む句を作成するステップと、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、前記サブクエリの等結合の結合条件を作成するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。 - 請求項16に記載のデータベース問合せ文作成方法において、
請求項3のデータベース問合せ文作成方法が作成したデータベース問合せ文を実行して得た結果を前記条件値として用いることを特徴とするデータベース問合せ文作成方法。 - 請求項16又は17に記載のデータベース問合せ文作成方法において、
前記検索条件を適用する列をユーザに選択させるために、複数のテーブルにわたり各テーブルの各列を特定するための情報を各レコードに有する第1のテーブル、複数のテーブルにわたり各テーブルの各列を特定するための情報を各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に対応付けた第2のテーブル並びに各テーブルを特定するための情報及び各テーブルにおける各列を特定するための情報に各列の列名を対応付けた第3のテーブルを基に作成したリストを表示するステップを更に備えることを特徴とするデータベース問合せ文作成方法。 - 請求項16又は17に記載のデータベース問合せ文作成方法において、
前記検索条件適用列特定情報は、複数のテーブルにわたり各テーブルの各列を特定するためのリレーション逆探索IDにより表されることを特徴とするデータベース問合せ文作成方法。 - 請求項16又は17に記載のデータベース問合せ文作成方法において、
前記検索条件適用列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求めるステップは、
前記検索条件適用列特定情報であるリレーション逆探索IDに対応するテーブルID及びテーブル列IDを第1のテーブルから検索するステップと、
検索されたテーブルIDに対応するテーブル名を第2のテーブルから検索するステップと、
検索されたテーブルID及びテーブル列IDに対応する列名を第3のテーブルから検索するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。 - 請求項18に記載のデータベース問合せ文作成方法において、
前記選択列特定情報を基に列の属するテーブルのテーブル名及び同列の列名を求めるステップは、
前記選択列特定情報であるリレーション逆探索IDに対応するテーブルID及びテーブル列IDを第1のテーブルから検索するステップと、
検索されたテーブルIDに対応するテーブル名を第2のテーブルから検索するステップと、
検索されたテーブルID及びテーブル列IDに対応する列名を第3のテーブルから検索するステップと、
を備えることを特徴とするデータベース問合せ文作成方法。 - 請求項16、17又は18に記載のデータベース問合せ文作成方法において、
前記検索条件適用列(着目列)の属するテーブルから選択するべき列の属するテーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップ、又は、前記選択するべき列(着目列)の属するテーブルから主テーブルに遡るために必要なリレーションを特定するためのリレーション特定情報を求めるステップは、前記着目列を特定するためのリレーション逆探索IDに対応する全てのリレーションのリレーションIDを第1のテーブルから検索するステップを備え、
前記リレーション特定情報により特定されるリレーションについて、リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を求めるステップは、前記第1のテーブルから検索された前記リレーションIDに対応する子テーブルID、子テーブル列ID、親テーブルID及び親テーブル列IDを第2のテーブルから検索するステップを備え、
前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、等結合の結合条件を作成するステップ、又は、前記リレーションに用いられる列の属するテーブルのテーブル名及び同列の列名を基に、サブクエリの等結合の結合条件を作成するステップは、前記第2のテーブルから検索された前記子テーブルIDに対応する子テーブルのテーブル名を第3のテーブルから検索するステップと、前記第2のテーブルから検索された前記親テーブルIDに対応する親テーブルのテーブル名を前記第3のテーブルから検索するステップと、前記第2のテーブルから検索された前記子テーブルID及び前記子テーブル列IDに対応する列名を第4のテーブルから検索するステップと、前記第2のテーブルから検索された前記親テーブルID及び前記親テーブル列IDに対応する列名を前記第4のテーブルから検索するステップとを備えることを特徴とするデータベース問合せ文作成方法。 - テーブル定義テーブル、テーブル列定義テーブル、リレーション定義テーブル及びリレーション列定義テーブルを基に、テーブル列ノードテーブル、リレーション逆探索テーブル及びリレーション逆探索リストテーブルを作成するテーブル列ノードテーブル等作成ステップと、
前記テーブル列定義テーブル、前記テーブル列ノードテーブル及び前記リレーション逆探索リストテーブルを基に表示したリストを用いて作成されたフィルタ条件を基に、フィルタテーブル、フィルタ分類フィールドテーブル、フィルタ分類フォルダテーブル、条件テーブル及び条件詳細テーブルを作成するフィルタテーブル等作成ステップと、
前記テーブル定義テーブル、前記テーブル列定義テーブル、前記リレーション列定義テーブル、前記リレーション逆探索テーブル、前記リレーション逆探索リストテーブル、前記フィルタテーブル、前記フィルタ分類フィールドテーブル、前記フィルタ分類フォルダテーブル、前記条件テーブル及び前記条件詳細テーブルを基に、問合せ文を作成する問合せ文作成ステップと、
を備えることを特徴とするデータベース問合せ文作成方法。 - 階層化された分類の項目の値毎に設けられたフォルダに、前記階層化された分類の項目の値及びその分類の項目に至るまでの上位層の分類の項目の値でデータを絞り込むためのデータベース問合せ文を関連付け、いずれかのフォルダが選択されたならば、そのフォルダに関連付けられたデータベース問合せ文を実行して、その実行結果を表示するようにしたことを特徴とするデータ表示方法。
- 請求項26に記載のデータ表示方法において、前記データベース問合せ文は、請求項16、17、19、20、21、22、23、24又は25に記載のデータベース問合せ文作成方法で作成したものであることを特徴とするデータ表示方法。
- 各テーブルを特定するための「テーブルID」列、各テーブルにおいて各列を特定するための「テーブル列ID」及びリレーションが付されている列についてリレーションIDが記述される「リレーションID」列を有するレコードが各テーブルの各列毎に設けられたテーブル列定義テーブルと、前記「リレーションID」列に子テーブルのテーブルIDである「子テーブルID」列及び親テーブルのテーブルIDである「親テーブルID」列を対応付けるレコードがリレーション毎に設けられたリレーション定義テーブルを基に、複数のテーブルにわたり各テーブルの各列を特定するための「リレーション逆探索ID」列、リレーションの親子関係を親ノードの前記「リレーション逆探索ID」により表す「親ノードID」及び親ノードを共通とする列の通し番号を表す「親ノード内順番号」を有するレコードが各テーブルの各列毎に設けられたテーブル列ノードテーブルを作成するステップを備えることを特徴とするテーブル列ノードテーブル等作成方法。
- 請求項28に記載のテーブル列ノードテーブル等作成方法において、前記テーブル列定義テーブルを基に、前記「テーブルID」及び前記「テーブル列ID」を前記「リレーション逆探索ID」に対応付けるためのレコードが各テーブルの各列毎に設けられたリレーション逆探索テーブルを作成するステップを更に備えることを特徴とするリレーション逆探索テーブル等作成方法。
- 請求項29に記載のリレーション逆探索テーブル等作成方法において、
前記テーブル列ノードテーブル、
前記リレーション逆探索テーブル、
リレーションを特定するための「リレーションID」列、リレーションを共通とする列の通し番号を有する「リレーション列ID」列並びに前記「リレーションID」列及び前記「リレーション列ID」に対応する「子テーブルID」列、「子テーブル列ID」列、「親テーブルID」列及び「親テーブル列ID」を有するレコードが設けられたリレーション列定義テーブルを基に、
「リレーション逆探索ID」列、該「リレーション逆探索ID」列で特定される列から主テーブルに遡るために必要なリレーションの通し番号である「リレーション逆順番」列及び前記「リレーション逆探索ID」列及び前記「リレーション逆順番」に対応する「リレーションID」列を有するレコードが設けられたリレーション逆探索リストテーブルを作成するステップを更に備えることを特徴とするリレーション逆探索テーブル等作成方法。 - コンピュータに請求項16乃至30のいずれか1項に記載の方法を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003032466A JP4502305B2 (ja) | 2003-02-10 | 2003-02-10 | データベース問合せ文作成装置及びその方法並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003032466A JP4502305B2 (ja) | 2003-02-10 | 2003-02-10 | データベース問合せ文作成装置及びその方法並びにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004246405A true JP2004246405A (ja) | 2004-09-02 |
JP4502305B2 JP4502305B2 (ja) | 2010-07-14 |
Family
ID=33018803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003032466A Expired - Fee Related JP4502305B2 (ja) | 2003-02-10 | 2003-02-10 | データベース問合せ文作成装置及びその方法並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4502305B2 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007094622A (ja) * | 2005-09-28 | 2007-04-12 | Chugoku Electric Power Co Inc:The | 住宅内情報監視・制御装置および住宅内情報監視・制御方法 |
JP2009008846A (ja) * | 2007-06-27 | 2009-01-15 | Nikon Corp | 多次元画像の閲覧装置 |
JP2012243065A (ja) * | 2011-05-19 | 2012-12-10 | Mitsubishi Electric Corp | データ連携装置、データ連携方法及びデータ連携プログラム |
JP2014507713A (ja) * | 2011-01-14 | 2014-03-27 | アビニシオ テクノロジー エルエルシー | データの集合体に対する変更の管理 |
CN106528590A (zh) * | 2016-09-18 | 2017-03-22 | 青岛海信电器股份有限公司 | 一种查询方法及设备 |
CN110232063A (zh) * | 2019-04-19 | 2019-09-13 | 平安科技(深圳)有限公司 | 层级数据查询方法、装置、计算机设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002312383A (ja) * | 2001-04-10 | 2002-10-25 | Sharp Corp | 文書検索装置、文書検索システム、文書検索方法、並びにプログラム |
-
2003
- 2003-02-10 JP JP2003032466A patent/JP4502305B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002312383A (ja) * | 2001-04-10 | 2002-10-25 | Sharp Corp | 文書検索装置、文書検索システム、文書検索方法、並びにプログラム |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007094622A (ja) * | 2005-09-28 | 2007-04-12 | Chugoku Electric Power Co Inc:The | 住宅内情報監視・制御装置および住宅内情報監視・制御方法 |
JP4726214B2 (ja) * | 2005-09-28 | 2011-07-20 | 中国電力株式会社 | 住宅内情報監視・制御装置および住宅内情報監視・制御方法 |
JP2009008846A (ja) * | 2007-06-27 | 2009-01-15 | Nikon Corp | 多次元画像の閲覧装置 |
JP2014507713A (ja) * | 2011-01-14 | 2014-03-27 | アビニシオ テクノロジー エルエルシー | データの集合体に対する変更の管理 |
JP2012243065A (ja) * | 2011-05-19 | 2012-12-10 | Mitsubishi Electric Corp | データ連携装置、データ連携方法及びデータ連携プログラム |
CN106528590A (zh) * | 2016-09-18 | 2017-03-22 | 青岛海信电器股份有限公司 | 一种查询方法及设备 |
CN106528590B (zh) * | 2016-09-18 | 2023-04-07 | 海信视像科技股份有限公司 | 一种查询方法及设备 |
CN110232063A (zh) * | 2019-04-19 | 2019-09-13 | 平安科技(深圳)有限公司 | 层级数据查询方法、装置、计算机设备和存储介质 |
CN110232063B (zh) * | 2019-04-19 | 2024-05-24 | 平安科技(深圳)有限公司 | 层级数据查询方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP4502305B2 (ja) | 2010-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101242245B1 (ko) | 데이터베이스 질의를 형성하기 위한 컴퓨터 판독가능 기록 매체 및 방법 | |
US9519636B2 (en) | Deduction of analytic context based on text and semantic layer | |
JP3870666B2 (ja) | 文書検索方法および装置並びにその処理プログラムを記録した記録媒体 | |
JP4640591B2 (ja) | 文書検索装置 | |
US20160259786A1 (en) | Methods, Systems, And Computer Program Products For Automatically Associating Data With A Resource As Metadata Based On A Characteristic Of The Resource | |
US20060101013A1 (en) | Selection context filtering | |
US20060161545A1 (en) | Method and apparatus for ordering items within datasets | |
JP2004220215A (ja) | 計算機を利用した業務誘導支援システムおよび業務誘導支援方法 | |
JP3577822B2 (ja) | 情報提示装置及び情報提示方法 | |
JP4502305B2 (ja) | データベース問合せ文作成装置及びその方法並びにプログラム | |
JP2003345829A (ja) | 情報の検索方法およびその装置および情報検索のためのコンピュータプログラム | |
JP2005128872A (ja) | 文書検索システム及び文書検索プログラム | |
JPH0934911A (ja) | 情報検索装置 | |
CN109460467A (zh) | 一种网络信息分类体系构建方法 | |
JP2009128958A (ja) | 帳票作成装置及び帳票作成方法 | |
JPH07121552A (ja) | 文書群分析装置 | |
JP2002202973A (ja) | 構造化文書管理装置 | |
JPH06309365A (ja) | 文書処理装置 | |
JPH07302347A (ja) | グラフ生成装置 | |
JP3805633B2 (ja) | 電子カタログの検索システム | |
JP4393482B2 (ja) | 情報共有システム及びプログラム | |
CN116467037B (zh) | 一种图形用户界面工作状态的恢复方法 | |
JPH09218879A (ja) | 文書間類似度データ計算装置 | |
JP2003233516A (ja) | データベース、コンピュータ読取可能なプログラム、データベース管理システム、データベースの新規登録方法、データベースの検索方法、および、データベースの更新登録方法 | |
KR101057997B1 (ko) | 최초 문자를 이용하는 검색 엔진 및 검색 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060118 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090223 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090422 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090909 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091109 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100415 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100416 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140430 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |