(57)【特許請求の範囲】
【請求項１】
検証対象データベースを含むデータベースに格納されるデータ項目についての制約条件についての制約情報を格納する制約情報格納部と、前記制約情報の解析用テンプレートと当該解析用テンプレートに対応する検証用ＳＱＬテンプレート、パラメータ取得用ＳＱＬテンプレート及び検証文テンプレートとを格納するテンプレート格納部とにアクセス可能なコンピュータに、
前記制約情報格納部に格納されている制約情報と、前記テンプレート格納部に格納されている解析用テンプレートとをマッチングさせて、当該制約情報にマッチする解析用テンプレートを特定すると共に、当該制約情報から、特定された前記解析用テンプレートにおける変数の値を特定するステップと、
特定された前記解析用テンプレートに対応する前記パラメータ取得用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものとを組み合わせることによってパラメータ取得用ＳＱＬ文を生成し、当該パラメータ取得用ＳＱＬ文を前記データベースに対して実行して、当該検索結果をパラメータとして取得するステップと、
特定された前記解析用テンプレートに対応する前記検証用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものと、取得された前記パラメータのいずれかとが組み合わせられた検証用ＳＱＬ文を前記データベースに対して実行して、検索結果を第２の検索結果として取得する検索結果取得ステップと、
取得された前記第２の検索結果が、特定された前記解析用テンプレートに対応する前記検証文テンプレートと前記検証用ＳＱＬ文とが組み合わされた検証文を充足するものであるか判断し、充足する場合に、前記第２の検索結果をもたらした前記検証用ＳＱＬ文に組み合わされた前記パラメータを含むログを生成するログ生成ステップと、
を実行させるためのデータベース検証プログラム。
【請求項２】
前記ログ生成ステップにおいて、
特定された前記解析用テンプレート及び特定された前記変数の値のうち特定の変数の値に対応する検証文テンプレートが用いられる
請求項１記載のデータベース検証プログラム。
【請求項３】
検証対象データベースを含むデータベースに格納されるデータ項目についての制約条件についての制約情報を格納する制約情報格納部と、前記制約情報の解析用テンプレートと当該解析用テンプレートに対応する検証用ＳＱＬテンプレート、パラメータ取得用ＳＱＬテンプレート及び検証文テンプレートとを格納するテンプレート格納部とにアクセス可能であり、処理部を有するコンピュータに実行されるデータベース検証方法であって、
前記制約情報格納部に格納されている制約情報と、前記テンプレート格納部に格納されている解析用テンプレートとをマッチングさせて、当該制約情報にマッチする解析用テンプレートを特定すると共に、当該制約情報から、特定された前記解析用テンプレートにおける変数の値を特定するステップと、
特定された前記解析用テンプレートに対応する前記パラメータ取得用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものとを組み合わせることによってパラメータ取得用ＳＱＬ文を生成し、当該パラメータ取得用ＳＱＬ文を前記データベースに対して実行して、当該検索結果をパラメータとして取得するステップと、
特定された前記解析用テンプレートに対応する前記検証用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものと、取得された前記パラメータのいずれかとが組み合わせられた検証用ＳＱＬ文を前記データベースに対して実行して、検索結果を第２の検索結果として取得する検索結果取得ステップと、
取得された前記第２の検索結果が、特定された前記解析用テンプレートに対応する前記検証文テンプレートと前記検証用ＳＱＬ文とが組み合わされた検証文を充足するものであるか判断し、充足する場合に、前記第２の検索結果をもたらした前記検証用ＳＱＬ文に組み合わされた前記パラメータを含むログを生成するログ生成ステップと、
を含むデータベース検証方法。
【請求項４】
検証対象データベースを含むデータベースに格納されるデータ項目についての制約条件についての制約情報を格納する制約情報格納部と、
前記制約情報の解析用テンプレートと当該解析用テンプレートに対応する検証用ＳＱＬテンプレート、パラメータ取得用ＳＱＬテンプレート及び検証文テンプレートとを格納するテンプレート格納部と、
前記制約情報格納部に格納されている制約情報と、前記テンプレート格納部に格納されている解析用テンプレートとをマッチングさせて、当該制約情報にマッチする解析用テンプレートを特定すると共に、当該制約情報から、特定された前記解析用テンプレートにおける変数の値を特定する手段と、
特定された前記解析用テンプレートに対応する前記パラメータ取得用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものとを組み合わせることによってパラメータ取得用ＳＱＬ文を生成し、当該パラメータ取得用ＳＱＬ文を前記データベースに対して実行して、当該検索結果をパラメータとして取得する手段と、
特定された前記解析用テンプレートに対応する前記検証用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものと、取得された前記パラメータのいずれかとが組み合わせられた検証用ＳＱＬ文を前記データベースに対して実行して、検索結果を第２の検索結果として取得する検索結果取得手段と、
取得された前記第２の検索結果が、特定された前記解析用テンプレートに対応する前記検証文テンプレートと前記検証用ＳＱＬ文とが組み合わされた検証文を充足するものであるか判断し、充足する場合に、前記第２の検索結果をもたらした前記検証用ＳＱＬ文に組み合わされた前記パラメータを含むログを生成するログ生成手段と、
を有するデータベース検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに格納されているデータの内容について業務上の整合がとれているか検証するための技術に関する。
【背景技術】
【０００２】
従来、業務アプリケーションのテストや運用環境において、データベース（ＤＢ）に格納されているＤＢデータについて業務上の整合性がとれているかどうかを検証する場合、例えば以下のような２つの方法が存在していた。
【０００３】
（ａ）例えば、ＳＱＬ等を使ってＤＢデータが業務上の整合性を保っているかどうかを、カラム毎、又はテーブル間に渡ってユーザが１つ１つ検証する方法がある。しかし、この方法では検証のためのＳＱＬ文をいちいち記述しなければならず、工数がかかり、内容によっては記述自体が困難な場合がある。特に、規模が大きいＤＢにおいて、設計の制約条件事項毎に、ユーザがＳＱＬ文を記述して実行するのは非常に困難な作業である。
【０００４】
（ｂ）これに対して、データベース間の関係情報を利用して項目間の関連するデータを取得する方法がある。このような方法に類似するものとしては、例えば特開２００７−４４４７号公報記載の技術がある。具体的には、入力された１の項目名に基づいて、テーブル名と当該テーブルが有する１以上の項目名とを対応付けて記憶しているテーブル定義テーブルを参照して、上記１の項目名を有する第一のテーブル名を抽出する第一テーブル抽出ステップと、共通の項目を有することにより関係付けられている２つのテーブルを対応付けて記憶しているテーブルリンクテーブルを参照して、第一のテーブル名に基づいて、対応付けられている関連テーブルを抽出し、さらに当該関連テーブルに対応付けられている他の関連テーブルがある場合にはすべての当該関連テーブルを抽出する関連テーブル抽出ステップと、上記１の項目名に対応付けられて入力されたデータ値に、第一テーブルにおいて対応付けられているすべての項目のデータ値を取得し、関連テーブル抽出機能により抽出した１以上の関連テーブルから、共通の項目を介して上記入力されたデータ値に対応づけられているすべてのデータ値を取得するデータ取得ステップとが実行される。しかしながら、制約条件がないために業務上の整合性まで検証することはできない。
【特許文献１】特開２００７−４４４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
アプリケーション・プログラムをテストする場合、データベースを必要とする場合があるが、当該データベースに業務上の整合性のとれたデータを格納しておかないと、正しいテスト結果を得られない。しかし、上で述べたようにデータベースに業務上の整合性のとれたデータが格納されているか否かを検証することは、非常に手間が掛かる作業となる。
【０００６】
従って、本発明の目的は、データベースに格納されているデータの内容について業務上の整合がとれているか自動的に検証するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明に係るデータベース検証方法は、検証対象データベースを含むデータベースに格納されるデータ項目についての制約条件についての制約情報を格納する制約情報格納部と、制約情報の解析用テンプレートと当該解析用テンプレートに対応する検証用ＳＱＬテンプレート、パラメータ取得用ＳＱＬテンプレート及び検証文テンプレートとを格納するテンプレート格納部とにアクセス可能であり、処理部を有するコンピュータに実行される。そして、本データベース検証方法は、制約情報格納部に格納されている制約情報と、テンプレート格納部に格納されている解析用テンプレートとをマッチングさせて、当該制約情報にマッチする解析用テンプレートを特定すると共に、当該制約情報から、特定された上記解析用テンプレートにおける変数の値を特定するステップと、特定された上記解析用テンプレートに対応するパラメータ取得用ＳＱＬテンプレートと、特定された上記変数の値のうち該当するものとを組み合わせることによってパラメータ取得用ＳＱＬ文を生成し、当該パラメータ取得用ＳＱＬ文をデータベースに対して実行して、当該検索結果をパラメータとして取得するステップと、特定された上記解析用テンプレートに対応する検証用ＳＱＬテンプレートと、特定された上記変数の値のうち該当するものと、取得された上記パラメータのいずれかとが組み合わせられた検証用ＳＱＬ文をデータベースに対して実行して、検索結果を第２の検索結果として取得する検索結果取得ステップと、取得された上記第２の検索結果が、特定された上記解析用テンプレートに対応する検証文テンプレートと検証用ＳＱＬ文とが組み合わされた検証文を充足するものであるか判断し、充足する場合に、第２の検索結果をもたらした検証用ＳＱＬ文に組み合わされたパラメータを含むログを生成するログ生成ステップとを含む。
【０００８】
このような構成によれば、機械読取り可能な設計情報における制約情報を有効活用して、自動的にデータベースに対する検証処理を実施することができるようになる。
【０００９】
また、上で述べたログ生成ステップにおいて、特定された上記解析用テンプレート及び特定された上記変数の値のうち特定の変数の値に対応する検証文テンプレートが用いられる場合もある。制約情報に応じた様々なテンプレートが用意されれば、自動的に検証を行うことができるデータベースを増やすことができる。
【００１０】
なお、本方法をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【発明の効果】
【００１１】
本発明によれば、データベースに格納されているデータの内容について業務上の整合がとれているか自動的に検証することができるようになる。
【発明を実施するための最良の形態】
【００１２】
本発明の一実施の形態に係るデータベース検証装置の機能ブロック図を図１に示す。本実施の形態に係るデータベース検証装置１００は、設計情報に含まれる制約情報を格納する制約情報格納部１と、以下で説明する各種テンプレートを格納するテンプレート格納部３と、制約情報格納部１及びテンプレート格納部３に格納されたデータを用いて処理を行う制約情報読み取り部５と、制約情報読み取り部５の処理結果である変数データを格納する変数データ格納部７と、変数データ格納部７及びテンプレート格納部３に格納されているデータを用い且つ制約情報読み取り部５の処理結果に応じて処理を実施する検証文生成部９と、検証文生成部９による処理結果を格納する検証文データ格納部１３と、変数データ格納部７及びテンプレート格納部３に格納されているデータを用い且つ制約情報読み取り部５の処理結果に応じて処理を実施し、検証対象データベースを含むＤＢ２００に対して検索を実施するパラメータ検出部１１と、パラメータ検出部１１の検索結果であるパラメータを格納するパラメータ格納部１５と、検証文データ格納部１３及びパラメータ格納部１５に格納されているデータを用いて処理を実施し、ＤＢ２００に対して検索を実施する検証実行部１７と、検証実行部１７の処理結果である評価ログを格納する評価ログ格納部１９と、評価ログ格納部１９に格納されているデータを出力する出力部２１とを有する。
【００１３】
次に、図２に制約情報格納部１に格納されるデータの一例を示す。本実施の形態では、３つのカラムのうち、一番左のカラムには検証対象データベース名（テーブル名）、左から二番目のカラムには検証対象カラム名、一番右のカラムにはチェック内容が登録されるようになっている。図２の例では、検証対象データベースが「注文ＤＢ」であり、検証対象カラムが「商品コード」であり、チェック内容が「商品ＤＢ．商品コードに存在する」となっている。制約情報は、このようにテーブル間に渡る制約条件を記述する場合（関連チェックと呼ぶ）もあれば、１つのカラムについての制約条件を記述する場合（単項チェックと呼ぶ）もあれば、１つのテーブルにおけるカラム間の制約条件を記述する場合（単関連チェックと呼ぶ）もある。制約情報は、制約情報読み取り部５が処理できるような形式で記述される。なお、制約情報は、設計情報に含まれるものであり、設計情報を有効活用するものである。
【００１４】
図３乃至図６にテンプレート格納部３に格納されるデータの一例を示す。図３は、制約情報とマッチングを行う文法パターン（制約情報の解析を行うためのテンプレートであり、解析用テンプレートとも呼ぶ）の一例を示す。本実施の形態では、（１）乃至（３）の３つの文法パターンを示しており、（１）は検証対象テーブルが「ＡＡ」で、検証対象カラムが「ＢＢ」で、チェック内容が「ＹＹ．ＺＺに存在する」というパターンであり、（２）は検証対象テーブルが「ＡＡ」で、検証対象カラムが「ＢＢ」で、チェック内容が「ＹＹ．ＺＺに存在しない」というパターンであり、（３）は検証対象テーブルが「ＥＥ」で、検証対象カラムが「ＩＩ」で、チェック内容が「ＣＣ．ＤＤ＝ＥＥ．ＦＦ＆＆ＣＣ．ＧＧ［Ｈ］ＥＥ．ＩＩ」（［Ｈ］は＜、＞、＝、≦、≧、≠のいずれか）というパターンである。「ＡＡ」「ＢＢ」「ＣＣ」「ＤＤ」「ＥＥ」「ＦＦ」「ＧＧ」「ＩＩ」は、変数であり、マッチングの際にはどのような値（データ）であってもよい。
【００１５】
（１）は、例えば「注文ＤＢの商品コードが商品ＤＢ．商品コードに存在する」というような制約に対してマッチングをとるためのパターンであり、（２）は、「新規お客さまＤＢのお客さまＩＤが得意先ＤＢ．利用者ＩＤに存在しない」というような制約に対してマッチングをとるためのパターンであり、（３）は、「ＤＢ１．伝票番号＝ＤＢ３．注文伝票番号である時、そのＤＢ１．注文日はＤＢ３．購入日以降である」や「広告ＤＢ．お客さまＩＤ＝購入履歴ＤＢ．お客さまＩＤである時、その広告ＤＢ．お勧め商品は購入履歴ＤＢ．購入済み商品とは異なる」というような制約に対してマッチングをとるためのパターンである。
【００１６】
図４は、テンプレート格納部３に格納される擬似ＳＱＬ文テンプレートの一例を示す。図４の（１）乃至（３）は、図３における（１）乃至（３）との対応関係を示す。擬似ＳＱＬ文テンプレートは、最終的にＤＢ２００に対して実行する検証のための検索におけるＳＱＬ文のテンプレートである。（１）は、Ｓｅｌｅｃｔ  ＹＹ．ＺＺ  ｗｈｅｒｅ  ＡＡ．ＢＢ＝［Ｘ］であり、［Ｘ］は後にパラメータとして抽出される値を代入する部分を示す。（２）も同様である。（３）は、Ｓｅｌｅｃｔ  ＥＥ．ＦＦ  ｆｒｏｍ  ＥＥ  ｗｈｅｒｅ  ＥＥ．ＦＦ＝［Ｘ］  ａｎｄ  ＣＣ．ＧＧ［Ｈ］ＥＥ．ＩＩであり、［Ｘ］は後にパラメータとして抽出される値を代入する部分を示す。［Ｈ］は上で述べたものと同様である。当然ながら、「ＡＡ」「ＢＢ」「ＣＣ」「ＤＤ」「ＥＥ」「ＦＦ」「ＧＧ」「ＩＩ」は、変数であり、文法パターンによってマッチングを取る際に特定された変数値が代入される。
【００１７】
図５は、テンプレート格納部３に格納されるカラム値（パラメータ）取得テンプレートの一例を示す。図５の（１）乃至（３）は、図３における（１）乃至（３）との対応関係を示す。カラム値取得テンプレートは、パラメータ（擬似ＳＱＬ文テンプレートの［Ｘ］に代入される値）をＤＢ２００から取得するためのＳＱＬ文テンプレートである。（１）は、Ｓｅｌｅｃｔ  ＡＡ．ＢＢであり、（２）も同様である。（３）は、Ｓｅｌｅｃｔ  ＣＣ．ＤＤである。当然ながら、「ＡＡ」「ＢＢ」「ＣＣ」「ＤＤ」は、変数であり、文法パターンによってマッチングを取る際に特定された変数値が代入される。
【００１８】
図６は、テンプレート格納部３に格納される検証文テンプレートの一例を示す。図６の（１）乃至（３）は、図３における（１）乃至（３）との対応関係を示す。また、［Ｈ］も上で述べたものと同様であり、文法パターンによってマッチングを取る際に特定された値が用いられる。（１）は、空（ｅｍｐｔｙ）である場合にログを出力することを意味するａｓｓｅｒｔ（ｅｍｐｔｙ）であり、（２）は、空でない（ｎｏｔ  ｅｍｐｔｙ）である場合にログを出力することを意味するａｓｓｅｒｔ（ｎｏｔ  ｅｍｐｔｙ）である。（３）は、［Ｈ］に依存しており、≠以外は、空である場合にログを出力することを意味するａｓｓｅｒｔ（ｅｍｐｔｙ）であり、≠であれば、空でない場合にログを出力することを意味するａｓｓｅｒｔ（ｎｏｔ  ｅｍｐｔｙ）である。
【００１９】
以下の説明を分かりやすくするためにＤＢ２００には、図７及び図８のようなデータが格納されているものとする。すなわち、図７に示すように注文ＤＢには、伝票番号と、商品コードと、数量と、注文日とが登録されるようになっている。また、図８に示すように商品ＤＢには、商品コードと、商品名とが登録されるようになっている。
【００２０】
以下、図９乃至図１２を用いてデータベース検証装置１００の処理内容について説明する。制約情報読み取り部５は、処理対象の制約情報を制約情報格納部１から読み出す（ステップＳ１）。例えば図２の第１行目の制約情報を読み出す。そして、制約情報読み取り部５は、制約情報とテンプレート格納部３に格納されている各文法パターン（例えば図３の各行に示された文法パターン）とのパターンマッチングを実施し、当該制約情報が該当する文法パターンを特定する（ステップＳ３）。図２の第１行目の制約情報の場合、図３の第１行目（１）の文法パターンがマッチするので、（１）が特定される。
【００２１】
制約情報読み取り部５は、該当する文法パターンにおける各変数の値を抽出し、変数データ格納部７に格納する（ステップＳ５）。（１）の文法パターンにおいては、「ＡＡ」「ＢＢ」「ＹＹ」及び「ＺＺ」という変数があり、図２の第１行目の制約情報とマッチングさせると、図１０（ａ）に示すように、「ＡＡ」＝「注文ＤＢ」であり、「ＢＢ」＝「商品コード」であり、「ＹＹ」＝「商品ＤＢ」であり、「ＺＺ」＝「商品コード」である。これらの変数及びその値を、変数データ格納部７に格納する。なお、制約情報読み取り部５は、検証文生成部９及びパラメータ検出部１１に、該当する文法パターンのＩＤ（上の例では（１））を出力する。
【００２２】
そして、検証文生成部９は、制約情報読み取り部５から受信した文法パターンのＩＤを用いて、該当する文法パターンに対応する擬似ＳＱＬ文テンプレートを、テンプレート格納部３から読み出す（ステップＳ７）。図４の例では、（１）の擬似ＳＱＬ文テンプレート「Ｓｅｌｅｃｔ  ＹＹ．ＺＺ  ｗｈｅｒｅ  ＡＡ．ＢＢ＝［Ｘ］」が読み出される。そして、擬似ＳＱＬ文テンプレートの変数に値を代入して、擬似ＳＱＬ文を生成し、例えば検証文データ格納部１３に格納する（ステップＳ９）。図１０（ｂ）に示すような擬似ＳＱＬ文が生成される。すなわち、「Ｓｅｌｅｃｔ  商品ＤＢ．商品コード  ｗｈｅｒｅ  注文ＤＢ．商品コード＝［Ｘ］」が生成され、検証文データ格納部１３に格納される。なお、現段階では［Ｘ］は確定しないので、「擬似」ＳＱＬ文となっている。
【００２３】
さらに、検証文生成部９は、テンプレート格納部３から該当する文法パターンに対応する検証文テンプレートを読み出し、当該検証文テンプレートと擬似ＳＱＬ文とを組み合わせて検証文を生成し、検証文データ格納部１３に格納する（ステップＳ１１）。図６の例では、（１）ａｓｓｅｒｔ（ｅｍｐｔｙ）が抽出され、ステップＳ９で生成された擬似ＳＱＬ文と組み合わされて、図１０（ｃ）に示すような検証文「Ｓｅｌｅｃｔ  商品ＤＢ．商品コード  ｗｈｅｒｅ  注文ＤＢ．商品コード＝［Ｘ］−＞ａｓｓｅｒｔ（ｅｍｐｔｙ）」が生成される。そして処理は端子Ａを介して図１１の処理に移行する。
【００２４】
図１１の処理の説明に移行して、パラメータ検出部１１は、制約情報読み取り部５から受信した文法パターンのＩＤを用いて、該当する文法パターンに対応するカラム値取得テンプレートを、テンプレート格納部３から読み出す（ステップＳ１３）。図５の例では、（１）「Ｓｅｌｅｃｔ  ＡＡ．ＢＢ」を読み出す。そして、当該カラム値取得テンプレートの変数に、変数データ格納部７に格納されている当該変数の値を代入し、パラメータ取得用のＳＱＬ文を生成し、例えばメインメモリなどの記憶装置に格納する（ステップＳ１５）。図１２（ａ）に示すように、「Ｓｅｌｅｃｔ  注文ＤＢ．商品コード」というパラメータ取得用のＳＱＬ文を生成する。その後、パラメータ取得用のＳＱＬ文をＤＢ２００に対して実行し、検索結果であるパラメータを取得し、パラメータ格納部１５に格納する（ステップＳ１７）。図７のような注文ＤＢの場合には、図１２（ｂ）に示すように商品コードの列の値「ＺＺ１」及び「ＺＺ２」が、パラメータとして抽出され、パラメータ格納部１５に格納される。
【００２５】
次に、検証実行部１７は、パラメータ格納部１５に格納されている未処理のパラメータを１つ選択し（ステップＳ１９）、検証文データ格納部１３に格納されている検証文の擬似ＳＱＬ文部分の変数［Ｘ］に選択パラメータを代入し、検証用のＳＱＬ文を生成し、例えばメインメモリなどの記憶装置に格納する（ステップＳ２１）。例えば、「ＺＺ１」を選択した場合には、図１２（ｃ）に示すように、検証用のＳＱＬ文「Ｓｅｌｅｃｔ  商品ＤＢ．商品コード  ｗｈｅｒｅ  注文ＤＢ．商品コード＝”ＺＺ１”」が生成される。そして、生成された検証用のＳＱＬ文をＤＢ２００に対して実行し、検索結果を取得する（ステップＳ２３）。図８のような商品ＤＢに対して、上記のようなＳＱＬ文を実行して検索を行うと、該当するレコードが存在するので、図１２（ｄ）に示すように「商品ＤＢ．ＺＺ１」が検索結果として得られる。
【００２６】
検証実行部１７は、検索結果が検証文におけるａｓｓｅｒｔの内容とマッチするか判断する（ステップＳ２５）。図１０（ｃ）に示したように、本例における検証文においては「ａｓｓｅｒｔ（ｅｍｐｔｙ）」となっているので、ｅｍｐｔｙの場合にはマッチしたと判断される。図１２（ｄ）のような検索結果の場合には、マッチしたとは言えない。ステップＳ２５でマッチしたとは言えない場合には、ステップＳ２９に移行する。一方、検索結果がｅｍｐｔｙの場合には、ａｓｓｅｒｔの内容とマッチするので、評価ログを生成し、評価ログ格納部１９に格納する（ステップＳ２７）。
【００２７】
そして、検証実行部１７は、パラメータ格納部１５に未処理のパラメータが存在しているか判断し（ステップＳ２９）、未処理のパラメータが存在している場合にはステップＳ１９に戻る。
【００２８】
ここでは「ＺＺ２」が残っているので、ステップＳ２１で、図１２（ｅ）に示すように、検証用のＳＱＬ文「Ｓｅｌｅｃｔ  商品ＤＢ．商品コード  ｗｈｅｒｅ  注文ＤＢ．商品コード＝”ＺＺ２”」が生成される。そして、図８のような商品ＤＢに対して、このようなＳＱＬ文を実行して検索を行うと、該当するレコードが存在しないので、図１２（ｆ）に示すように、「ｅｍｐｔｙ」という検索結果が得られる。そうすると、ステップＳ２５で評価文のａｓｓｅｒｔの内容とマッチすることになるので、評価ログを生成する。評価ログは、図１３に示すように、「ＮＧ：注文ＤＢ．商品コード＝”ＺＺ２”」となる。すなわち、評価ログを生成させることとなったパラメータ「ＺＺ２」を含み、業務上の整合性がとれなかった、検証対象データベースにおけるレコードを特定するためのデータである。
【００２９】
このような処理を行って、未処理のパラメータが存在しないと判断された場合には、出力部２１は、評価ログ格納部１９に格納されている評価ログを表示装置や印刷装置などから出力する（ステップＳ３１）。このようにすれば、ユーザは、検証対象データベースにおいてどの部分がテストを行う上で業務上の整合性がとれていないかを特定することができ、修正など対処を行うことができるようになる。
【００３０】
以上のような処理を実施すれば、自動的に業務上の整合性についてデータベースの検証を実施することができるようになり、システムのテストなどにおいて問題の発生を未然に防止することができるようになる。
【００３１】
次に、図１４乃至図１７を用いて第２の具体例について説明しておく。例えば、図１４に示すようなデータが制約情報格納部１に格納されているものとする。すなわち、検証対象データベースは「ＤＢ３」であり、検証対象カラムは「購入日」であり、チェック内容は「ＤＢ１．伝票番号＝ＤＢ３．注文伝票番号＆＆ＤＢ１．注文日≦ＤＢ３．購入日」となっている。これは、ＤＢ１とＤＢ３の同じ伝票番号の注文について、ＤＢ１の注文日はＤＢ３の購入日以前でなければならないということを表す制約情報である。また、ＤＢ１には図１５に示すようなデータが格納されているものとする。すなわち、伝票番号と、商品コードと、数量と、注文日とが登録されている。同様に、ＤＢ３には図１６に示すようなデータが格納されているものとする。すなわち、商品コードと、購入日と、数量と、注文伝票番号とが登録されるようになっている。
【００３２】
図９及び図１１の処理フローに従うと、まず図３の文法パターンとマッチングさせて、（３）が該当する文法パターンとして特定される。ここで、図１７（ａ）に示すように、「ＣＣ」＝「ＤＢ１」、「ＤＤ」＝「伝票番号」、「ＥＥ」＝「ＤＢ３」、「ＦＦ」＝「注文伝票番号」、「ＧＧ」＝「注文日」、「ＩＩ」＝「購入日」という変数値が特定される。なお、［Ｈ］は「≦」である。
【００３３】
そうすると、検証文は、図４及び図６の（３）から、図１７（ｂ）に示すように、「Ｓｅｌｅｃｔ  ＤＢ３．注文伝票番号  ｆｒｏｍ  ＤＢ３  ｗｈｅｒｅ  ＤＢ３．注文伝票番号＝［Ｘ］  ａｎｄ  ＤＢ１．注文日≦ＤＢ３．購入日−＞ａｓｓｅｒｔ（ｅｍｐｔｙ）」となる。
【００３４】
また、パラメータ取得用のＳＱＬ文は、図５の（３）から、図１７（ｃ）に示すように、「Ｓｅｌｅｃｔ  ＤＢ１．伝票番号」となる。そして、このＳＱＬ文をＤＢ１（図１５）に対して実行すると、検索結果として図１７（ｄ）に示すように「Ａ１２３４」及び「Ｂ１２３４」を取得する。
【００３５】
そして、検証用のＳＱＬ文は、図１７（ｆ）に示すように「Ｓｅｌｅｃｔ  ＤＢ３．注文伝票番号  ｆｒｏｍ  ＤＢ３  ｗｈｅｒｅ  ＤＢ３．注文伝票番号＝”Ａ１２３４”  ａｎｄ  ＤＢ１．注文日≦ＤＢ３．購入日」となり、これをＤＢ２００に対して実行すると、図１７（ｇ）に示すように「ｅｍｐｔｙ」となる。これは、伝票番号「Ａ１２３４」の購入日は注文日より前であるので、上記検証用ＳＱＬ文に合致するレコードが存在しないことになる。従って、図１７（ｈ）に示すように「ＮＧ：Ｘ＝”Ａ１２３４”」というような評価ログが生成される。
【００３６】
また、次に、図１７（ｉ）に示すように「Ｓｅｌｅｃｔ  ＤＢ３．注文伝票番号  ｆｒｏｍ  ＤＢ３  ｗｈｅｒｅ  ＤＢ３．注文伝票番号＝”Ｂ１２３４”  ａｎｄ  ＤＢ１．注文日≦ＤＢ３．購入日」という検証用のＳＱＬ文を生成し、ＤＢ２００に対して実行すると、図１７（ｊ）に示すように「Ｂ１２３４」を得る。ｅｍｐｔｙではないので、評価ログは生成されない。
【００３７】
このように、「Ａ１２３４」という伝票番号について、業務上の整合性がとれないレコードが登録されていることが分かるようになる。
【００３８】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、図１に示した機能ブロック図は、実際のプログラムモジュール構成と同一ではない場合もある。また、ステップＳ７乃至Ｓ１１と、ステップＳ１３乃至Ｓ１７は、独立した処理であるから、並列に実行しても良いし、実行する順番を入れ替えても良い。
【００３９】
なお、データベース検証装置１００は、例えばコンピュータ装置であって、図１８に示すように当該コンピュータ装置においては、メモリ２５０１（記憶部）とＣＰＵ２５０３（処理部）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ）及びＷｅｂブラウザを含むアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。このようなコンピュータは、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００４０】
（付記１）
検証対象データベースを含むデータベースに格納されるデータ項目についての制約条件についての制約情報を格納する制約情報格納部と、前記制約情報の解析用テンプレートと当該解析用テンプレートに対応する検証用ＳＱＬテンプレート、パラメータ取得用ＳＱＬテンプレート及び検証文テンプレートとを格納するテンプレート格納部とにアクセス可能なコンピュータに、
前記制約情報格納部に格納されている制約情報と、前記テンプレート格納部に格納されている解析用テンプレートとをマッチングさせて、当該制約情報にマッチする解析用テンプレートを特定すると共に、当該制約情報から、特定された前記解析用テンプレートにおける変数の値を特定するステップと、
特定された前記解析用テンプレートに対応する前記パラメータ取得用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものとを組み合わせることによってパラメータ取得用ＳＱＬ文を生成し、当該パラメータ取得用ＳＱＬ文を前記データベースに対して実行して、当該検索結果をパラメータとして取得するステップと、
特定された前記解析用テンプレートに対応する前記検証用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものと、取得された前記パラメータのいずれかとが組み合わせられた検証用ＳＱＬ文を前記データベースに対して実行して、検索結果を第２の検索結果として取得する検索結果取得ステップと、
取得された前記第２の検索結果が、特定された前記解析用テンプレートに対応する前記検証文テンプレートと前記検証用ＳＱＬ文とが組み合わされた検証文を充足するものであるか判断し、充足する場合に、前記第２の検索結果をもたらした前記検証用ＳＱＬ文に組み合わされた前記パラメータを含むログを生成するログ生成ステップと、
を実行させるためのデータベース検証プログラム。
【００４１】
（付記２）
前記ログ生成ステップにおいて、
特定された前記解析用テンプレート及び特定された前記変数の値のうち特定の変数の値に対応する検証文テンプレートが用いられる
付記１記載のデータベース検証プログラム。
【００４２】
（付記３）
検証対象データベースを含むデータベースに格納されるデータ項目についての制約条件についての制約情報を格納する制約情報格納部と、前記制約情報の解析用テンプレートと当該解析用テンプレートに対応する検証用ＳＱＬテンプレート、パラメータ取得用ＳＱＬテンプレート及び検証文テンプレートとを格納するテンプレート格納部とにアクセス可能であり、処理部を有するコンピュータに実行されるデータベース検証方法であって、
前記制約情報格納部に格納されている制約情報と、前記テンプレート格納部に格納されている解析用テンプレートとをマッチングさせて、当該制約情報にマッチする解析用テンプレートを特定すると共に、当該制約情報から、特定された前記解析用テンプレートにおける変数の値を特定するステップと、
特定された前記解析用テンプレートに対応する前記パラメータ取得用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものとを組み合わせることによってパラメータ取得用ＳＱＬ文を生成し、当該パラメータ取得用ＳＱＬ文を前記データベースに対して実行して、当該検索結果をパラメータとして取得するステップと、
特定された前記解析用テンプレートに対応する前記検証用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものと、取得された前記パラメータのいずれかとが組み合わせられた検証用ＳＱＬ文を前記データベースに対して実行して、検索結果を第２の検索結果として取得する検索結果取得ステップと、
取得された前記第２の検索結果が、特定された前記解析用テンプレートに対応する前記検証文テンプレートと前記検証用ＳＱＬ文とが組み合わされた検証文を充足するものであるか判断し、充足する場合に、前記第２の検索結果をもたらした前記検証用ＳＱＬ文に組み合わされた前記パラメータを含むログを生成するログ生成ステップと、
を含むデータベース検証方法。
【００４３】
（付記４）
検証対象データベースを含むデータベースに格納されるデータ項目についての制約条件についての制約情報を格納する制約情報格納部と、
前記制約情報の解析用テンプレートと当該解析用テンプレートに対応する検証用ＳＱＬテンプレート、パラメータ取得用ＳＱＬテンプレート及び検証文テンプレートとを格納するテンプレート格納部と、
前記制約情報格納部に格納されている制約情報と、前記テンプレート格納部に格納されている解析用テンプレートとをマッチングさせて、当該制約情報にマッチする解析用テンプレートを特定すると共に、当該制約情報から、特定された前記解析用テンプレートにおける変数の値を特定する手段と、
特定された前記解析用テンプレートに対応する前記パラメータ取得用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものとを組み合わせることによってパラメータ取得用ＳＱＬ文を生成し、当該パラメータ取得用ＳＱＬ文を前記データベースに対して実行して、当該検索結果をパラメータとして取得する手段と、
特定された前記解析用テンプレートに対応する前記検証用ＳＱＬテンプレートと、特定された前記変数の値のうち該当するものと、取得された前記パラメータのいずれかとが組み合わせられた検証用ＳＱＬ文を前記データベースに対して実行して、検索結果を第２の検索結果として取得する検索結果取得手段と、
取得された前記第２の検索結果が、特定された前記解析用テンプレートに対応する前記検証文テンプレートと前記検証用ＳＱＬ文とが組み合わされた検証文を充足するものであるか判断し、充足する場合に、前記第２の検索結果をもたらした前記検証用ＳＱＬ文に組み合わされた前記パラメータを含むログを生成するログ生成手段と、
を有するデータベース検証装置。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施の形態に係るシステム概要を示す図である。
【図２】制約情報格納部に格納されるデータの一例を示す図である。
【図３】テンプレート格納部に格納されるデータ（文法パターン）の一例を示す図である。
【図４】テンプレート格納部に格納されるデータ（擬似ＳＱＬ文テンプレート）の一例を示す図である。
【図５】テンプレート格納部に格納されるデータ（カラム値取得用ＳＱＬ文テンプレート）の一例を示す図である。
【図６】テンプレート格納部に格納されるデータ（検証文テンプレート）の一例を示す図である。
【図７】注文ＤＢに格納されるデータの一例を示す図である。
【図８】商品ＤＢに格納されるデータの一例を示す図である。
【図９】本発明の実施の形態における処理フローを示す図である。
【図１０】（ａ）乃至（ｃ）は、処理フローにおける途中結果を示す図である。
【図１１】本発明の実施の形態における処理フローを示す図である。
【図１２】（ａ）乃至（ｆ）は、処理フローにおける途中結果を示す図である。
【図１３】評価ログ格納部に格納されるデータの一例を示す図である。
【図１４】制約情報格納部に格納されるデータの一例を示す図である。
【図１５】ＤＢ１に格納されるデータの一例を示す図である。
【図１６】ＤＢ３に格納されるデータの一例を示す図である。
【図１７】（ａ）乃至（ｊ）は、第２の具体例における処理の途中結果を示す図である。
【図１８】コンピュータの機能ブロック図である。
【符号の説明】
【００４５】
１  制約情報格納部
３  テンプレート格納部
５  制約情報読み取り部
７  変数データ格納部
９  検証文生成部
１１  パラメータ検出部
１３  検証文データ格納部
１５  パラメータ格納部
１７  検証実行部
１９  評価ログ格納部
２１  出力部
１００  データベース検証装置
２００  ＤＢ
【図１】
0005076700.tif 000002
【図２】
0005076700.tif 000003
【図３】
0005076700.tif 000004
【図４】
0005076700.tif 000005
【図５】
0005076700.tif 000006
【図６】
0005076700.tif 000007
【図７】
0005076700.tif 000008
【図８】
0005076700.tif 000009
【図９】
0005076700.tif 000010
【図１０】
0005076700.tif 000011
【図１１】
0005076700.tif 000012
【図１２】
0005076700.tif 000013
【図１３】
0005076700.tif 000014
【図１４】
0005076700.tif 000015
【図１５】
0005076700.tif 000016
【図１６】
0005076700.tif 000017
【図１７】
0005076700.tif 000018
【図１８】
0005076700.tif 000019