(57)【要約】【課題】  リレーショナルデータベースのテーブル定義を元にして製作される製品間の不整合をなくし、ソフトウェア開発過程における人手の介入を減らして、高品質のソフトウェアを短期間で開発する。【解決手段】  定義支援処理部３１によるテーブル定義を情報源として、製品であるテーブル生成分４，データベース操作プログラム５，メンテナンスツール６を、プログラム生成処理部３５によって自動的に生成する。テーブル定義の精度を高めるために、ガイダンスによりテーブル定義を行い、ＳＱＬ文で使用する検索条件を可変にして、プログラム数を必要数に低減する。【選択図】図１
2006164090.tif 000002
【特許請求の範囲】
【請求項１】
画面を用いて対話的にテーブル定義を入力するための定義支援処理部と、前記テーブル定義を構成するカラム情報を保持するカラム辞書データベースと、該カラム辞書データベースに記録されているカラム情報を解析する定義解析処理部と、該定義解析処理部による定義解析結果を格納するメモリ装置と、該メモリ装置に格納されている定義解析結果を元にプログラムを生成するプログラム生成処理部を備えたデータベース操作プログラムの自動生成装置。
【請求項２】
前記画面に前記カラム辞書データベースに登録されているカラム情報をガイダンス表示してテーブル定義の入力を行う請求項１に記載のデータベース操作プログラムの自動生成装置。
【請求項３】
前記プログラム生成処理部により、テーブル作成文，データベース操作プログラム，メンテナンスツールの各プログラムが生成されるものであって、前記テーブル作成文とメンテナンスツールによりリレーショナルデータベースが構築される請求項１又は２に記載のデータベース操作プログラムの自動生成装置。
【請求項４】
前記データベース操作プログラムを呼出す高級言語で作成するアプリケーションプログラムからの要求に応じたカラム毎のＳＱＬ文を出力する請求項３に記載のデータベース操作プログラムの自動生成装置。
【請求項５】
前記データベース操作プログラムを呼出す高級言語で作成するアプリケーションプログラムからのパラメータ指定により動的に検索条件を変更する請求項３に記載のデータベース操作プログラムの自動生成装置。
【請求項６】
前記画面に表示されるテーブル定義の操作欄に追加，更新，削除のいずれかを入力し、追加の場合は新しいレコードを、変更の場合は変更するカラムの値を編集し、レコード更新を行うことによりテーブル定義の追加，更新，削除を行う請求項１に記載のデータベース操作プログラムの自動生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーショナルデータベースを有するシステムにおいて、ＳＱＬ文を使用してデータを操作するアプリケーションプログラムや、データベース管理者によるメンテナンス操作が可能であるプログラムを自動生成するデータベース操作プログラムの自動生成装置に関する。
【背景技術】
【０００２】
〔特許文献１〕には、文生成部により検索条件，関係演算子，取り出し順番の入力に対応して、データベースのテーブル名と当該テーブルの項目の対に一意の番号を付して予め登録したデータベース情報に、予め登録した一意の番号の間のジョイン関係を抽出してジョインのストリーム毎に設けたジョインストリームを生成しておき、データベース情報およびジョインストリームを参照してデータベースを検索する文を生成する文生成方法が記載されている。
【０００３】
又、リレーショナルデータベースを有するシステムは、問い合わせ言語（ＳＱＬ）を書かれたＳＱＬ文を使用してデータを操作するアプリケーションプログラムや、データベース管理者によるメンテナンス作業によって、運用されている。これらのアプリケーションプログラムやメンテナンスツールは、個別の製品として開発されているものであった。
【０００４】
【特許文献１】特開平５−２６１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
リレーショナルデータベースのテーブル定義、テーブル定義を元にしたテーブル作成文，データベース操作プログラムや、メンテナンスツールは、複数の開発者によって、異なる時期に製作されるため、不整合が発生し易いという問題がある。
【０００６】
リレーショナルデータベースへの検索条件は、システムの稼動状況によって時々刻々と変化することがあり、その異なる検索条件ごとのＳＱＬ文を持つプログラムにすると、その数が膨大となり、製作や管理、その後の保守に膨大な時間と労力を要してしまうという問題がある。
【０００７】
本発明の目的は、リレーショナルデータベースのテーブル定義を元にして製作される製品間の不整合をなくして高品質なソストウェアを作成するデータベース操作プログラムの自動生成装置を提供することにある。
【０００８】
本発明の他の目的は、ソフトウェア開発過程における人手の介入を減らし、ソフトウェアを短期間で開発できるデータベース操作プログラムの自動生成装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明のデータベース操作プログラムの自動生成装置は、テーブル定義を元に製作されるテーブル作成文，データベース操作プログラム，メンテナンスツールを、テーブル定義により自動的に生成することによって、データベースのテーブル定義を元にして製作される製品間の整合性を保証するものである。
【００１０】
また、リレーショナルデータベースのテーブル定義の際、カラム辞書データベースを使用して、カラム辞書データベースに登録されている該当候補のガイダンスによりテーブル定義を行い、登録済みのカラム情報と比較しながら、テーブル定義作業を実施することにより、リレーショナルデータベースを複数のテーブルで構成したとき、それらテーブル定義間の整合性を保証し、その精度を高めるものである。
【００１１】
また、データベース操作プログラム内のＳＱＬ文で使用する検索条件を、高級言語で作成するアプリケーションプログラムからのパラメータ指定によって可変にしてＳＱＬ文のプログラム数を必要数に低減するものである。
【発明の効果】
【００１２】
本発明によれば、テーブル定義書によりそれに係わるソフトウェアが自動的に生成されるので、整合性の取れた、高品質で保守性の良いプログラムが得られる。
【発明を実施するための最良の形態】
【００１３】
本発明の一実施例を図１から図１６により説明する。図１は、本発明の一実施例であるデータベース操作プログラム自動生成システムの構成図である。
【００１４】
入力装置１は、ネットワーク２を介してデータベース操作プログラム自動生成装置３の定義支援処理部３１に接続されている。入力装置１では、テーブル定義が入力される。データベース操作プログラム自動生成装置３は、画面を用いて対話的にテーブル定義を入力するための定義支援処理部３１，テーブル定義を構成するカラム情報，カラムごとの詳細情報を保持するカラム辞書データベース３２，カラム辞書データベース３２に保持されているテーブルを構成するカラム情報を解析する定義解析処理部３３，定義解析処理部３３による定義解析結果を格納するメモリ装置３４，メモリ装置３４に格納されている定義解析結果を元にプログラムを生成するプログラム生成処理部３５で構成されている。
【００１５】
プログラム生成処理部３５によって生成されたテーブル作成文４，データベース操作プログラム５，メンテナンスツール６がそれぞれ保存される。システム７は、リレーショナルデータベース７１を有するシステム及びアプリケーションプログラム７２を有し、テーブル作成分４及びメンテナンスツール６はリレーショナルデータベース７１に接続され、データベース操作プログラム５はアプリケーションプログラム７２に接続されている。アプリケーションプログラム７２によりリレーショナルデータベース７１を操作する。
【００１６】
生成されるプログラムは、個別のファイルとして出力され、ハードディスク装置やＣＤ−ＲＯＭ等の外部記録媒体に記録される。
【００１７】
このように構成されたデータベース操作プログラム自動生成システムでは、定義支援処理部３１が提供する画面を使って、入力装置１からテーブル定義を入力する。テーブル定義の入力が完了すると、定義解析処理部３３によってテーブル定義が解析され、そのテーブル定義の解析結果を受けて、プログラム生成処理部３５が、４〜６個のプログラムを自動的に生成する。
【００１８】
生成されたプログラムは、テーブル作成分４，データベース操作プログラム５，メンテナンスツール６に分けて保存される。テーブル作成文４は、リレーショナルデータベース７１にテーブルを作成し、データベース操作プログラム５は、アプリケーションプログラム７２に組み込まれ、メンテナンスツール６は、システム運用の中でデータベース管理者によって使用される。
【００１９】
なお、システム７の有するリレーショナルデータベース７１，アプリケーションプログラム７２は、生成されるプログラムが動作する場所である。
【００２０】
図２は、定義支援処理部３１によって作成されるテーブル定義画面を示す図である。
【００２１】
論理テーブル名称８１には定義するテーブルの日本語名称を、物理テーブル名称８２には定義するテーブルをプログラムが解釈できる名称を入力する。「Ｎｏ」８３，論理カラム名称８４，物理カラム名称８５，データ型８６，サイズ８７，配列８８，主キー８９，「ＮＯＴＮＵＬＬ」９０，インデックス９１は、テーブルを構成するカラムの詳細情報を示し、必要数分を縦方向に入力する。
【００２２】
「Ｎｏ」８３は定義数に応じて定義支援処理部３１が自動付与する番号，論理カラム名称８４は定義するカラムの日本語名称，物理カラム名称８５は定義するカラムのプログラムが解釈できる名称である。データ型８６，サイズ８７，配列８８は、カラムのデータ上の性質や大きさを規定する情報である。主キー８９はテーブル内に登録されるレコードを一意に識別するために使用する情報で、主キーとなる場合に“○”を指定する。
「ＮＯＴＮＵＬＬ」９０はデータの存在を必須とする条件で、対象となる場合に“○”を指定する。ここで、「ＮＵＬＬ」はデータが無いことを表す値で、「ＮＯＴＮＵＬＬ」は「ＮＵＬＬ」でないことを意味する。インデックス９１は検索を高速化するために使用するデータベース特有の項目で、インデックスとなる場合にその識別名称を入力する。
【００２３】
ここで、論理カラム名称８４を入力する時に、入力された文字列で始まる論理カラム名称がカラム辞書データベース３２に登録されている場合、登録されている論理カラム名称を入力候補として画面にリスト表示９１を行い、リスト表示９１の中から選択してそのカラムに付随する情報と共に入力欄に値が入力できるようになっている。リスト表示９１の時、リストに表示されているカラムの付随情報が参照できるようになっている。
【００２４】
このようにしているので、リレーショナルデータベースに構築するテーブルを定義する際、類似項目の複数登録や名称間違いを除去することができる。
【００２５】
図３は、テーブル定義画面において、論理カラム名称の候補リストを表示するための処理フローを示す。
【００２６】
ステップ３１ａで、論理カラム名称が画面に入力されたとき、入力された文字で始まる論理カラム名称をカラム辞書データベース３２から抽出し、ステップ３１ｂで、抽出した結果を画面に候補リストとして表示する。ステップ３１ｃで、候補リストに論理カラム名称がなく、画面に引き続き次の文字が入力された場合はステップ３１ａに戻り、ステップ３１ｃまでを繰返す。ステップ３１ｃで、カラムが決定されたときは、ステップ３１ｄで、新規カラムかどうかを判定する。入力された論理カラム名称が、カラム辞書データベース３２に未登録で、新規カラムと判定したとき、カラム辞書データベース３２にカラム情報を新規登録する。
【００２７】
ステップ３１ｆで、当該カラムが定義中のテーブルで使用されていることをカラム辞書データベース３２に登録する。ステップ３１ｇで、テーブル定義完了か否かの判定を行い、入力装置１から引き続きカラムの定義が入力された場合は、ステップ３１ａに戻る。ステップ３１ｇで、テーブルの定義が完了したときは、ステップ３１ｈで、画面に表示されている情報をテーブル情報としてカラム辞書データベース３２に登録する。
【００２８】
図４は、論理テーブル名称が社員テーブルである例を示す図で、テーブル定義が完了した状態を示している。
【００２９】
図５は、テーブル定義が完了したときの定義解析処理部３３の処理フローを示す。
【００３０】
ステップ３３ａで、カラム辞書データベース３２から、テーブルの中から主キーの指定があるカラムを抽出する。テーブル内で、主キーは必ず１つ以上指定が必要であるので、ステップ３３ｂで主キーが存在しないと判定した場合は、ステップ３３ｃで、画面にエラーがある旨のガイダンスを行う。主キーが存在する場合は、ステップ３３ｄでカラム属性を抽出する。カラム属性とは、各カラム情報の「ＮＯＴＮＵＬＬ」９０とインデックス
９１の指定をいう。主キーのチェック、カラム属性の抽出が完了したとき、ステップ33ｅで、定義解析結果をメモリ装置３４に格納する。
【００３１】
図６は、定義解析処理部３３の処理が完了したときのプログラム生成処理部３５の処理フローを示す。
【００３２】
プログラム生成処理部３５では、カラム辞書データベース３２とメモリ装置３４に格納されている定義解析結果を元に、ステップ３５ａでテーブル作成文４を、ステップ３５ｂでデータベース操作プログラム５を、ステップ３５ｃでメンテナンスツール８のそれぞれのプログラムを生成する。
【００３３】
図７は、テーブル作成文４を生成する処理フローを示す。テーブル作成文４は、カラム定義部，主キー定義部，インデックス定義部からなり、カラム辞書データベース３２とメモリ装置３４に格納されている定義解析結果を元に、ステップ３６ａでカラム定義ファイルを、ステップ３６ｂで主キー定義ファイルを、ステップ３６ｃでインデックス定義ファイルをそれぞれ出力する。
【００３４】
図８は、テーブル作成文４の生成例を示す図で、生成されたカラム定義部，主キー定義部，インデックス定義部の一例を示している。
【００３５】
図９は、データベース操作プログラム５を生成する処理フローを示す。
【００３６】
データベース操作には、検索，追加，更新，削除があり、図９に示す処理フローを実行して、それぞれの機能を実現するプログラムを、別ファイルとして作成する。
【００３７】
ステップ３７ａで、宣言(ＳＥＬＥＣＴ，ＩＮＳＥＲＴ，ＵＰＤＡＴＥ，ＤＥＬＥＴＥ)と物理カラム名称を出力する。ステップ３７ｂで、編集中の操作が追加か更新を判定し、追加か更新と判定したときは、ステップ３７ｃで格納する値を出力する。格納する値は、システム運用中に動的に変化するものであり、格納する値は、当該プログラムを呼出す高級言語で作成するアプリケーションプログラムからパラメータで指定される。このため、格納する値を、パラメータで指定される変数名称が出力される。ステップ３７ｄで、編集中の操作が検索か更新か削除と判定したとき、ステップ３７ｅでＷＨＥＲＥ句を出力する。
【００３８】
このように、高級言語からの呼出しの際、高級言語からパラメータによって検索条件を引き渡すことによって、動的に検索条件を変更することができる。
【００３９】
図１０は、操作ごとに生成されるデータベース操作プログラムの一例を示す図で、検索，追加，更新，削除の例を示している。
【００４０】
図１１は、ＷＨＥＲＥ句を生成する処理フローを示す。ステップ３８ａで、カラム情報が残っているか否かを判定し、全てのカラム情報について処理が完了するまで、ステップ３８ｂとステップ３８ｃの処理を繰返す。
【００４１】
検索条件であるＷＨＥＲＥ句は、当該プログラムを呼出すＣ言語などの高級言語で作成するアプリケーションプログラムからの要求に応じてカラムごとにＳＱＬ文として出力する。このため、出力の要否をアプリケーションプログラムからパラメータ指定があるかどうかによって判定する。ステップ３８ｂで、パラメータに値が入っているかどうかを判定する条件ロジックを出力する。ステップ３８ｃで、パラメータに値が入っていた場合に検索条件を編集するロジックを出力する。
【００４２】
図１２に、ＷＨＥＲＥ句となるＳＱＬ文を編集するプログラムの生成例を示す。
【００４３】
図１３は、メンテナンスツールとして動作する画面の初期状態を示す。操作方法は、論理テーブル名称８１に対象とする論理テーブル名称を入力し、レコード抽出ボタン９５を押下する。これによって、メンテナンスツールプログラムは、カラム辞書データベース
３２にアクセスし、表形式部分９７の１行目の見出し行に論理カラム名称を出力する。プログラム生成処理部３５で生成したデータベース検索プログラム５がリレーショナルデータベース７１にアクセスして、当該テーブルに格納されているレコード情報を表形式部分９７の２行目以降に、１レコードを１行として、レコード抽出ボタン９５により表示された例である図１４に示すように表示する。
【００４４】
図１５は、リレーショナルデータベース７１のテーブルの内容の追加，更新，削除する操作方法を示す図である。
【００４５】
画面に対象となるテーブルの情報が表示されている状態で、追加する場合には、表形式部分９７の空いている行に新しいレコードを入力し、操作欄９８に追加と入力する。更新する場合には、変更するカラムの値を直接編集し、操作欄９８に更新と入力する。削除する場合には、操作欄９８に削除と入力する。
【００４６】
それぞれ入力された状態で、レコード更新ボタン９６を押下する。これによって、メンテナンスツール６は、操作欄９８に入力されている操作に対応するプログラム生成処理部３５が生成したデータベース操作プログラム５を呼出し、リレーショナルデータベース
７１の当該テーブルに対して、画面に指定された操作を行う。この操作により、操作された結果を示す図１６にを示すように表示される。
【００４７】
このように、定義したリレーショナルデータベース中のテーブルを運用中にメンテナンスする際、テーブルへのレコード操作（挿入，更新，削除）を操作方法を選択することにより、ＳＱＬ文を意識することなくメンテナンスできる。また、データベース定義を実施することによって、リレーショナルデータベースを扱うシステムに必要となるソフトウェア、またはそのメンテナンスツールを入手できる。
【００４８】
本実施例によれば、リレーショナルデータベースのテーブル定義をカラム辞書データベースを元に作成することによって、リレーショナルデータベース内に複数構築するテーブルの定義間での整合性を保証できる。
【００４９】
また、テーブル定義書を情報源として、それに係わるソフトウェアが自動的に生成されるので、整合性の取れた、高品質で保守性の高いプログラムが得られる。
【００５０】
ＳＱＬ文の検索条件を可変にすることによって、管理するプログラム数を低減することができる。
【００５１】
また、ソフトウェアが自動的に生成されるので、プログラミングの知識が不足していても、データベース関連のソフトウェア開発が可能となり、ソフトウェアの生産性の向上に大きな効果が得られる。
【図面の簡単な説明】
【００５２】
【図１】本発明の一実施例であるデータベース操作プログラム自動生成システムの構成図である。
【図２】定義支援処理部３１によって作成されるテーブル定義画面を示す図である。
【図３】テーブル定義画面において、論理カラム名称の候補リストを表示するための処理フローを示す図である。
【図４】テーブル定義画面の入力結果例を示す図である。
【図５】定義解析処理部の処理フロー図である。
【図６】プログラム生成処理部の処理フロー図である。
【図７】テーブル作成文の生成処理フロー図である。
【図８】テーブル作成文の生成例を示す図である。
【図９】データベース操作プログラムの生成処理フロー図である。
【図１０】データベース操作プログラムの生成例を示す図である。
【図１１】ＷＨＥＲＥ句の生成処理フロー図である。
【図１２】ＷＨＥＲＥ句の生成例を示す図である。
【図１３】メンテナンスツール画面を示す図である。
【図１４】メンテナンスツール画面において、レコード抽出結果を示す図である。
【図１５】メンテナンスツール画面において、レコード更新方法を示す図である。
【図１６】メンテナンスツール画面において、レコード更新結果を示す図である。
【符号の説明】
【００５３】
１…入力装置、３…データベース操作プログラム自動生成装置、４…テーブル作成文、５…データベース操作プログラム、６…メンテナンスツール、３１…定義支援処理部、
３２…カラム辞書データベース、３３…定義解析処理部、３４…メモリ装置、３５…プログラム生成処理部。
【図１】
2006164090.tif 000003
【図２】
2006164090.tif 000004
【図３】
2006164090.tif 000005
【図４】
2006164090.tif 000006
【図５】
2006164090.tif 000007
【図６】
2006164090.tif 000008
【図７】
2006164090.tif 000009
【図８】
2006164090.tif 000010
【図９】
2006164090.tif 000011
【図１０】
2006164090.tif 000012
【図１１】
2006164090.tif 000013
【図１２】
2006164090.tif 000014
【図１３】
2006164090.tif 000015
【図１４】
2006164090.tif 000016
【図１５】
2006164090.tif 000017
【図１６】
2006164090.tif 000018