(57)【要約】【課題】  、移行先のデータベースシステムが機能することを確保しつつ移行時におけるクエリタイプの判断処理を簡略化して処理コストをできるだけ抑えることのできるデータ変換方法を提供する。【解決手段】  タイプ決定ステップＳＱ２０２において、移行元データベースシステム内の元クエリの子クエリが、関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、その元クエリを他タイプと判定する。そして、クエリ作成ステップＳＱ２０７において、他タイプあるいはストアドプロシージャタイプと判定された元クエリについては、その元クエリの機能記述と同等の機能記述を含むストアドタイプの変換後クエリを生成すると共に、その元クエリの機能記述と同等の機能記述を含む関数タイプの変換後クエリを生成する。【選択図】  図４
2014063204.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１クエリを有する第１データベースシステムを複数の変換後クエリを有する第２データベースに移行するデータ変換方法であって、
前記第１のクエリは、パラメータ、追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
変換後クエリのタイプとして、
パラメータを禁止し、オリジナルのデータベースの値の追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記変換後クエリのタイプを決定するタイプ決定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記変換後クエリを生成するクエリ生成ステップと
を有し、
前記タイプ決定ステップは、
前記第１のクエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプ（仮想タイプ）である場合に、当該第１のクエリを他タイプと判定し、
前記クエリ生成ステップは、
前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドタイプの前記変換後クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２のクエリを生成する
データ変換方法。
【請求項２】
前記クエリ生成ステップは、
前記クエリ生成ステップで生成された前記ストアドタイプの変換後クエリおよび前記関数タイプの変換後クエリの双方が、前記対象クエリの子クエリを呼び出し、
当該ストアドタイプの変換後クエリが、前記対象クエリの子クエリに対応した前記変換後クエリに対しての追加・削除・更新処理を記述し、
当該関数タイプの変換後クエリが、前記対象クエリの親クエリに対応した前記変換後クエリ内で子クエリとして記述される
ようにクエリ生成を行う
請求項１にデータ変換方法。
該第１クエリに対応する変換後クエリはビュータイプであると判定し、
【請求項３】
前記タイプ決定ステップは、
前記第１クエリがアクションクエリである場合に、当該第１クエリに対応する変換後クエリをストアドプロシージャタイプと判定し、
前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当
前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されてなく、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する変換後クエリは関数タイプであると判定し、
前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されており、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する変換後クエリはストアドプロシージャタイプであると判定する
請求項２に記載のデータ変換方法。
【請求項４】
前記関数は、テーブルを返り値として必ず返し、
前記ストアドプロシージャは、戻り値の有無および型が不確定である
請求項３に記載のデータ変換方法。
【請求項５】
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々が子クエリとして呼び出される場合の呼び出し方法に関する記述を当該第１クエリに対応する前記変換後クエリのタイプに基づいて決定する呼び出し方法決定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリに含まれる機能記述に基づいて前記変換後クエリにて使用可能な機能記述を生成した上で、前記第１クエリに含まれる前記機能記述に子クエリの呼び出しに関する記述が含まれていた場合には必要に応じて当該子クエリとして呼び出されるべき前記第１クエリに対応するものとして前記呼び出し方法決定ステップにおいて決定された呼び出し方法に関する記述に置き換える、機能記述生成ステップと
を更に備えており、
前記クエリ生成ステップは、前記機能記述生成ステップにおいて生成した機能記述を用いて前記変換後クエリを生成する
請求項３または請求項４に記載のデータ変換方法。
【請求項６】
前記タイプ決定ステップで前記他タイプと判定された第１クエリのうち、パラメータを持つ子クエリを有する第１クエリのタイプを前記他タイプと補正するタイプ補正ステップをさらに有する
請求項３〜４のいずれに記載のデータ変換方法。
【請求項７】
前記第２データベースシステムには、入力されたクエリ生成コマンドの内容に応じて前記変換後クエリを生成するクエリ生成機能が実装されており、
前記クエリ生成ステップは、生成すべき前記変換後クエリを示す前記クエリ生成コマンドを発行する
請求項３〜５のいずれかに記載のデータ変換方法。
【請求項８】
前記クエリ生成ステップは、前記第１クエリの夫々に対応する前記変換後クエリの生成用の前記クエリ生成コマンドを発行するにあたり、処理対象となっている前記第１クエリに対して下階層のクエリが存在している場合であって当該下階層のクエリにパラメータが含まれている場合には、前記下階層のクエリに含まれているパラメータも当該処理対象となっている前記第１クエリ用のパラメータとして列挙する
請求項３〜６のいずれかに記載のデータ変換方法。
【請求項９】
複数の第１クエリを有する第１データベースシステムを複数の変換後クエリを有する第２データベースに移行するデータ変換装置であって、
前記第１のクエリは、パラメータ、追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
変換後クエリのタイプとして、
パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定手段と、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記変換後クエリのタイプを決定するタイプ決定手段と、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記変換後クエリを生成するクエリ生成手段と
を有し、
前記タイプ決定手段は、
前記第１のクエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１のクエリを他タイプと判定し、
前記クエリ生成手段は、
前記タイプ決定手段において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドタイプの前記変換後クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２のクエリを生成する
データベース移行装置。
【請求項１０】
複数の第１クエリを有する第１データベースシステムを複数の変換後クエリを有する第２データベースに移行するコンピュータが実行するプログラムであって、
前記第１のクエリは、パラメータ、追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
変換後クエリのタイプとして、
パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記変換後クエリのタイプを決定するタイプ決定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記変換後クエリを生成するクエリ生成ステップと
を前記コンピュータに実行させ、
前記タイプ決定ステップは、
前記第１のクエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１のクエリを他タイプと判定し、
前記クエリ生成ステップは、
前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドタイプの前記変換後クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２のクエリを生成する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムの移行に伴う処理を行うデータ変換方法、そのプログラムおよびその方法に関する。
【背景技術】
【０００２】
事業規模の変化などに応じて、所定のデータベースシステムから他のデータベースシステムへ移行する場合がある。かかるデータベースシステムの移行に関する技術としては、例えば特許文献１に開示された技術がある。
【０００３】
特許文献１記載されているように、データベースシステムに使用可能なＳＱＬ文はシステム毎に異なっている。そこで、特許文献１のシステムにおいては、ＧＵＩ技術とＳＱＬ文自動変換処理とを連携させることによりデータベースシステムをスムーズに移行するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３５１７１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１において変換対象としているのはＳＱＬ文自体であるが、変換する対象はＳＱＬ文だけではない。従って、一般的には、ＳＱＬ文を変換しただけではデータベースシステムの適切な移行は行えない。
【０００６】
例えば、移行元のデータベースシステムがマイクロソフト社のＡｃｃｅｓｓ(商標)であり、移行先のデータベースシステムが同じくマイクロソフト社のＳＱＬ  Ｓｅｒｖｅｒである場合、ＳＱＬ  Ｓｅｒｖｅｒのクエリにはビュー、インラインテーブル値関数及びストアドプロシージャといったタイプがあるのに対して、Ａｃｃｅｓｓのクエリの場合には同様の機能を有することは可能であるが特にタイプは定められていない。
そのため、Ａｃｃｅｓｓ(商標)で構成されたデータベースシステムをＳＱＬ  Ｓｅｒｖｅｒで構成されたデータベースシステムに移行する際には、Ａｃｃｅｓｓ（商標）の各クエリをそのクエリの内容に基づいて適切なタイプを有するＳＱＬ  Ｓｅｒｖｅｒのクエリに変換しなければならない。
そのため、変換後のクエリの適切なタイプの特定をクエリの変換処理の早い段階において行う必要がある。
【０００７】
しかしながら、クエリの内容に基づいて適切なタイプを決定する際に、例えば、タイプ決定のための判断条件が６つあった場合には６４（＝２６）回の判断分岐を行わなければならない。そのため、判断に必要とされる処理コストが多大なものとなってしまうという問題がある。
【０００８】
そこで、本発明は、移行先のデータベースシステムが機能することを確保しつつ移行時におけるクエリタイプの判断処理を簡略化して処理コストをできるだけ抑えることのできるデータ変換方法、その装置およびそのプログラム法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のデータ変換方法は、複数の第１クエリを有する第１データベースシステムを複数の変換後クエリを有する第２データベースに移行するデータ変換方法であって、
前記第１のクエリは、パラメータ、追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、変換後クエリのタイプとして、パラメータを禁止し、オリジナルのデータベースの値の追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記変換後クエリのタイプを決定するタイプ決定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記変換後クエリを生成するクエリ生成ステップとを有する。
前記タイプ決定ステップは、前記第１のクエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプ（仮想タイプ）である場合に、当該第１のクエリを他タイプと判定する。
前記クエリ生成ステップは、前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドタイプの前記変換後クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２のクエリを生成する。
【００１０】
好適には、本発明のデータ変換方法の前記クエリ生成ステップは、前記クエリ生成ステップで生成された前記ストアドタイプの変換後クエリおよび前記関数タイプの変換後クエリの双方が、前記対象クエリの子クエリを呼び出し、当該ストアドタイプの変換後クエリが、前記対象クエリの子クエリに対応した前記変換後クエリに対しての追加・削除・更新処理を記述し、当該関数タイプの変換後クエリが、前記対象クエリの親クエリに対応した前記変換後クエリ内で子クエリとして記述されるようにクエリ生成を行う。
好適には、本発明のデータ変換方法の前記タイプ決定ステップは、前記第１クエリがアクションクエリである場合に、当該第１クエリに対応する変換後クエリをストアドプロシージャタイプと判定する。
好適には、本発明のデータ変換方法の前記タイプ決定ステップは、前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する変換後クエリはビュータイプであると判定する
【００１１】
好適には、本発明のデータ変換方法の前記タイプ決定ステップは、前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されてなく、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する変換後クエリは関数タイプであると判定する。
好適には、本発明のデータ変換方法の前記タイプ決定ステップは、前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されており、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する変換後クエリはストアドプロシージャタイプであると判定する。
好適には、前記関数は、テーブルを返り値として必ず返し、前記ストアドプロシージャは、戻り値の有無および型が不確定である。
【００１２】
好適には、本発明のデータ変換方法は、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々が子クエリとして呼び出される場合の呼び出し方法に関する記述を当該第１クエリに対応する前記変換後クエリのタイプに基づいて決定する呼び出し方法決定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリに含まれる機能記述に基づいて前記変換後クエリにて使用可能な機能記述を生成した上で、前記第１クエリに含まれる前記機能記述に子クエリの呼び出しに関する記述が含まれていた場合には必要に応じて当該子クエリとして呼び出されるべき前記第１クエリに対応するものとして前記呼び出し方法決定ステップにおいて決定された呼び出し方法に関する記述に置き換える、機能記述生成ステップとを更に備えている。前記クエリ生成ステップは、前記機能記述生成ステップにおいて生成した機能記述を用いて前記変換後クエリを生成する。
好適には、本発明のデータ変換方法は、前記タイプ決定ステップで前記他タイプと判定された第１クエリのうち、パラメータを持つ子クエリを有する第１クエリのタイプを前記他タイプと補正するタイプ補正ステップをさらに有する。
好適には、本発明のデータ変換方法の前記第２データベースシステムには、入力されたクエリ生成コマンドの内容に応じて前記変換後クエリを生成するクエリ生成機能が実装されており、前記クエリ生成ステップは、生成すべき前記変換後クエリを示す前記クエリ生成コマンドを発行する。
【００１３】
好適には、本発明のデータ変換方法の前記クエリ生成ステップは、前記第１クエリの夫々に対応する前記変換後クエリの生成用の前記クエリ生成コマンドを発行するにあたり、処理対象となっている前記第１クエリに対して下階層のクエリが存在している場合であって当該下階層のクエリにパラメータが含まれている場合には、前記下階層のクエリに含まれているパラメータも当該処理対象となっている前記第１クエリ用のパラメータとして列挙する。
好適には、本発明のデータ変換方法の前記関数は、インラインテーブル値関数または複数ステートメントテーブル値関数である。
【００１４】
本発明のデータ変換装置は、複数の第１クエリを有する第１データベースシステムを複数の変換後クエリを有する第２データベースに移行するデータ変換装置であって、前記第１のクエリは、パラメータ、追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、変換後クエリのタイプとして、パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定手段と、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記変換後クエリのタイプを決定するタイプ決定手段と、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記変換後クエリを生成するクエリ生成手段とを有する。
前記タイプ決定手段は、前記第１のクエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１のクエリを他タイプと判定し、前記クエリ生成手段は、前記タイプ決定手段において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドタイプの前記変換後クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２のクエリを生成する。
【００１５】
本発明のプログラムは、複数の第１クエリを有する第１データベースシステムを複数の変換後クエリを有する第２データベースに移行するコンピュータが実行するプログラムであって、前記第１のクエリは、パラメータ、追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、変換後クエリのタイプとして、パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記変換後クエリのタイプを決定するタイプ決定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記変換後クエリを生成するクエリ生成ステップとを前記コンピュータに実行させる。また、前記タイプ決定ステップは、
前記第１のクエリの子クエリが、前記関数タイプ、ストアドプロシジャタイプあるいは他タイプである場合に、当該第１のクエリを他タイプと判定し、前記クエリ生成ステップは、前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドタイプの前記変換後クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２のクエリを生成する。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の実施形態に係わるデータ変換装置の処理の概念図である。
【図２】図２は、図１に示すデータ変換装置の変換パターンを説明するための図である。
【図３】図３は、本発明の実施形態に係わるデータ変換装置の機能ブロック図である。
【図４】図４は、図３に示すデータ変換装置の処理フローを説明するための図である。
【図５】図５は、図３に示すデータ変換装置の処理結果の一例である。
【図６】図６は、図４に示すタイプ判定ステップの詳細のフローチャートである。
【図７】図７は、図４に示すタイプ補正ステップの詳細のフローチャートである。
【図８】図８は、図３に示すデータ変換装置の処理結果の一例である。
【図９】図９は、図３に示すデータ変換装置の処理結果の一例である。
【図１０】図１０は、図３に示すデータ変換装置の処理結果の一例である。
【図１１】図１１は、図４に示す呼び出し方法決定ステップの詳細のフローチャートである。
【図１２】図１２は、図４に示すＳＱＬ文生成ステップの詳細のフローチャートである。
【図１３】図１３は、図４に示すクエリ作成ステップの詳細のフローチャートである。
【図１４】図１４は、図３に示すデータ変換装置のハードウェア構成図である。
【図１５】図１５は、変換対象のＡＣＣＥＳＳのデータベースシステムのコードの概念図である。
【図１６】図１６は、図１５に示す各クエリの詳細を説明するための図である。
【図１７】図１７は、図１５に示す各クエリの詳細を説明するための図である。
【図１８】図１８は、図１５に示す各クエリの詳細を説明するための図である。
【図１９】図１９は、図１５に示す各クエリの詳細を説明するための図である。
【図２０】図２０は、図１５に示す各クエリの詳細を説明するための図である。
【図２１】図２１は、図１５に示すコードに対して、図６に示すタイプ判定ステップの各処理を行った場合を説明するための図である。
【図２２】図２２は、図１５に示すコードに対して、図６に示すタイプ判定ステップの各処理を行った場合を説明するための図である。
【図２３】図２３は、図１５に示すコードに対して、図６に示すタイプ判定ステップの各処理を行った場合を説明するための図である。
【図２４】図２４は、図１５に示すコードに対して、図６に示すタイプ判定ステップの各処理を行った場合を説明するための図である。
【図２５】図２５は、図１５に示すコードに対して、図６に示すタイプ判定ステップの各処理を行った場合を説明するための図である。
【図２６】図２６は、図６の処理の後に、各コードに対して図７に示すタイプ補正ステップのＳＱ５０１〜ＳＱ５０４の処理を行った場合を説明するための図である。
【図２７】図２７は、図６の処理の後に、各コードに対して図７に示すタイプ補正ステップのＳＱ５０１〜ＳＱ５０４の処理を行った場合を説明するための図である。
【図２８】図２８は、図６の処理の後に、各コードに対して図７に示すタイプ補正ステップのＳＱ５０１〜ＳＱ５０４の処理を行った場合を説明するための図である。
【図２９】図２９は、図６の処理の後に、各コードに対して図７に示すタイプ補正ステップのＳＱ５０１〜ＳＱ５０４の処理を行った場合を説明するための図である。
【図３０】図３０は、図６の処理の後に、各コードに対して図７に示すタイプ補正ステップのＳＱ５０１〜ＳＱ５０４の処理を行った場合を説明するための図である。
【図３１】図３１は、各コードに対して図７に示すタイプ補正ステップのＳＱ５０５〜ＳＱ５０８の処理を行った場合を説明するための図である。
【図３２】図３２は、各コードに対して図７に示すタイプ補正ステップのＳＱ５０５〜ＳＱ５０８の処理を行った場合を説明するための図である。
【図３３】図３３は、各コードに対して図７に示すタイプ補正ステップのＳＱ５０５〜ＳＱ５０８の処理を行った場合を説明するための図である。
【図３４】図３４は、各コードに対して図７に示すタイプ補正ステップのＳＱ５０５〜ＳＱ５０８の処理を行った場合を説明するための図である。
【図３５】図３５は、各コードに対して図７に示すタイプ補正ステップのＳＱ５０５〜ＳＱ５０８の処理を行った場合を説明するための図である。
【図３６】図３６は、各コードに対して図１１に示す呼び出し方法決定ステップの処理を行った場合を説明するための図である。
【図３７】図３７は、各コードに対して図１１に示す呼び出し方法決定ステップの処理を行った場合を説明するための図である。
【図３８】図３８は、各コードに対して図１１に示す呼び出し方法決定ステップの処理を行った場合を説明するための図である。
【図３９】図３９は、各コードに対して図１１に示す呼び出し方法決定ステップの処理を行った場合を説明するための図である。
【図４０】図４０は、各コードに対して図１１に示す呼び出し方法決定ステップの処理を行った場合を説明するための図である。
【図４１】図４１は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４２】図４２は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４３】図４３は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４４】図４４は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４５】図４５は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４６】図４６は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４７】図４７は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４８】図４８は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図４９】図４９は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図５０】図５０は、各コードに対して図１２に示すＳＱＬ文生成ステップの処理を行った場合を説明するための図である。
【図５１】図５１は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５２】図５２は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５３】図５３は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５４】図５４は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５５】図５５は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５６】図５６は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５７】図５７は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５８】図５８は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図５９】図５９は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図６０】図６０は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図６１】図６１は、各コードに対して図１３に示すクエリ生成ステップの処理を行った場合を説明するための図である。
【図６２】図６２は、データ変換装置によって生成された変換後のＳＱＬ  ＳＥＲＶＥＲのコードである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態に係わるデータ変換装置について説明する。
移行元の関係データベースシステムがマイロソフト社のＡｃｃｅｓｓであり、移行先のデータベースシステムが同じくマイクロソフト社のＳＱＬ  Ｓｅｒｖｅｒである場合を例にして、本実施形態のデータ変換装置を説明する。
なお、移行元及び移行先のデータベースシステムは、これらに限定されるものではない。
【００１８】
ところで、関係データベースシステムでは、クエリという、データベース管理システムに対する処理要求(問い合わせ)を文字列を用いて、データの検索や更新、削除などの命令をシステムに発行する。検索クエリでは、対象となるテーブルやデータの抽出条件、並べ方などを指定する。一度生成したクエリは保存しておいて何度も使うことができる。
関係データベースでシステムでは、クエリの記述にＳＱＬという言語を使う。
【００１９】
マイクロソフト社のＡｃｃｅｓｓ等のような汎用的な関係データべース（本発明の第１データベースシステムの一例）では、パフォーマンスやスケラビリティよりも、初心者でもプログラムできるように、クエリのタイプは定めていない。
一方、ＳＱＬ  Ｓｅｒｖｅｒ等のより高度なデータベース（本発明の第２データベースシステムの一例）では、複数のクエリのタイプを用意し、それぞれのクエリについて記述方法等の制約を設けている。これは、データベースを基盤とするアプリケーションのパフォーマンスとスケーラビリティを向上させるためである。
例えば、項目の並べ替え文（ＯＲＤＥＲ  ＢＹ）の有無、パラメータの有無、追加・削除・更新処理の有無、他のクエリからのネストの有無を制約条件として、下記表１に示すように組み合わせて、クエリのタイプを以下の３つに規定することである。
これらの複数のクエリは、「ビュー」、「テーブル関数」および「ストアドプロシージャ」の３タイプに分類される。
本実施形態によるデータベース移行システムは、Ａｃｃｅｓｓのクエリ（以下、元クエリとも記す）の各々に対して、その内容に基づいて適切なタイプのＳＱＬ  Ｓｅｒｖｅｒのクエリ（以下、変換後クエリとも記す）に変換する。
【００２０】
【表１】
2014063204.tif 000003
【００２１】
・「他のクエリからのネスト」→自分がだれかの子か
・「追加・削除・更新処理」→フォームからの呼び出し時に必要な機能
・「フォーム」とは画面上の入力ボックス等の起動するためのものであり、変更、削除、追加等の機能を必要とする
上述した表１において、「×」→禁止とした箇所の技術的理由を以下に示す。
【００２２】
［ビューがＯＲＤＥＲ ＢＹ句を含めない理由］
ＳＱＬ文法上は、ＯＲＤＥＲ
ＢＹ句を含めることは可能である。しかし、ビューを実行する際、データベースエンジンは最適化を行い、パフォーマンスを重視した実行プランにより実行し、並べ替えられた結果を返さない。これは、一般に並べ替え処理は、全データを走査し正しい順序で結果を返さなければいけないため、非常に高負荷な処理であるためである。様々な局面で多用されるビューに対してはパフォーマンスを優先するために、このように規定している。
これに対して、ストアドプロシージャは、最適化を行わないため、パフォーマンスは低下するが、並べ替えられた結果をそのまま返すことが可能である。
【００２３】
［ビューがパラメータを含めない理由］
ＯＲＤＥＲ ＢＹ句の理由と同様、全行走査が必要なパラメータ指定による絞り込みは、パフォーマンスの観点から禁止している。
【００２４】
［関数が追加・更新・削除できない理由］
ビューおよびストアドプロシージャから返される結果は、オリジナルのデータベース(メモリ)のテーブルの値に対して直接的に参照可能な状態で返される。つまり、返された結果を変更すると実際のデータの値が変更される。
これに対して、関数を実行する際には、データベースエンジンが内部的に一時テーブルを生成する。これは、元となるテーブルのレコードロックを回避し、他の操作に障害を与えないためである。一時テーブルに結果を挿入し、その一時テーブルを結果として返す。このため、返された結果は、テーブルの値に対して直接的な参照はできない。また、上述のように一時テーブルを介するため、常に実行時に、一時テーブルの生成と削除が繰り返されパフォーマンスは低い。
【００２５】
［ストアドプロシージャが他のクエリからのネストを禁止している理由］
ストアドプロシージャは、複数のＳＱＬ文を名前付きバッチ処理として再利用可能にするために用いられる。ストアドプロシージャの内容によっては、複数の結果を返すことも可能であり、値を返さないことも可能である。
返すデータ型がテーブルデータ型ではないため、文法上、ＳＱＬ内で結果を取得する目的で使用する(ＦＲＯＭ句の中でテーブルの様に使用する)ことは許可されていない。
すなわち、ＳＱＬ内で、ＦＲＯＭ句内でテーブルとして用いることができるのは、テーブル型の値を返すビューと関数の返り値である。
【００２６】
以下、ＳＱＬ ＳＥＲＶＥＲ（移行先データベースシステム）で規定されたクエリの３つのタイプについて説明する。
［ビュー］
ビューは、関数・ストアドプロシージャよりパフォーマンスが高い。
ビューとは，「ＦＲＯＭ」句で指定した元となるテーブルから、「ＳＥＬＥＣＴ」句で指定した項目を検索して取り出す。また、「ＷＨＥＲＥ」句で検索条件を指定できる。
【００２７】
［関数］
本実施形態において、関数とは、インラインテーブル値関数あるいは複数ステートメントテーブル値関数等のテーブル関数である。
関数は、上記表１の制約の他に、例えば、以下の特性がある。
・アクションクエリを含まない
・テーブル型の戻り値が必ずある
【００２８】
ここで、アクションクエリとは、テーブルレコードに対して削除、変更または追加の何らかのアクションを施すクエリをいう。具体的には、ＤＥＬＥＴＥ文、ＵＰＤＥＡＴＥ文、ＩＮＳＥＲＴ文、ＳＥＬＥＣＴ  ＩＮＴＯ文を含むクエリをいう。
【００２９】
ＡＣＣＥＳＳ等のクエリは、常に単一のＳＱＬ文（機能記述）であるため、インラインテーブル値関数の必要十分の機能を備えている。
インラインテーブル値関数のＳＱＬ文を単一にするのは、単一のＳＱＬ文から、データの参照元(テーブルなど)、抽出条件および結果として返されるテーブル値の項目名とデータ型が決定可能だからである。
【００３０】
複数ステートメントテーブル値関数は、内部で変数を定義し、制御文（ＩＦ  ＥＬＳＥ等）を行えるテーブル値関数である。インラインテーブル値関数とは異なり、複雑な制御を行える分、結果として返すテーブル値の項目名とデータ型を明示的に宣言しなければならない。
これらのテーブル値関数は、ビューに代わる強力なツールになる。テーブル値関数は、クエリ内のテーブル式またはビュー式を指定できる場所で使用できる。ビューに含めることができるのは、1 つの SELECT ステートメントだけだが、複数ステートメントテーブル値関数には、ビューで使用できるロジックより高度なロジックを使用できる追加のステートメントを含めることができる。
テーブル値関数を、単一の結果セットを返すストアドプロシージャの代わりに使用することもできる。テーブル値関数で返されるテーブルはＳＱＬステートメントのＦＲＯＭ句から参照できるが、ストアドプロシージャから返される値は、テーブル型ではないため、参照できない。
【００３１】
なお、関数は、クエリを作る可能性があり、そのクエリがフォームで参照される可能性がある。そのため、関数の子クエリを有する場合は、データ操作の可能性があると判断する。
【００３２】
［ストアドプロシージャ］
ストアドプロシージャは、上記表１の制約の他に、例えば、以下の特性を有している。
・パフォーマンス中程度
・アクションクエリを含むことが可能。アクションクエリは、ストアドしかもてない。
・戻り値の有無は任意だが、戻り値は値のみでありテーブル型ではない。
・キャッシュができる
【００３３】
ＳＱＬサーバ（データベース）は、個人データや機密データを含む。ユーザに随時許可を与えると、時として、この情報のセキュリティおよび機密性を脅かすことがある。
そのため、事実上、わずかな部分（パラメータなど）だけしか変更できない組み込みのクエリである「ストアドプロシージャ」を用いる。
ストアドプロシージャはＳＱＬ標準の基礎をなす機能であり、データベース管理者がデータベースに対して実行されるクエリを事前に決定することを可能にする、典型的なプログラミング言語における機能と類似している。このクエリ事前決定は、データベース挙動におけるより高いレベルのセキュリティおよび性能予測可能性（ｐｅｒｆｏｒｍａｎｃｅ
ｐｒｅｄｉｃｔａｂｉｌｉｔｙ）を提供することができる。リレーショナルデータベースの多くのユーザは、もっぱらストアドプロシージャに頼って、任意の（例えば随時の）クエリがデータベースによって消費され得ないようにしている。
【００３４】
ストアドプロシージャの場合は、例えば、「ＣＲＥＡＴＥ
ＰＲＯＣＥＤＵＲＥ ストアドプロシージャ名」とする。ＰＲＯＣＥＤＵＲＥというキーワードが、ストアドプロシージャ生成の指示である。ＡＳ句以降には、定義するＳＱＬ文を記述する。
ＣＲＥＡＴＥ文で生成したストアドプロシージャは、ビューと同様にデータベースサーバ上に格納される。一度定義したストアドプロシージャは、権限の設定を行えば、ほかのユーザから呼び出すことも可能である。
ＡＳ句に定義するＳＱＬ文は、ＳＥＬＥＣＴ文をはじめ、ほとんどすべてのＳＱＬ文が使用できる。また、1つのＳＱＬ文だけではなく、複数のＳＱＬ文の指定が可能である。ＳＱＬ文の実行は、基本的には定義した順番に行われるが、ほかの言語と同じように実行順を制御したり、繰り返させたりすることも可能である。
【００３５】
「データベース上に名前を付けて保存しておいたＳＥＬＥＣＴ文を呼び出す」という単純な機能においては、ストアドプロシージャはビューと同じである。ストアドプロシージャが実力を発揮するのは、ＳＱＬ
ＳＥＲＶＥＲでの実行時である。データベースにプログラムを保存しておく主な目的は、次のとおりである。
&#8226;繰り返して使用されるデータベースに対する処理を共通化して実装することによって、データの矛盾を防ぎたい
&#8226;単独のＳＥＬＥＣＴ文では処理できない複雑な条件による問い合わせを、クライアント・プログラムではなくデータベース上で実行することで、クライアントとデータベース間の通信量（トラフィック量）を抑えてレスポンスタイムを短縮化する。
一連の処理をストアドプロシージャでまとめて生成すれば、データベースへの問い合わせはストアドプロシージャを一度呼び出すだけで済む。多量の顧客からの注文を処理するシステムでは、クライアントとデータベース間での通信量を大幅に削減することが可能になる。
すなわち、ストアドプロシージャの処理は、ＳＱＬサーバ（データベースシステム）、コードを実行しながら、その間にオリジナルのデータベースのテーブルの値の追加・変更・削除をして処理を進められる。最終的な結果が出たときに、それをＳＱＬサーバからクライアントに戻す。
一方、関数で同様な処理を行おうとすると、実行中に、テーブルの追加・変更・削除はできない。
【００３６】
上述したように、ＡＣＣＥＳＳ等のような汎用的な関係データべースでは、パフォーマンスやスケラビリティよりも、初心者でもプログラムできるように、クエリのタイプは定めていない。
一方、ＳＱＬ ＳＥＲＶＥＲ等のより高度なデータベースでは、データベースを基盤とするアプリケーションのパフォーマンスとスケーラビリティを向上させるために、複数のクエリのタイプを用意し、それぞれのクエリについて記述方法等の制約を設けている。
そのため、ＡｃｃｅｓｓクエリをＳＱＬ
Ｓｅｒｖｅｒクエリへ移行する際、種々の条件を加味しながら適切なＳＱＬ Ｓｅｒｖｅｒクエリのタイプを決定していかなければならない。
【００３７】
本実施形態データ変換装置では、上述した表１の制約条件を基に、図２に示す変換パターンに基づいて、Ａｃｃｅｓｓで用いられていたＡｃｃｅｓｓ用ＳＱＬ文を、適切なＳＱＬ
ＳＥＲＶＥＲ用ＳＱＬに変換し、続いて、それによって生成したＳＱＬ文を用いて、ＳＱＬ ＳＥＲＶＥＲで使用可能なクエリを生成する。
図２に示す変換パターンは、上述したＳＱＬ
ＳＥＲＶＥＲクエリの表１に示す制約条件と、上述した特性に基づいて、より高いパフォーマンスと操作性を得られるように、発明者が考え出したものである。
すなわち、変換パターンは数多く考えられるが、そのなかで、図２に示す変換パターンが、パフォーマンスと操作性の面から、非常に優れている。
【００３８】
本実施形態では、移行元のデータベース内のクエリの内容を基に、移行先のデータベースのクエリのタイプを判定できるものについては、そのタイプを用いる。
また、移行元のデータベース内のクエリのうち、タイプが判定できないクエリについては「他タイプ」と判定し、いずれのタイプであっても機能が同じになるように、クエリを生成する。
【００３９】
本実施形態のデータ変換装置では、タイプ決定ステップにおいて、移行元データベースシステム内の元クエリの子クエリが、関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、その元クエリを他タイプと判定する。これは、その元クエリに要求される機能を必ず満たす変換後の一つのクエリを特定できないためである。
そして、当該データ変換装置は、他タイプあるいはストアドプロシージャタイプと判定された元クエリについては、その元クエリの機能記述と同等の機能記述を含むストアドタイプの変換後クエリを生成すると共に、その元クエリの機能記述と同等の機能記述を含む関数タイプの変換後クエリを生成する。
【００４０】
ここで、元クエリの機能記述と同等の機能記述を含むストアドタイプの変換後クエリを生成するのは、元クエリの子クエリに対しての操作性の観点の理由である。
また、元クエリの機能記述と同等の機能記述を含み関数タイプの変換後クエリを生成するのは、元クエリの親クエリが存在する可能性があるという観点の理由である。
「他タイプ」とは、処理過程において仮想的に規定されるタイプであり、移行元および移行後のデータベースシステムでは規定されていない。この他タイプは、変換後クエリを生成する生成方法を選択する条件判断に用いられる。
すなわち、他タイプと判定された元クエリ（子クエリが、テーブル関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合）である対象クエリについては、子クエリに対してデータ操作（追加・削除・更新処理）の可能性があるため、これらを許可する（表1）ストアドプロシージャタイプの変換後クエリを生成する。
なお、関数は、クエリを作る可能性があり、そのクエリがフォームで参照される可能性がある。そのため、関数の子クエリを有する場合は、データ操作の可能性があると判断する。
【００４１】
また、ストアドプロシージャと判定された元クエリについては、ストアドプロシージャタイプの変換後クエリを生成する。
ここで、ストアドプロシージャタイプの変換後クエリは、他のクエリからのネスト（自分がだれかの子供になること）を禁止する(図２)。一方、この変換後クエリは、他のクエリの子となる“可能性”がある。
そのため、対象クエリの機能記述と同等の機能記述を含む関数タイプの変換後クエリを生成する。
このとき、関数タイプの変換後クエリの名称は、例えば、ストアドプロシージャタイプの変換後クエリの名称と異なるものを用いる。
これにより、他タイプと判定された元クエリである対象クエリについて、ストアドプロシージャタイプの変換後クエリと、関数タイプの変換後クエリとの２つの変換後クエリが生成されるが、下層のクエリに対してのデータ操作機能と、親クエリがある場合における関数タイプとしての機能発揮との双方を実現できる。
【００４２】
このように、ストアドプロシージャあるいは他タイプと判定されたクエリについては、親クエリが実際あるかどうかに係わらず、親クエリがある場合でも問題ないように、全ての場合において、同じ機能のストアドプロシージャタイプの変換後クエリの他に、関数タイプの変換後クエリを生成する。これにより、無駄なクエリは多くなるが、変換後のアプリケーションの拡張を想定した際、関数を手作業で生成するという非常にコストのかかる作業を大幅に軽減できる。
実際にツール開発の現場では、本実施形態のデータ変換装置を用いたシステムにより、大幅な作業軽減が図れている。アップサイジングという総合的なアプリケーション変換(データの移行だけではなく機能性の移行)を行う際、どうしてもクエリの変換だけでは実現できない機能がある場合がある。その際には、既存のクエリを使用して新たなクエリを生成するが、ここでネスト可能な関数が生成済みかどうかで大きく作業コストが変わる。消すのは簡単だが、作るのは大変であるということに着目した技術である。
【００４３】
以下、本発明の実施形態に係わるデータ変換装置の具体例を説明する。
図３は、本発明の実施形態に係わるデータ変換装置１の機能ブロック図である。
図３に示すネスト関係特定部１１が図４に示すネスト関係特定ステップＳＱ２０１を実行し、タイプ決定部１２がタイプ決定ステップＳＱ２０２を実行し、呼び出し方法決定部１３が呼び出し方法決定ステップＳＱ２０５を実行し、ＳＱＬ文生成部１４がＳＱＬ生成ステップＳＱ２０６を実行し、クエリ生成部１５がクエリ生成ステップＳＱ２０７を実行する。
【００４４】
［ネスト関係特定ステップＳＱ２０１］
ネスト関係特定ステップＳＱ２０１は、Ａｃｃｅｓｓのクエリのネスト関係、即ち他のクエリから参照される関係にあるか否かを特定するものである。
図５に例示される４つのクエリのネスト関係について説明すると、クエリＣはクエリＤを参照して生成され、クエリＢは当該生成されたクエリＣを参照して生成され、更にクエリＡはクエリＢを参照して生成される。
ここで、以下の説明においては、隣接する２つのクエリを例にすると、参照する方のクエリを親クエリと、その親クエリに参照される方のクエリを子クエリと表記する。
図５の例では、クエリＣはクエリＤの親クエリであり、クエリＤはクエリＣの子クエリとなる。また、参照される側のクエリを参照する側のクエリに対して下階層にあると呼び、参照する側のクエリを参照される側のクエリに対して上階層にあると呼ぶ。
【００４５】
図５の例では、クエリＤはクエリＣよりも下階層にあり、クエリＣはクエリＤよりも上階層にある。また、４つのクエリＡ〜クエリＤの中では、クエリＤは最下階層に位置しており、クエリＡは最上階層に位置している。本実施の形態におけるネスト関係特定ステップは、クエリ間の参照関係について、このような上階層又は下階層の位置関係も特定するものである。
【００４６】
［タイプ決定ステップＳＱ２０２］
タイプ決定ステップＳＱ２０２は、上述したネスト関係が特定されたクエリに対して、当該ネスト関係に基づいて最下階層のクエリから順に最上階層のクエリまで、各クエリに対してＳＱＬ  Ｓｅｒｖｅｒで用いられるクエリの３タイプ（ビュー、関数、ストアドプロシージャ）に加え、「他タイプ」を含む計４タイプのいずれとするかを決定するものである。
上述したように、タイプ決定ステップＳＱ２０２は、タイプ判定ステップＳＱ２０３およびタイプ補正ステップＳＱ２０４を備えている。
各ステップの動作の概要としては、まず、タイプ判定ステップは各クエリを最下階層から順に上記４タイプのいずれとするかを判定し、全てのクエリの判定が終了すると、タイプ補正ステップにより当該判定された各クエリに対して必要に応じて各クエリのタイプが補正される。これにより、最終的に全てのクエリのタイプが決定する。以下、フローチャートを用いて具体的に説明する。
【００４７】
［タイプ判定ステップＳＱ２０３］
図６は、図４に示すタイプ判定ステップＳＱ２０３の詳細のフローチャートである。
図６に示されるように、タイプ判定ステップＳＱ２０３は、まず、対象となっているクエリが前述したアクションクエリであるか否かを判定する（ＳＱ４０１）。
対象となっているクエリがアクションクエリであると判定した場合には、当該クエリを「ストアドプロシージャ」として判定する（ＳＱ４０２）。
【００４８】
アクションクエリでない場合、ＯＲＤＥＲ  ＢＹ句を含むものかどうかを判定する（ＳＱ４０３）。
ＯＲＥＤＥＲ  ＢＹ句が含まれている場合は、当該クエリを「他タイプ」として判定する（ＳＱ４０４）。
ＯＲＤＥＲ  ＢＹ句が含まれていない場合、当該クエリにパラメータが含まれているかどうかを判定する（ＳＱ４０５）。ここで、パラメータとは、具体的には、ＰＡＲＡＭＥＴＥＲ文を含むものや、Ａｃｃｅｓｓオブジェクトへの値参照を含むものや、直接入力パラメータを含むものを指す。
パラメータが含まれていない場合、当該クエリが子クエリを持たないか又は子クエリが「ビュー」のみかを判定し（ＳＱ４０６）、該当する場合は当該クエリを「ビュー」として判定し（ＳＱ４０７）、該当しない場合は、当該クエリを「他タイプ」として判定する（ＳＱ４０８）。
【００４９】
一方、パラメータが含まれている場合（ＳＱ４０５で「Ｙｅｓ」）、当該クエリがフォームで参照されているかどうかを判定する（ＳＱ４０９）。参照されている場合は、当該クエリを「他タイプ」として判定する（ＳＱ４０８）。参照されていない場合は、更に、当該クエリに子クエリを持たないか又は子クエリが「ビュー」のみかを判定し（ＳＱ４１０）、該当する場合は「関数」として判定する（ＳＱ４１１）。該当しない場合は当該クエリを「他タイプ」として判定する（ＳＱ４０８）。このようにして、最下階層のクエリから順に各クエリのタイプを判定し（ＳＱ４１１）する。そして、全てのクエリについての判定が完了した後（ＳＱ４１６）にタイプ補正ステップＳＱ２０４へと進む。
【００５０】
［タイプ補正ステップＳＱ２０４］
タイプ補正ステップＳＱ２０４は、上記タイプ判定ステップＳＱ２０３において判定された各クエリに対して、タイプの補正が必要なクエリに対しては適切なタイプに補正をするものである。
なお、タイプ補正ステップＳＱ２０４についても、タイプ判定ステップＳＱ２０３と同様に最下階層のクエリから順に行われるものである。
【００５１】
具体的には、図７に示されるように、対象となるクエリのＷＨＥＲＥ句又はＨＡＶＩＮＧ句に暗黙パラメータがあるかどうかを判別する（ＳＱ５０１）。ここで、暗黙パラメータとは、入力ボックスを表示することによりユーザに対してパラメータの入力を促す処理が含まれているものを指す。
当該クエリに暗黙パラメータが含まれている場合、当該クエリのタイプを「他タイプ」に補正し（ＳＱ５０２）、当該クエリに暗黙パラメータが含まれていない場合、当該クエリのタイプは保持、即ち、上記のタイプ判定ステップで判定されたタイプを変更せずそのまま保持させる（ＳＱ５０３）。
このようにして、全てのクエリに対して処理を行ったことを確認すると（ＳＱ５０４）、再び最下階層のクエリから順番にパラメータを持つ子クエリがあるかどうかを判別する（ＳＱ５０５）。
パラメータを持つ子クエリがない場合、当該クエリのタイプはそのまま保持される（ＳＱ５０６）。一方、暗黙パラメータが発見されたことにより「他タイプ」に補正されたクエリがあった場合、それより上階層のクエリの全ては、パラメータを持つ子クエリを有することとなり、「他タイプ」に補正される（ＳＱ５０７）。
このようにして全てのクエリの補正が完了すると（ＳＱ５０８）タイプ補正ステップＳＱ２０４は終了する。
【００５２】
上記タイプ決定ステップＳＱ２０２の処理を、図８、図９および図１０に示されるような４つのクエリからなるＡｃｃｅｓｓのクエリを例にして説明する。
なお、図においては、クエリのタイプが既に記載されているが、実際にはタイプ決定ステップによって最下階層のクエリ（クエリＤ）からタイプが決定される。
図８の例を説明すると、図６に示される手順に従って、最下階層のクエリＤのタイプが判定される。
ここで、クエリＤは、アクションクエリ（ＳＱ４０１）を含まず、ＯＲＤＥＲ  ＢＹ句（ＳＱ４０３）も含まず、パラメータ（ＳＱ４０５）も含まないものとする。更に、クエリＤは最下階層であるため子クエリ（ＳＱ４０６）はない。従って、この場合、クエリＤは「ビュー」と判定される（ＳＱ４０７）。
【００５３】
次に、タイプ判定ステップＳＱ２０３は、クエリＣについてタイプを判定する。クエリＣもクエリＤと同様に、アクションクエリ（ＳＱ４０１）を含まず、ＯＲＤＥＲ  ＢＹ句（ＳＱ４０３）も含まず、パラメータ（ＳＱ４０５）も含まないものとする。また、クエリＣの子クエリであるクエリＤは「ビュー」（ＳＱ４０６）である。従って、クエリＣも「ビュー」と判定される（ＳＱ４０７）。
クエリＢ、クエリＡもクエリＣと同様にアクションクエリ（ＳＱ４０１）を含まず、ＯＲＤＥＲ  ＢＹ句（ＳＱ４０３）も含まず、パラメータ（ＳＱ４０５）も含まないものとし、また、各クエリの子クエリは「ビュー」（ＳＱ４０６）と判定されているので、それぞれのタイプは「ビュー」と判定される。
このようにして、クエリＡ〜クエリＤまで順にタイプが判定される。
【００５４】
次に、タイプ補正ステップＳＱ２０４に進み、クエリＤからクエリＡまで順に図７に示される手順に従って処理が実行される。
今回の場合、全てのクエリにも暗黙パラメータがないとすると（ＳＱ５０１）、全てのクエリのタイプは「ビュー」のまま保持される（ＳＱ５０３、５０４、５０５、５０７、５０８）。
次に、例えば、図９に示されるように、クエリＤは「ビュー」と判定され、クエリＣの判定段階において、クエリＣが、アクションクエリを含まず（ＳＱ４０１）、ＯＲＤＥＲ  ＢＹ句も含まないが、パラメータを有する（ＳＱ４０５）ものであって、フォームで参照（ＳＱ４０９）されていないとする。
【００５５】
また、クエリＣの子クエリであるクエリＤは「ビュー」である（ＳＱ４１０）ため、クエリＣは「関数」として判定されることとなる（ＳＱ４１１）。
続いて、クエリＢは、アクションクエリ（ＳＱ４０１）を含まず、ＯＲＤＥＲ  ＢＹ句（ＳＱ４０３）も含まず、パラメータ（ＳＱ４０５）も含まないものであるが、子クエリであるクエリＣがパラメータを含んでいるものであるため（ＳＱ４０６）、「他タイプ」として判定される（ＳＱ４０８）。
同様に、クエリＡについても、アクションクエリ（ＳＱ４０１）を含まず、ＯＲＤＥＲ  ＢＹ句（ＳＱ４０３）も含まず、パラメータ（ＳＱ４０５）も含まないものであるが、子クエリであるクエリＣがパラメータを含んでいるものであるため（ＳＱ４０６）、「他タイプ」として判定される（ＳＱ４０８）。
【００５６】
次に、タイプ補正ステップＳＱ２０４に進み、クエリＤからクエリＡへと順に図７に示される手順に従って処理が実行される。
今回の場合、全てのクエリにも暗黙パラメータがないとすると（ＳＱ５０１）、クエリＣ及びクエリＤについては、クエリのタイプはそのまま保持され（ＳＱ５０３、５０４、５０５、５０７、５０８）、クエリＡ及びクエリＢについては、子クエリであるクエリＣがパラメータを持つので、処理上は「他タイプ」に補正される（ＳＱ５０６）。
なお、クエリＡ及びクエリＢは元々「他タイプ」と判定されているため、タイプには変更はない。
【００５７】
次に、暗黙パラメータが含まれ他クエリを有する一連のクエリのタイプ決定について説明する。
図１０に示されるように、タイプ判定ステップＳＱ２０３においては、全てのクエリについて「ビュー」と判定された後、タイプ補正ステップＳＱ２０４でクエリＣが対象となっている段階を例にする。この例では、図７に示されるように、クエリＣは、暗黙パラメータを有するため（ＳＱ５０１）、タイプを「ビュー」から「他タイプ」に補正される（ＳＱ５０２）。
【００５８】
クエリＡ及びクエリＢについては暗黙パラメータはないとすると、これらのタイプは「ビュー」のまま保持される（ＳＱ５０３）。
しかし、クエリＣにパラメータが含まれていたため、クエリＡ及びクエリＢは、パラメータを持つ子クエリを有することとなったため（ＳＱ５０５）、「他タイプ」へと補正される（ＳＱ５０７）こととなる。なお、図９の例から理解されるように、「関数」又は「ストアド」と判定されたクエリよりも上階層のクエリについては、アクションクエリを含むクエリ以外については、図６において必然的に、ＳＱ４０３で「Ｙｅｓ」、ＳＱ４０６で「Ｎｏ」、ＳＱ４０９で「Ｙｅｓ」、又はＳＱ４１０で「Ｎｏ」のいずれかとなるため、すべては「他タイプ」として判定される。
従って、タイプ判定ステップＳＱ２０３によって、最初に「関数」又は「ストアド」と判定されたクエリよりも上階層であって、アクションクエリでないことが判定された段階で「他タイプ」として判定することとしてもよい。
【００５９】
［呼び出し方法決定ステップＳＱ２０５］
呼び出し方法決定ステップＳＱ２０５によって、４つクエリのタイプに変換されたＡｃｃｅｓｓのクエリのすべてについて、子クエリとして呼び出される場合の呼び出し方法が決定される。
図１１に示されるように、呼び出し方法決定ステップＳＱ２０５は、各クエリに対して、アクションクエリを含むかどうか判別し（ＳＱ９０１）、アクションクエリを含む場合はなにもしない（ＳＱ９０２）。アクションクエリを含まない場合、タイプが「ビュー」であるかどうか判別する（ＳＱ９０３）。
「ビュー」である場合、オリジナルクエリ名、即ちＡｃｃｅｓｓで用いられていたものと同一のクエリ名で当該クエリを呼び出すことする（ＳＱ９０４）。
タイプが「ビュー」でない場合であって、タイプが「関数」である場合は（ＳＱ９０５）、オリジナルクエリ名で及びパラメータの形式で呼び出す（ＳＱ９０６）。
更に、タイプが「関数」でない場合であって、パラメータがある場合（ＳＱ９０７）は、オリジナルクエリ名とは別のクエリ名及びパラメータの形式で呼び出す（ＳＱ９０８）。
また、パラメータがない場合は、オリジナルクエリ名とは別のクエリ名のみで呼び出すこととする（ＳＱ９０９）。このようにして、各クエリが子クエリとして呼び出される際の呼び出し方法（呼び出し名）が決定される。
【００６０】
［ＳＱＬ文生成ステップＳＱ２０６］
Ａｃｃｅｓｓで用いられていたＡｃｃｅｓｓ用ＳＱＬ文に基づいて、適切なＳＱＬ  Ｓｅｒｖｅｒ用ＳＱＬを生成するＳＱＬ文生成ステップＳＱ２０６について説明する。
ＳＱＬ文生成ステップＳＱ２０６は、適切なＳＱＬ  Ｓｅｒｖｅｒ用ＳＱＬを生成する際に、対象となるクエリの記述に子クエリを呼び出すための記述（呼び出し方法）が含まれていた場合、必要に応じて上述した呼び出し方法決定ステップＳＱ２０５によって決定された呼び出し方法で当該記述を置換する。
【００６１】
図１２に示されるように、ＳＱＬ文生成ステップＳＱ２０６は、対象クエリのＡｃｃｅｓｓＳＱＬをＳＱＬＳｅｒｖｅｒ用ＳＱＬに変換する（ＳＱ１００１）。
ここで、対象となるクエリが子クエリを有するか判断し（ＳＱ１００２）、子クエリを有する場合、各子クエリに対して、変換されたＳＱＬ文の置換処理を開始する（ＳＱ１００３）。
ここで、子クエリが「ビュー」であるか否かを判別し（ＳＱ１００４）、「ビュー」であった場合、置換処理は何も行わず次のクエリの判別に進む（ＳＱ１００５）。
一方、対象となっているクエリの子クエリが「ビュー」以外であった場合、生成したＳＱＬ文内の当該子クエリ名の記述を当該子クエリのタイプに応じて上述した呼び出し方法決定ステップＳＱ２０５で決定した呼び出し方法に従って置換する。（ＳＱ１００６）このようにして、全ての子クエリにいて適切な置換処理が完了すると、ＳＱＬ文生成ステップＳＱ２０６は終了する。
【００６２】
［クエリ生成ステップＳＱ２０７］
クエリ生成ステップＳＱ２０７は、上述したＳＱＬ分生成ステップＳＱ２０６よって生成したＳＱＬ文を用いて、ＳＱＬ  Ｓｅｖｅｒで使用可能なクエリを生成する。図１２に示されるように、クエリ生成ステップＳＱ２０７は、対象とするクエリがアクションクエリを含むかどうか判別する（ＳＱ１１０１）。
アクションクエリを含む場合は、オリジナルクエリ名でストアドプロシージャ（アクションクエリ）を生成する（ＳＱ１１０２）。
アクションクエリを含まない場合、タイプが「ビュー」であるかどうかを判別し（ＳＱ１１０３）、タイプが「ビュー」である場合はオリジナルクエリ名でビューを生成する（ＳＱ１１０４）。
タイプが「ビュー」でない場合、タイプが「関数」であるかどうか判別し（ＳＱ１１０５）、「関数」である場合は、オリジナルクエリ名に関数を生成する。
一方、「関数」でない場合は、オリジナルクエリ名にてストアドプロシージャを生成すると共に（ＳＱ１１０７）、別名関数名にてインラインテーブル関数を生成する（ＳＱ１１０８）
【００６３】
なお、本実施の形態によるデータベース移行システムに、入力されたクエリ生成用コマンドによりＳＱＬ  Ｓｅｒｖｅｒ用のクエリを生成するクエリ生成機能を実装させることとしてもよい。この場合、上記クエリ生成ステップは、ＳＱＬ  Ｓｅｖｅｒ用のクエリを生成するためのコマンドをクエリ生成機能に対して発行させることとし、クエリ生成機能によりクエリを生成すればよい。また、クエリ生成ステップは、パラメータが含まれている下階層のクエリがある場合に、全てのクエリに含まれているパラメータを宣言した上でクエリを生成する形式としてもよい。
【００６４】
上述した図３に示すデータ変換装置１は、例えば、図１４に示すハードウェアによって実現される。
図１４に示すように、データ変換装置１は、例えば、インタフェース２１、ディスプレイ２２、操作部２３、メモリ２４および処理回路２５を有し、これらがバス２０を介して接続されている。
【００６５】
インタフェース２１は、例えば、他のコンピュータと通信を行うために用いられる。
ディスプレイ２２は、処理回路２５が実行するプログラムＰＲＧが提供する様々な画面を表示する。
【００６６】
操作部２３は、キーボードやマウス等の操作手段である。
メモリ２４は、処理回路２５が実行するプログラムＰＲＧ、処理回路２５の処理に用いられるデータを一時的に記憶する。
処理回路２５は、プログラムＰＲＧを実行して、データ変換装置１の処理を統括的に制御する。処理回路２５は、本実施形態のフローチャート等で記載した各処理において、処理過程でのデータを逐次メモリ２４に書き込み、それを読み出す。
本実施形態で示されるデータ変換装置１の処理は、プログラムＰＲＧに記述されている。
【００６７】
以下、データ変換装置１を用いて、具体的なＡＣＣＥＳＳのデータベースシステムのコードを、ＳＱＬ  ＳＥＲＶＥＲのデータベースシステムのコードに変換する処理を、上述したフローチャートの各ステップと関連付けながら説明する。
図１５は、変換対象のＡＣＣＥＳＳのデータベースシステムのコードの概念図である。
図１６〜図２０は、図１５に示す各クエリの詳細を説明するための図である。
クエリ名の末尾の２桁は、階層を示す。
図２１〜図２５は、図１５に示すコードに対して、図６に示すタイプ判定ステップ２０３の各処理を行った場合を説明するための図である。
【００６８】
図２６〜図３０は、図６の処理の後に、各コードに対して図７に示すタイプ補正ステップ２０４のＳＱ５０１〜ＳＱ５０４の処理を行った場合を説明するための図である。
図３１〜図３５は、各コードに対して図７に示すタイプ補正ステップ２０４のＳＱ５０５〜ＳＱ５０８の処理を行った場合を説明するための図である。
【００６９】
図３６〜図４０は、各コードに対して図１１に示す呼び出し方法決定ステップ２０５の処理を行った場合を説明するための図である。
図４１〜図５０は、各コードに対して図１２に示すＳＱＬ文生成ステップ２０６の処理を行った場合を説明するための図である。
図５１〜図６１は、各コードに対して図１３に示すクエリ生成ステップ２０７の処理を行った場合を説明するための図である。
【００７０】
図６２は、上述した図２１〜図６１の処理を経て、データ変換装置１によって生成された変換後のＳＱＬ  ＳＥＲＶＥＲのコードである。
【００７１】
以上説明したように、本実施形態によれば、移行先のデータベースシステムが機能することを確保しつつ移行時におけるクエリタイプの判断処理を簡略化して処理コストをできるだけ抑えることができる。
上述したように、ストアドプロシージャあるいは他タイプと判定されたクエリについては、親クエリが実際あるかどうかに係わらず、親クエリがある場合でも問題ないように、全ての場合において、同じ機能のストアドプロシージャタイプの変換後クエリの他に、関数タイプの変換後クエリを生成する。これにより、無駄なクエリは多くなるが、変換後のアプリケーションの拡張を想定した際、関数を手作業で生成するという非常にコストのかかる作業を大幅に軽減できる。
実際にツール開発の現場では、本実施形態のデータ変換装置を用いたシステムにより、大幅な作業軽減が図れている。アップサイジングという総合的なアプリケーション変換(データの移行だけではなく機能性の移行)を行う際、どうしてもクエリの変換だけでは実現できない機能がある場合がある。その際には、既存のクエリを使用して新たなクエリを生成するが、ここでネスト可能な関数が生成済みかどうかで大きく作業コストを低減できる。
【００７２】
本発明は上述した実施形態には限定されない。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
例えば上述した実施形態では、移行元の関係データベースシステムがマイロソフト社のＡｃｃｅｓｓであり、移行先のデータベースシステムが同じくマイクロソフト社のＳＱＬ  Ｓｅｒｖｅｒである場合を例にして、本実施形態のデータ変換装置を説明した。
本発明の上述した請求項１等の記載した機能を持つものあれば移行先および移行元のデータベースシステムは特に限定されない。
【符号の説明】
【００７３】
１…データ変換装置
１１…ネスト関係特定部
１２…タイプ決定部
１３…呼び出し方法決定部
１４…ＳＱＬ文生成部
１５…クエリ生成部
【図１】
2014063204.tif 000004
【図２】
2014063204.tif 000005
【図３】
2014063204.tif 000006
【図４】
2014063204.tif 000007
【図５】
2014063204.tif 000008
【図６】
2014063204.tif 000009
【図７】
2014063204.tif 000010
【図８】
2014063204.tif 000011
【図９】
2014063204.tif 000012
【図１０】
2014063204.tif 000013
【図１１】
2014063204.tif 000014
【図１２】
2014063204.tif 000015
【図１３】
2014063204.tif 000016
【図１４】
2014063204.tif 000017
【図１５】
2014063204.tif 000018
【図１６】
2014063204.tif 000019
【図１７】
2014063204.tif 000020
【図１８】
2014063204.tif 000021
【図１９】
2014063204.tif 000022
【図２０】
2014063204.tif 000023
【図２１】
2014063204.tif 000024
【図２２】
2014063204.tif 000025
【図２３】
2014063204.tif 000026
【図２４】
2014063204.tif 000027
【図２５】
2014063204.tif 000028
【図２６】
2014063204.tif 000029
【図２７】
2014063204.tif 000030
【図２８】
2014063204.tif 000031
【図２９】
2014063204.tif 000032
【図３０】
2014063204.tif 000033
【図３１】
2014063204.tif 000034
【図３２】
2014063204.tif 000035
【図３３】
2014063204.tif 000036
【図３４】
2014063204.tif 000037
【図３５】
2014063204.tif 000038
【図３６】
2014063204.tif 000039
【図３７】
2014063204.tif 000040
【図３８】
2014063204.tif 000041
【図３９】
2014063204.tif 000042
【図４０】
2014063204.tif 000043
【図４１】
2014063204.tif 000044
【図４２】
2014063204.tif 000045
【図４３】
2014063204.tif 000046
【図４４】
2014063204.tif 000047
【図４５】
2014063204.tif 000048
【図４６】
2014063204.tif 000049
【図４７】
2014063204.tif 000050
【図４８】
2014063204.tif 000051
【図４９】
2014063204.tif 000052
【図５０】
2014063204.tif 000053
【図５１】
2014063204.tif 000054
【図５２】
2014063204.tif 000055
【図５３】
2014063204.tif 000056
【図５４】
2014063204.tif 000057
【図５５】
2014063204.tif 000058
【図５６】
2014063204.tif 000059
【図５７】
2014063204.tif 000060
【図５８】
2014063204.tif 000061
【図５９】
2014063204.tif 000062
【図６０】
2014063204.tif 000063
【図６１】
2014063204.tif 000064
【図６２】
2014063204.tif 000065
【手続補正書】
【提出日】平成22年1月12日(2010.1.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換方法であって、
前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
第２クエリのタイプとして、
パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成ステップと
をコンピュータが実行し、
前記タイプ決定ステップは、
前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１クエリを他タイプと判定し、
前記クエリ生成ステップは、
前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する
データ変換方法。
【請求項２】
前記クエリ生成ステップは、
前記クエリ生成ステップで生成された前記ストアドプロシージャタイプの第２クエリおよび前記関数タイプの第２クエリの双方が、前記対象クエリの子クエリを呼び出し、
当該ストアドプロシージャタイプの第２クエリが、前記対象クエリの子クエリに対応した前記第２クエリに対しての追加・削除・更新処理を記述し、
当該関数タイプの第２クエリが、前記対象クエリの親クエリに対応した前記第２クエリ内で子クエリとして記述されるようにクエリ生成を行う
請求項１にデータ変換方法。
【請求項３】
前記タイプ決定ステップは、
前記第１クエリがアクションクエリである場合に、当該第１クエリに対応する第２クエリをストアドプロシージャタイプと判定し、
前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリはビュータイプであると判定し、
前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されてなく、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリは関数タイプであると判定し、
前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されており、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリはストアドプロシージャタイプであると判定する
請求項２に記載のデータ変換方法。
【請求項４】
前記関数は、テーブルを返り値として必ず返し、
前記ストアドプロシージャは、戻り値の有無および型が不確定である
請求項３に記載のデータ変換方法。
【請求項５】
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々が子クエリとして呼び出される場合の呼び出し方法に関する記述を当該第１クエリに対応する前記第２クエリのタイプに基づいて決定する呼び出し方法決定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリに含まれる機能記述に基づいて前記第２クエリにて使用可能な機能記述を生成した上で、前記第１クエリに含まれる前記機能記述に子クエリの呼び出しに関する記述が含まれていた場合には必要に応じて当該子クエリとして呼び出されるべき前記第１クエリに対応するものとして前記呼び出し方法決定ステップにおいて決定された呼び出し方法に関する記述に置き換える、機能記述生成ステップと
を更に備えており、
前記クエリ生成ステップは、前記機能記述生成ステップにおいて生成した機能記述を用いて前記第２クエリを生成する
請求項３または請求項４に記載のデータ変換方法。
【請求項６】
前記タイプ決定ステップで前記他タイプと判定された第１クエリのうち、パラメータを持つ子クエリを有する第１クエリのタイプを前記他タイプと補正するタイプ補正ステップをさらに有する
請求項３〜４のいずれに記載のデータ変換方法。
【請求項７】
前記第２データベースシステムには、入力されたクエリ生成コマンドの内容に応じて前記第２クエリを生成するクエリ生成機能が実装されており、
前記クエリ生成ステップは、生成すべき前記第２クエリを示す前記クエリ生成コマンドを発行する
請求項３〜５のいずれかに記載のデータ変換方法。
【請求項８】
前記クエリ生成ステップは、前記第１クエリの夫々に対応する前記第２クエリの生成用の前記クエリ生成コマンドを発行するにあたり、処理対象となっている前記第１クエリに対して下階層のクエリが存在している場合であって当該下階層のクエリにパラメータが含まれている場合には、前記下階層のクエリに含まれているパラメータも当該処理対象となっている前記第１クエリ用のパラメータとして列挙する
請求項３〜６のいずれかに記載のデータ変換方法。
【請求項９】
複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換装置であって、
前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
第２クエリのタイプとして、
パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定手段と、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定手段と、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成手段と
を有し、
前記タイプ決定手段は、
前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１クエリを他タイプと判定し、
前記クエリ生成手段は、
前記タイプ決定手段において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する
データベース移行装置。
【請求項１０】
複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するコンピュータが実行するプログラムであって、
前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
前記第２クエリのタイプとして、
パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成ステップと
を前記コンピュータに実行させ、
前記タイプ決定ステップは、
前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１クエリを他タイプと判定し、
前記クエリ生成ステップは、
前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する
プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明のデータ変換方法は、複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換方法であって、前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可している。
また、第２クエリのタイプとして、パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成ステップとをコンピュータが実行し、前記タイプ決定ステップは、前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１クエリを他タイプと判定し、前記クエリ生成ステップは、前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
好適には、本発明のデータ変換方法の前記クエリ生成ステップは、前記クエリ生成ステップで生成された前記ストアドプロシージャタイプの第２クエリおよび前記関数タイプの第２クエリの双方が、前記対象クエリの子クエリを呼び出し、当該ストアドプロシージャタイプの第２クエリが、前記対象クエリの子クエリに対応した前記第２クエリに対しての追加・削除・更新処理を記述し、当該関数タイプの第２クエリが、前記対象クエリの親クエリに対応した前記第２クエリ内で子クエリとして記述されるようにクエリ生成を行う。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
好適には、本発明のデータ変換方法の前記タイプ決定ステップは、前記第１クエリがアクションクエリである場合に、当該第１クエリに対応する第２クエリをストアドプロシージャタイプと判定し、前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリはビュータイプであると判定し、前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されてなく、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリは関数タイプであると判定し、
前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されており、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリはストアドプロシージャタイプであると判定する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
好適には、本発明のデータ変換方法では、前記関数は、テーブルを返り値として必ず返し、前記ストアドプロシージャは、戻り値の有無および型が不確定である。
好適には、本発明のデータ変換方法は、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々が子クエリとして呼び出される場合の呼び出し方法に関する記述を当該第１クエリに対応する前記第２クエリのタイプに基づいて決定する呼び出し方法決定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリに含まれる機能記述に基づいて前記第２クエリにて使用可能な機能記述を生成した上で、前記第１クエリに含まれる前記機能記述に子クエリの呼び出しに関する記述が含まれていた場合には必要に応じて当該子クエリとして呼び出されるべき前記第１クエリに対応するものとして前記呼び出し方法決定ステップにおいて決定された呼び出し方法に関する記述に置き換える、機能記述生成ステップとを更に備えており、前記クエリ生成ステップは、前記機能記述生成ステップにおいて生成した機能記述を用いて前記第２クエリを生成する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
好適には、本発明のデータ変換方法は、前記タイプ決定ステップで前記他タイプと判定された第１クエリのうち、パラメータを持つ子クエリを有する第１クエリのタイプを前記他タイプと補正するタイプ補正ステップをさらに有する。
好適には、本発明のデータ変換方法の前記第２データベースシステムには、入力されたクエリ生成コマンドの内容に応じて前記第２クエリを生成するクエリ生成機能が実装されており、前記クエリ生成ステップは、生成すべき前記第２クエリを示す前記クエリ生成コマンドを発行する。
好適には、本発明のデータ変換方法の前記クエリ生成ステップは、前記第１クエリの夫々に対応する前記第２クエリの生成用の前記クエリ生成コマンドを発行するにあたり、処理対象となっている前記第１クエリに対して下階層のクエリが存在している場合であって当該下階層のクエリにパラメータが含まれている場合には、前記下階層のクエリに含まれているパラメータも当該処理対象となっている前記第１クエリ用のパラメータとして列挙する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本発明のデータ変換装置は、複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換装置であって、前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、第２クエリのタイプとして、パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定手段と、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定手段と、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成手段とを有し、前記タイプ決定手段は、前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１クエリを他タイプと判定し、前記クエリ生成手段は、前記タイプ決定手段において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明のプログラムは、複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するコンピュータが実行するプログラムであって、前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、前記第２クエリのタイプとして、パラメータを禁止し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、前記複数の第１クエリにおけるネスト関係を特定するネスト関係特定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成ステップとを前記コンピュータに実行させ、前記タイプ決定ステップは、前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは他タイプである場合に、当該第１クエリを他タイプと判定し、前記クエリ生成ステップは、前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第１クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する。
【手続補正書】
【提出日】平成22年4月21日(2010.4.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換方法であって、
前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
第２クエリのタイプとして、
パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
コンピュータのメモリから前記第１のデータベースシステムの複数の前記第１のクエリをメモリから読み出す読み出しステップと、
前記読み出した複数の第１クエリのネスト構造に基づいて、前記複数の第１のクエリの親子関係を特定するネスト関係特定ステップと、
前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定ステップと、
前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成ステップと
を前記コンピュータの処理回路が実行し、
前記タイプ決定ステップは、
前記移行の処理過程でのみ使用される前記関数タイプ、ストアドプロシージャタイプ以外のタイプである予め規定された他タイプを用いて、
前記ネスト構造の親子関係を基に前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは前記他タイプである場合に、当該第１クエリに対応した前記第２のクリエを前記他タイプと判定する処理と、
前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する前記第２クエリはビュータイプであると判定する処理と
を前記処理回路が実行し、
前記クエリ生成ステップは、
前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第２クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する処理を前記処理回路が実行する処理を前記処理回路が実行する
データ変換方法。
【請求項２】
前記クエリ生成ステップは、
前記クエリ生成ステップで生成された前記ストアドプロシージャタイプの第２クエリおよび前記関数タイプの第２クエリの双方が、前記対象クエリの子クエリを呼び出し、
当該ストアドプロシージャタイプの第２クエリが、前記対象クエリの子クエリに対応した前記第２クエリに対しての追加・削除・更新処理を記述し、
当該関数タイプの第２クエリが、前記対象クエリの親クエリに対応した前記第２クエリ内で子クエリとして記述されるようにクエリ生成を行う
処理を前記処理回路が実行する請求項１にデータ変換方法。
【請求項３】
前記タイプ決定ステップは、
前記第１クエリがアクションクエリである場合に、当該第１クエリに対応する第２クエリをストアドプロシージャタイプと判定し、
前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されてなく、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリは関数タイプであると判定し、
前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されており、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリはストアドプロシージャタイプであると判定する
処理を前記処理回路が実行する請求項２に記載のデータ変換方法。
【請求項４】
前記関数は、テーブルを返り値として必ず返し、
前記ストアドプロシージャは、戻り値の有無および型が不確定である
請求項３に記載のデータ変換方法。
【請求項５】
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々が子クエリとして呼び出される場合の呼び出し方法に関する記述を当該第１クエリに対応する前記第２クエリのタイプに基づいて決定する処理を前記処理回路が実行する呼び出し方法決定ステップと、
前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリに含まれる機能記述に基づいて前記第２クエリにて使用可能な機能記述を生成した上で、前記第１クエリに含まれる前記機能記述に子クエリの呼び出しに関する記述が含まれていた場合には必要に応じて当該子クエリとして呼び出されるべき前記第１クエリに対応するものとして前記呼び出し方法決定ステップにおいて決定された呼び出し方法に関する記述に置き換える処理を前記処理回路が実行する機能記述生成ステップと
を更に備えており、
前記クエリ生成ステップは、前記機能記述生成ステップにおいて生成した機能記述を用いて前記第２クエリを生成する処理を前記処理回路が実行する
請求項３または請求項４に記載のデータ変換方法。
【請求項６】
前記タイプ決定ステップで前記他タイプと判定された第１クエリのうち、パラメータを持つ子クエリを有する第１クエリのタイプを前記他タイプと補正する処理を前記処理回路が実行するタイプ補正ステップをさらに有する
請求項３〜４のいずれに記載のデータ変換方法。
【請求項７】
前記第２データベースシステムには、入力されたクエリ生成コマンドの内容に応じて前記第２クエリを生成するクエリ生成機能が実装されており、
前記クエリ生成ステップは、生成すべき前記第２クエリを示す前記クエリ生成コマンドを発行する処理を前記処理回路が実行する請求項３〜５のいずれかに記載のデータ変換方法。
【請求項８】
前記クエリ生成ステップは、前記第１クエリの夫々に対応する前記第２クエリの生成用の前記クエリ生成コマンドを発行するにあたり、処理対象となっている前記第１クエリに対して下階層のクエリが存在している場合であって当該下階層のクエリにパラメータが含まれている場合には、前記下階層のクエリに含まれているパラメータも当該処理対象となっている前記第１クエリ用のパラメータとして列挙する処理を前記処理回路が実行する請求項３〜６のいずれかに記載のデータ変換方法。
【請求項９】
複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換装置であって、
前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
第２クエリのタイプとして、
パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
コンピュータのメモリから前記第１のデータベースシステムの複数の前記第１のクエリをメモリから読み出す読み出し手段と、
前記読み出した複数の第１クエリのネスト構造に基づいて、前記複数の第１のクエリの親子関係を特定するネスト関係特定手段と、
前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定手段と、
前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成手段と
を有し、
前記タイプ決定手段は、
前記移行の処理過程でのみ使用される前記関数タイプ、ストアドプロシージャタイプ以外のタイプである予め規定された他タイプを用いて、
前記ネスト構造の親子関係を基に前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは前記他タイプである場合に、当該第１クエリに対応した前記第２のクリエを前記他タイプと判定する処理と、
前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する前記第２クエリはビュータイプであると判定する処理と
を実行し、
前記クエリ生成手段は、
前記タイプ決定手段において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第２クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する処理を実行する
データ変換装置。
【請求項１０】
複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するコンピュータが実行するプログラムであって、
前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、
第２クエリのタイプとして、
パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、
パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、
パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、
コンピュータのメモリから前記第１のデータベースシステムの複数の前記第１のクエリをメモリから読み出す読み出し手順と、
前記読み出した複数の第１クエリのネスト構造に基づいて、前記複数の第１のクエリの親子関係を特定するネスト関係特定手順と、
前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定手順と、
前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成手順と
を前記コンピュータに実行させ、
前記タイプ決定手順は、
前記移行の処理過程でのみ使用される前記関数タイプ、ストアドプロシージャタイプ以外のタイプである予め規定された他タイプを用いて、
前記ネスト構造の親子関係を基に前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは前記他タイプである場合に、当該第１クエリに対応した前記第２のクリエを前記他タイプと判定する処理と、
前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する前記第２クエリはビュータイプであると判定する処理と
を前記コンピュータに実行させ、
前記クエリ生成手順は、
前記タイプ決定手順において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第２クエリである対象クエリについては、
当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、
当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する処理を
を前記コンピュータに実行させる
プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明のデータ変換方法は、複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換方法である。
前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、第２クエリのタイプとして、パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている。
本発明は、コンピュータのメモリから前記第１のデータベースシステムの複数の前記第１のクエリをメモリから読み出す読み出しステップと、前記読み出した複数の第１クエリのネスト構造に基づいて、前記複数の第１のクエリの親子関係を特定するネスト関係特定ステップと、前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定ステップと、前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成ステップとを前記コンピュータの処理回路が実行し、前記タイプ決定ステップは、前記移行の処理過程でのみ使用される前記関数タイプ、ストアドプロシージャタイプ以外のタイプである予め規定された他タイプを用いて、前記ネスト構造の親子関係を基に前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは前記他タイプである場合に、当該第１クエリに対応した前記第２のクリエを前記他タイプと判定する処理と、前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する前記第２クエリはビュータイプであると判定する処理とを前記処理回路が実行し、前記クエリ生成ステップは、前記タイプ決定ステップにおいて前記他タイプあるいは前記ストアドプロシージャタイプと判定された第２クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する処理を前記処理回路が実行する処理を前記処理回路が実行する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
好適には、本発明のデータ変換方法の前記クエリ生成ステップは、前記クエリ生成ステップで生成された前記ストアドプロシージャタイプの第２クエリおよび前記関数タイプの第２クエリの双方が、前記対象クエリの子クエリを呼び出し、当該ストアドプロシージャタイプの第２クエリが、前記対象クエリの子クエリに対応した前記第２クエリに対しての追加・削除・更新処理を記述し、当該関数タイプの第２クエリが、前記対象クエリの親クエリに対応した前記第２クエリ内で子クエリとして記述されるようにクエリ生成を行う処理を前記処理回路が実行する。

【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
好適には、本発明のデータ変換方法の前記タイプ決定ステップは、前記第１クエリがアクションクエリである場合に、当該第１クエリに対応する第２クエリをストアドプロシージャタイプと判定し、前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されてなく、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリは関数タイプであると判定し、前記第１クエリがアクションクエリではなく、パラメータを含み、フォームから参照されており、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する第２クエリはストアドプロシージャタイプであると判定する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
好適には、本発明のデータ変換方法では、前記関数は、テーブルを返り値として必ず返し、前記ストアドプロシージャは、戻り値の有無および型が不確定である。
好適には、本発明のデータ変換方法は、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリの夫々が子クエリとして呼び出される場合の呼び出し方法に関する記述を当該第１クエリに対応する前記第２クエリのタイプに基づいて決定する処理を前記処理回路が実行する呼び出し方法決定ステップと、前記ネスト関係に基づいて最下階層の前記第１クエリから順番に最上階層の前記第１クエリまで、前記第１クエリに含まれる機能記述に基づいて前記第２クエリにて使用可能な機能記述を生成した上で、前記第１クエリに含まれる前記機能記述に子クエリの呼び出しに関する記述が含まれていた場合には必要に応じて当該子クエリとして呼び出されるべき前記第１クエリに対応するものとして前記呼び出し方法決定ステップにおいて決定された呼び出し方法に関する記述に置き換える処理を前記処理回路が実行する機能記述生成ステップとを更に備えており、前記クエリ生成ステップは、前記機能記述生成ステップにおいて生成した機能記述を用いて前記第２クエリを生成する処理を前記処理回路が実行する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
好適には、本発明のデータ変換方法は、前記タイプ決定ステップで前記他タイプと判定された第１クエリのうち、パラメータを持つ子クエリを有する第１クエリのタイプを前記他タイプと補正する処理を前記処理回路が実行するタイプ補正ステップをさらに有する。
好適には、本発明のデータ変換方法は、前記第２データベースシステムには、入力されたクエリ生成コマンドの内容に応じて前記第２クエリを生成するクエリ生成機能が実装されており、前記クエリ生成ステップは、生成すべき前記第２クエリを示す前記クエリ生成コマンドを発行する処理を前記処理回路が実行する。
好適には、本発明のデータ変換方法の前記クエリ生成ステップは、前記第１クエリの夫々に対応する前記第２クエリの生成用の前記クエリ生成コマンドを発行するにあたり、処理対象となっている前記第１クエリに対して下階層のクエリが存在している場合であって当該下階層のクエリにパラメータが含まれている場合には、前記下階層のクエリに含まれているパラメータも当該処理対象となっている前記第１クエリ用のパラメータとして列挙する処理を前記処理回路が実行する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本発明のデータ変換装置は、複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するデータ変換装置であって、前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、第２クエリのタイプとして、パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、コンピュータのメモリから前記第１のデータベースシステムの複数の前記第１のクエリをメモリから読み出す読み出し手段と、前記読み出した複数の第１クエリのネスト構造に基づいて、前記複数の第１のクエリの親子関係を特定するネスト関係特定手段と、前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定手段と、前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成手段とを有し、前記タイプ決定手段は、前記移行の処理過程でのみ使用される前記関数タイプ、ストアドプロシージャタイプ以外のタイプである予め規定された他タイプを用いて、前記ネスト構造の親子関係を基に前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは前記他タイプである場合に、当該第１クエリに対応した前記第２のクリエを前記他タイプと判定する処理と、前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する前記第２クエリはビュータイプであると判定する処理とを実行し、前記クエリ生成手段は、前記タイプ決定手段において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第２クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する処理を実行する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明のプログラムは、  複数の第１クエリを有する第１データベースシステムを複数の第２クエリを有する第２データベースに移行するコンピュータが実行するプログラムであって、前記第１クエリは、パラメータ、データベースの値の追加・削除・更新処理、他のクエリの子クエリとなることの全てを許可しており、第２クエリのタイプとして、パラメータを禁止し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを許容するビュータイプと、パラメータを許可し、前記追加・削除・更新処理を禁止し、他のクエリの子クエリとなることを許容する関数タイプと、パラメータを許可し、前記追加・削除・更新処理を許可し、他のクエリの子クエリとなることを禁止するストアドプロシージャタイプが規定されている場合に、コンピュータのメモリから前記第１のデータベースシステムの複数の前記第１のクエリをメモリから読み出す読み出し手順と、前記読み出した複数の第１クエリのネスト構造に基づいて、前記複数の第１のクエリの親子関係を特定するネスト関係特定手順と、前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記第１クエリの夫々に対応する前記第２クエリのタイプを決定するタイプ決定手順と、前記親子関係に基づいて子クリエから親クエリに向けて、最下階層の前記第１クエリから最上階層の前記第１クエリまで順番に、前記決定されたタイプに従って前記第１クエリに対応する前記第２クエリを生成するクエリ生成手順とを前記コンピュータに実行させ、前記タイプ決定手順は、前記移行の処理過程でのみ使用される前記関数タイプ、ストアドプロシージャタイプ以外のタイプである予め規定された他タイプを用いて、前記ネスト構造の親子関係を基に前記第１クエリの子クエリが、前記関数タイプ、ストアドプロシージャタイプあるいは前記他タイプである場合に、当該第１クエリに対応した前記第２のクリエを前記他タイプと判定する処理と、前記第１クエリがアクションクエリではなく、パラメータを含まず、且つ、子クエリが無いまたは子クエリがビュータイプであると判定された場合に、当該第１クエリに対応する前記第２クエリはビュータイプであると判定する処理とを前記コンピュータに実行させ、前記クエリ生成手順は、前記タイプ決定手順において前記他タイプあるいは前記ストアドプロシージャタイプと判定された第２クエリである対象クエリについては、当該対象クエリの機能記述と同等の機能記述を含むストアドプロシージャタイプの前記第２クエリを生成すると共に、当該対象クエリの機能記述と同等の機能記述を含む関数タイプの前記第２クエリを生成する処理を
を前記コンピュータに実行させる。