(57)【要約】【課題】データベースの開発工数を軽減することを可能とすると共に、開発者に依存しない検索ＳＱＬ分の作成を可能として保守運用の複雑化を回避する。【解決手段】テーブル一覧表作成処理部２０１、テーブル定義書作成処理部２０２、データベース設計書ＣＳＶ作成処理部２０３により、データベース設計書１０１を基に、テーブル一覧表３０１、テーブル定義書３０２、データベース設計書ＣＳＶ３０３を生成し、テーブル作成ＳＱＬ文作成処理部４０１と、ＳＱＬ＊Ｌｏａｄｅｒ用制御文作成処理部４０７、コピーテーブルＳＱＬ文作成処理部４０４により、データベース設計書ＣＳＶ３０３の情報を基に、データベースを構築する上で必要となる情報としての、データベースにおけるテーブルを作成するテーブル作成ＳＱＬ文５０１、テーブルにデータをローディングすると共にテーブルのバックアップを取得するＳＱＬ＊Ｌｏａｄｅｒ用制御文５０７、テーブルを本番環境に移行するコピーテーブルＳＱＬ文５０４を生成する。【選択図】図１
2008242677.tif 000002
【特許請求の範囲】
【請求項１】
プログラムされたコンピュータによって、データベースを構築する上で必要となる情報を生成してデータベースの構築を支援するシステムであって、
予め記憶装置に格納されたデータベース設計書の情報を読み出し、該データベース設計書の情報を基に、テーブル一覧表を生成して記憶装置に出力する第１の処理手段と、
予め記憶装置に格納されたデータベース設計書の情報を読み出し、該データベース設計書の情報を基に、テーブル定義書を生成して記憶装置に出力する第２の処理手段と、
予め記憶装置に格納されたデータベース設計書の情報を読み出し、該データベース設計書の情報を基に、データベース設計書ＣＳＶを生成して記憶装置に出力する第３の処理手段と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、データベースにおけるテーブルを作成するＳＱＬ文を生成する第４の処理手段と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、テーブルにデータをローディングする制御文を生成する第５の処理手段と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、テーブルのバックアップを取得するＳＱＬ文を生成する第６の処理手段と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、テーブルを本番環境に移行するＳＱＬ文を生成する第７の処理手段と
を有することを特徴とするデータベース構築支援システム。
【請求項２】
請求項１に記載のデータベース構築支援システムであって、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、ＤＢアクセスモジュールを生成する第８の処理手段と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、コピー文を生成する第９の処理手段と
を有することを特徴とするデータベース構築支援システム。
【請求項３】
プログラムされたコンピュータによって、データベースを構築する上で必要となる情報を生成する方法であって、
予め記憶装置に格納されたデータベース設計書の情報を読み出し、該データベース設計書の情報を基に、テーブル一覧表を生成して記憶装置に出力する第１の処理手順と、
予め記憶装置に格納されたデータベース設計書の情報を読み出し、該データベース設計書の情報を基に、テーブル定義書を生成して記憶装置に出力する第２の処理手順と、
予め記憶装置に格納されたデータベース設計書の情報を読み出し、該データベース設計書の情報を基に、データベース設計書ＣＳＶを生成して記憶装置に出力する第３の処理手順と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、データベースにおけるテーブルを作成するＳＱＬ文を生成する第４の処理手順と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、テーブルにデータをローディングする制御文を生成する第５の処理手順と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、テーブルのバックアップを取得するＳＱＬ文を生成する第６の処理手順と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、上記データベースを構築する上で必要となる情報としての、テーブルを本番環境に移行するＳＱＬ文を生成する第７の処理手順と
を有することを特徴とするデータベース構築情報生成方法。
【請求項４】
請求項３に記載のデータベース構築情報生成方法であって、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、ＤＢアクセスモジュールを生成する第８の処理手順と、
上記データベース設計書ＣＳＶの情報を読み出し、該データベース設計書ＣＳＶの情報を基に、コピー文を生成する第９の処理手順と
を有することを特徴とするデータベース構築情報生成方法。
【請求項５】
コンピュータを、請求項１もしくは請求項２のいずれかに記載のデータベース構築支援システムにおける各処理手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムされたコンピュータによってデータベースを構築する技術に係り、特に、データベース設計書の情報を基に、ドキュメント生成およびテーブル作成ＳＱＬ文、データローディング制御文、テーブルバックアップ取得ＳＱＬ文、テーブル本番環境移行ＳＱＬ文、ＤＢアクセスモジュール、コピー文を自動生成し、データベース構築を効率的に支援するのに好適なデータベース構築支援技術に関するものである。
【背景技術】
【０００２】
プログラムされたコンピュータによってデータベースを構築する技術に関連する従来技術として、例えば、特許文献１に記載のように、データベースの設計段階で記述したデータベース設計書の情報を基にデータベース定義ＳＱＬ文を自動生成するものがある。
【０００３】
この技術では、データベースの設計段階で記述したデータベース設計書を１行ずつ読み込み、当該行が（１）テーブル情報と（２）インデックス情報および（３）レコード件数情報のいずれであるかを判定し、（１）テーブル情報であれば、当該テーブル情報に基づきテーブル定義文を編集して出力すると共にレコードサイズ計算を行い、（２）インデックス情報であれば、当該インデックス情報に基づきインデックス定義文を編集して出力すると共にインデックスレコードサイズ計算を行い、（３）レコード件数情報であれば、レコード件数ワークに格納する処理を全ての行に渡って行い、その後、テーブル領域サイズの算出、テーブル領域サイズ定義文の出力、インデックス領域サイズの算出、インデックス領域サイズ定義文の出力を行うものである。
【０００４】
このように、データベース設計書の情報を各行毎に編集して、自動的に、各情報の内容に対応したＳＱＬ文を生成し、かつ、各情報のレコードサイズに対応したＳＱＬ文を生成することにより、従来のデータベースの構築において、データベース設計書のドキュメントに基づいてデータベースの構造を定義するＳＱＬ文（データベース定義ＳＱＬ文）をキーボード入力によって作成する際の問題点（このデータベース定義ＳＱＬ文には、データベース設計書と同じ情報を入力することになるが、キーボードからの入力において入力ミスが発生し易い）を解決することができる。
【０００５】
しかし、この技術では、自動で作成することができる対象は、データベース定義ＳＱＬ文（テーブル作成ＳＱＬ文とインデックス作成ＳＱＬ文）のみである。
【０００６】
このように、上記従来技術では、データベース設計書の内容に対応するデータベース定義ＳＱＬ文（テーブル作成・インデックス作成）のみを作成できるだけであり、データベースを構築する上で必要となるその他のＳＱＬ文やテーブル定義に関するドキュメントは、人手により作成する必要がある。また、ＣＧＩプログラムからテーブルを検索するＳＱＬ文も人手により作成する必要がある。
【０００７】
そのため、開発工数がかかり、さらに、開発者に依存した検索ＳＱＬ分が作成されるので、保守運用が複雑化する懸念がある。
【０００８】
【特許文献１】特開２０００−２２２２５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
解決しようとする問題点は、従来の技術では、データベース設計書の内容に対応するデータベース定義ＳＱＬ文（テーブル作成・インデックス作成）のみを作成できるだけであり、データベースを構築する上で必要となるその他のＳＱＬ文やテーブル定義に関するドキュメントは、人手により作成しなければならない点と、ＣＧＩプログラムからテーブルを検索するＳＱＬ文も人手により作成しなければならない点である。
【００１０】
本発明の目的は、これら従来技術の課題を解決し、データベースの開発工数を軽減することを可能とすると共に、開発者に依存しない検索ＳＱＬ分の作成を可能として保守運用の複雑化を回避することである。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明は、プログラムされたコンピュータによって、データベースを構築する上で必要となる情報を生成してデータベースの構築を支援するために、予め記憶装置に格納されたデータベース設計書の情報を読み出し、このデータベース設計書の情報を基に、テーブル一覧表を生成して記憶装置に出力すると共に、予め記憶装置に格納されたデータベース設計書の情報を読み出し、このデータベース設計書の情報を基に、テーブル定義書を生成して記憶装置に出力し、さらに、予め記憶装置に格納されたデータベース設計書の情報を読み出し、このデータベース設計書の情報を基に、データベース設計書ＣＳＶを生成して記憶装置に出力し、そして、データベース設計書ＣＳＶを読み出し、このデータベース設計書ＣＳＶを基に、データベースを構築する上で必要となる情報としての、データベースにおけるテーブルを作成するＳＱＬ文、テーブルにデータをローディングする制御文、テーブルのバックアップを取得するＳＱＬ文、テーブルを本番環境に移行するＳＱＬ文を生成することを特徴とする。さらに、データベース設計書ＣＳＶを読み出し、このデータベース設計書ＣＳＶを基に、ＤＢアクセスモジュールとコピー文を生成することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、（１）データベースを管理する上で必要となるテーブル定義のドキュメント、（２）データをテーブルに取込むために必要となるローディング制御文、（３）システムを保守運用する上で必須となるデータのバックアップを取得するＳＱＬ文、（４）新規作成したテーブルや更新したテーブルを本番環境に移行するＳＱＬ、（５）ＤＢアクセスモジュールとコピー文を含む、それぞれデータベースを構築する上で必要となるドキュメントやＳＱＬ文を、データベース設計書の情報を基に、自動で生成することができるので、開発や保守運用の工数を削減することが可能となると共に、それぞれ、必ず整合性が取れたものとなる。
【発明を実施するための最良の形態】
【００１３】
以下、図を用いて本発明を実施するための最良の形態例を説明する。
【００１４】
図１は、本発明に係るデータベース構築支援システムの構成例を示すブロック図であり、図２は、図１におけるテーブル一覧表作成処理部の処理動作例を示すフローチャート、図３Ａは、図１におけるテーブル定義書作成処理部の第１の処理動作例を示すフローチャート、図３Ｂは、図１におけるテーブル定義書作成処理部の第２の処理動作例を示すフローチャート、図３Ｃは、図１におけるテーブル定義書作成処理部の第３の処理動作例を示すフローチャートである。
【００１５】
また、図４は、図１におけるデータベース設計書ＣＳＶ作成処理部の処理動作例を示すフローチャート、図５Ａは、図１におけるテーブル作成ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャート、図５Ｂは、図１におけるテーブル作成ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャート、図６Ａは、図１におけるインデックス作成ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャート、図６Ｂは、図１におけるインデックス作成ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャート、図６Ｃは、図１におけるインデックス作成ＳＱＬ文作成処理部の第３の処理動作例を示すフローチャートである。
【００１６】
また、図７Ａは、図１におけるインデックス削除ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャート、図７Ｂは、図１におけるインデックス削除ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャート、図８Ａは、図１におけるコピーテーブル作成ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャート、図８Ｂは、図１におけるコピーテーブル作成ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャートである。
【００１７】
また、図９Ａは、図１におけるテーブルリネームＳＱＬ文作成処理部の第１の処理動作例を示すフローチャート、図９Ｂは、図１におけるテーブルリネームＳＱＬ文作成処理部の第２の処理動作例を示すフローチャート、図１０は、図１における旧テーブル削除ＳＱＬ文作成処理部の処理動作例を示すフローチャート、図１１Ａは、図１におけるＳＱＬ*Ｌｏａｄｅｒ用制御文作成処理部の第１の処理動作例を示すフローチャート、図１１Ｂは、図１におけるＳＱＬ*Ｌｏａｄｅｒ用制御文作成処理部の第２の処理動作例を示すフローチャートである。
【００１８】
また、図１２Ａは、図１におけるテーブル引上げＳＱＬ文作成処理部の第１の処理動作例を示すフローチャート、図１２Ｂは、図１におけるテーブル引上げＳＱＬ文作成処理部の第２の処理動作例を示すフローチャート、図１３Ａは、図１におけるデータベース設計書のサンプル例を示す説明図、図１３Ｂは、図１におけるデータベース設計書の項目説明例を示す説明図、図１３Ｃは、図１におけるデータベース設計書のデータ例を示す説明図である。
【００１９】
また、図１４は、図１におけるテーブル一覧表の構成例を示す説明図、図１５Ａは、図１におけるテーブル定義書のサンプル例を示す説明図、図１５Ｂは、図１におけるテーブル定義書の項目説明例を示す説明図、図１５Ｃは、図１におけるテーブル定義書のデータ例を示す説明図、図１６Ａは、図１におけるデータベース設計書ＣＳＶのサンプル例を示す説明図、図１６Ｂは、図１におけるデータベース設計書ＣＳＶの項目説明例を示す説明図、図１６Ｃは、図１におけるデータベース設計書ＣＳＶのデータ例を示す説明図である。
【００２０】
また、図１７Ａは、図１におけるテーブル作成ＳＱＬ文のサンプル例を示す説明図、図１７Ｂは、図１におけるテーブル作成ＳＱＬ文の内容説明例を示す説明図、図１８は、図１におけるインデックス作成ＳＱＬ文の具体例を示す説明図、図１９は、図１におけるインデックス削除ＳＱＬ文の具体例を示す説明図、図２０Ａは、図１におけるコピーテーブル作成ＳＱＬ文のサンプル例を示す説明図、図２０Ｂは、図１におけるコピーテーブル作成ＳＱＬ文の内容説明例を示す説明図である。
【００２１】
また、図２１は、図１におけるテーブルリネーム作成ＳＱＬ文の具体例を示す説明図、図２２は、図１における旧テーブル削除ＳＱＬ文の具体例を示す説明図、図２３は、図１におけるＳＱＬ*Ｌｏａｄｅｒ用制御文の具体例を示す説明図、図２４Ａは、図１におけるテーブル引上げＳＱＬ文のサンプル例を示す説明図、図２４Ｂは、図１におけるテーブル引上げＳＱＬ文の内容説明例を示す説明図である。
【００２２】
また、図２５は、図１におけるデータベース構築支援システムで作成した各ＳＱＬ文による処理機能を示す説明図、図２６Ａは、図１におけるＤＢアクセスモジュール作成処理部の第１の処理動作例を示すフローチャート、図２６Ｂは、図１におけるＤＢアクセスモジュール作成処理部の第２の処理動作例を示すフローチャート、図２７は、図１におけるコピー文作成処理部の処理動作例を示すフローチャートである。
【００２３】
また、図２８は、図１におけるデータベース構築支援システムで生成したＤＢアクセスモジュールの内容説明を示す説明図であり、図２９は、図１におけるデータベース構築支援システムで生成したコピー文のサンプルとその内容説明を示す説明図、図３０は、図２６Ａ，Ｂおよび図２７における処理で作成されたＤＢアクセスモジュールとコピー文の処理機能を示す説明図である。
【００２４】
本例のデータベース構築支援システムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や主メモリ、表示装置、入力装置、外部記憶装置からなるコンピュータ構成の、図１におけるサーバコンピュータ１からなり、光ディスク駆動装置等を介してＣＤ−ＲＯＭ等の記憶媒体に記録されたプログラムやデータを外部記憶装置内にインストールした後、この外部記憶装置から主メモリに読み込みＣＰＵで処理することにより、データベース構築の支援機能を実行する。
【００２５】
すなわち、図１におけるサービスコンピュータ１は、プログラムされたコンピュータ処理機能として、テーブルスキーマ管理機能およびＳＱＬジェネレータ機能を有し、予め記憶装置に記憶されたデータベース設計書１０１の情報に基づいて、テーブル一覧表３０１、テーブル定義書３０２、データベース設計書ＣＳＶ３０３を自動で作成し、さらに、このデータベース設計書ＣＳＶ３０３に基づいて、テーブル作成するテーブル作成ＳＱＬ文５０１、インデックス作成ＳＱＬ文５０２、インデックス削除ＳＱＬ文５０３、コピーテーブル作成ＳＱＬ文５０４、テーブルリネームＳＱＬ文５０５、旧テーブル削除ＳＱＬ文５０６、ＳＱＬ*Ｌｏａｄｅｒ用制御文５０７、テーブル引上げＳＱＬ文５０８、ＤＢアクセスモジュール５０９、コピー文５１０を自動で作成する。
【００２６】
尚、データベース設計書１０１とテーブル一覧表３０１は「Ｅｘｃｅｌ（登録商標）」等の表計算ソフトで構成された磁気データであり記憶装置に格納される。
【００２７】
また、サーバコンピュータ１は、プログラムされたコンピュータ処理機能として、テーブル一覧作成処理部２０１、テーブル定義書作成処理部２０２、データベース設計書ＣＳＶ作成処理部２０３、テーブル作成ＳＱＬ文作成処理部４０１、インデックス作成ＳＱＬ文作成処理部４０２、インデックス削除ＳＱＬ文作成処理部４０３、コピーテーブル作成ＳＱＬ文作成処理部４０４、テーブルリネームＳＱＬ文作成処理部４０５、旧テーブル削除ＳＱＬ文作成処理部４０６、ＳＱＬ*Ｌｏａｄｅｒ用制御文作成処理部４０７、テーブル引上げＳＱＬ文作成処理部４０８、ＤＢアクセスモジュール作成処理部４０９、コピー文作成処理部４１０の各処理機能を有し、本発明に係るデータベース構築支援システムに係る処理を実行する。
【００２８】
すなわち、本例のデータベース構築支援システムは、プログラムされたコンピュータによって、データベースを構築する上で必要となる情報を生成してデータベースの構築を支援するために、まず、第１の処理手段としてのテーブル一覧表作成処理部２０１、第２の処理手段としてのテーブル定義書作成処理部２０２、第３の処理手段としてのデータベース設計書ＣＳＶ作成処理部２０３により、予め記憶装置に格納されたデータベース設計書１０１の情報を読み出し、このデータベース設計書１０１の情報を基に、テーブル一覧表３０１、テーブル定義書３０２、データベース設計書ＣＳＶ３０３を生成して記憶装置に出力し、そして、第４の処理手段としてのテーブル作成ＳＱＬ文作成処理部４０１と、第５，第６の処理手段としてのＳＱＬ＊Ｌｏａｄｅｒ用制御文作成処理部４０７、および、第７の処理手段としてのコピーテーブルＳＱＬ文作成処理部４０４により、データベース設計書ＣＳＶ３０３の情報を読み出し、このデータベース設計書ＣＳＶ３０３の情報を基に、データベースを構築する上で必要となる情報としての、データベースにおけるテーブルを作成するテーブル作成ＳＱＬ文５０１、テーブルにデータをローディングすると共にテーブルのバックアップを取得するＳＱＬ＊Ｌｏａｄｅｒ用制御文５０７、テーブルを本番環境に移行するコピーテーブルＳＱＬ文５０４を生成する。
【００２９】
また、第８の処理手段としてのＤＢアクセスモジュール作成処理部４０９と第９の処理手段としてのコピー文作成処理部４１０により、データベース設計書ＣＳＶ３０３の情報を読み出し、このデータベース設計書ＣＳＶ３０３の情報を基に、ＤＢアクセスモジュール５０９とコピー文５１０を生成する。
【００３０】
以下、このようなデータベース構築支援システムに係る処理の詳細を説明する。
【００３１】
データベース設計書１０１は、図１３Ａ〜Ｃで示す構成内容である。図１３Ａにおいては、データベース設計書のサンプル１３０１を示しており、図１３Ｂにおいては、その項目説明１３０２、図１３Ｃにおいてはその具体的なデータ例１３０３を示している。
【００３２】
但し、図１３Ａ〜Ｃで示すデータベース設計書１０１の例は、あくまで最小のレイアウトであるため、テーブルの項目が増えた場合でも、各ドキュメントやデータベースを作成する各ＳＱＬ文を自動で作成できる。
【００３３】
まず、図２を用いて、テーブル一覧表作成処理部２０１の処理動作について説明する。この処理は、データベース設計書１０１の情報に基づいて、テーブル一覧表３０１を自動で作成する処理である。このテーブル一覧表３０１は、図１４に示す構成内容となる。
【００３４】
まず、テーブル一覧表のタイトル（テーブル名をセルＡ１、ファイル名をセルＢ１、サイズをセルＣ１、キーをセルＤ１）をテーブル一覧表３０１に出力する（ステップＳ２０１）。
【００３５】
テーブル一覧表のタイトル出力後、データベース設計書１０１を読み込みテーブル名をテーブル一覧表３０１のＡ列（ステップＳ２０２）、ファイル名をテーブル一覧表３０１のＢ列（ステップＳ２０３）、１レコードのサイズをテーブル一覧表３０１のＣ列（ステップＳ２０４）、テーブルのキー項目をテーブル一覧表３０１のＤ列（ステップＳ２０５）に出力する。この処理をシートがあるだけループし実行する（ステップＳ２０６）。
【００３６】
このテーブル一覧表作成処理部２０１の処理結果として、図１４に示すテーブル一覧表が生成される。尚、図１４において、１４０１はテーブル一覧表のサンプルであり、１４０２はその項目説明、１４０３はそのデータ例である。
【００３７】
次に、図３Ａ〜Ｃを用いてテーブル定義書作成処理部２０２の処理動作について説明する。これは、データベース設計書１０１の情報に基づいて、テーブル定義書３０２を自動で作成する処理である。図１５Ａ〜Ｃにテーブル定義書３０２の詳細内容を示す。
【００３８】
まず、データベース設計書１０１を読み込み、１レコードのバイト数を算出する（ステップＳ３０２）。データベース設計書の型が"Ｋ"の場合、当該項目の桁を２倍して加算し（ステップＳ３０２）、それ以外の場合は当該項目の桁をそのまま加算する（ステップＳ３０３）。この処理を項目があるだけループし実行する（ステップＳ３０４）。
【００３９】
１レコードのバイト数を算出後、図３Ｂに詳細を示すようにしてテーブル定義書のタイトルを作成する（ステップＳ３０５）。まず、タイトル入力エリアの罫線を作成し（ステップＳ３０６）、タイトル（システ名称、ファイル名称、ファイルＩＤ、１レコードのバイト数）をテーブル定義書（１０２）に出力する（ステップＳ３０７）。
【００４０】
タイトル作成後（ステップＳ３０５）、図３Ｃに詳細を示すようにしてテーブル定義入力エリアの罫線を作成する（ステップＳ３０８）。まず、テーブル定義入力エリアの外枠の罫線を作成し（ステップＳ３１０）、その後、項目入力エリアの罫線（ステップＳ３１１）、ＤＡＴＡ  ＮＡＭＥ入力エリアの罫線（ステップＳ３１２）、ＰＩＣＴＵＲＥ入力エリアの罫線（ステップＳ３１３）、ＥＴＣ入力エリアの罫線（ステップＳ３１４）を作成する。
【００４１】
テーブル定義入力エリアの罫線作成後、目盛り（１〜１００）を作成する（ステップＳ３２５）。ｉが５で割切れる場合は目盛りを上段に作成し（ステップＳ３１６）、ｉが５で割切れない場合は目盛りを下段に作成する（ステップＳ３１７）。ｉを１からスタートさせ１ずつ加算し、１００ループし目盛り作成処理を実行する（ステップＳ３２５）。  尚、ｉは、目盛りカウンタである。
【００４２】
テーブル定義入力エリアの罫線作成後（ステップＳ３０８）、データベース設計書１０１の各項目をテーブル定義書（１０２）に追加する（ステップＳ３２６）。
【００４３】
データベース設計書１０１の項目名をテーブル定義書の項目欄に出力する（ステップＳ３２０）。但し、項目が２行に跨った場合（１００目盛り跨る）、データベース設計書１０１の項目名に"（続き）"を付加し、テーブル定義書（１０２）の項目欄に出力する（ステップＳ３１８）（ステップＳ３１９）。
【００４４】
データベース設計書１０１の項目名をテーブル定義書のＤＡＴＡ  ＮＡＭＥ欄に出力する（ステップＳ３２１）。
【００４５】
データベース設計書１０１の型と桁をテーブル定義書のＰＩＣＴＵＲＥ欄に出力する（ステップＳ３２２）。
【００４６】
データベース設計書１０１の備考をテーブル定義書の備考欄に出力する（ステップＳ３２３）。
【００４７】
データベース設計書１０１から各項目の追加後、罫線作成済みテーブル定義入力エリアをチェックする。罫線作成済みテーブル定義入力エリアが全て使用済みの場合（ステップＳ３２４）、再度タイトル作成とテーブル定義入力エリアの罫線作成を実行する（ステップＳ３０５），（ステップＳ３０８）。データベース設計書１０１の各項目をテーブル定義書（１０２）に追加する処理をデータベース設計書１０１の項目があるだけループし実行する（ステップＳ３２６）。
【００４８】
このテーブル定義書作成処理部２０２の処理結果として、図１５Ａ〜Ｃに示すテーブル定義書が生成される。尚、図１５Ａにおいては、テーブル定義書のサンプル１５０１を示し、図１５Ｂにおいては、テーブル定義書の項目説明１５０２、図１５Ｃにおいては、テーブル定義書のデータ例１５０３を示している。
【００４９】
次に、図４を参照してデータベース設計書ＣＳＶ作成処理部２０３の処理動作について説明する。これは、データベース設計書１０１の情報に基づいてデータベース設計書ＣＳＶ３０３を自動で作成する処理である。図１６Ａ〜Ｃがデータベース設計書ＣＳＶ３０３の構成である。
【００５０】
データベース設計書１０１を開き、ＣＳＶ形式ファイル３０３として保存する（ステップＳ４０２）。この処理をデータベース設計書１０１のシートがあるだけ実行する（ステップＳ４０１）。
【００５１】
このデータベース設計書ＣＳＶ作成処理部２０３の処理結果として、図１６Ａ〜Ｃに詳細を示すデータベース設計書ＣＳＶ３０３が生成される。尚、図１６Ａにおいては、データベース設計書ＣＳＶのサンプル１６０１を示し、図１６Ｂにおいては、データベース設計書ＣＳＶの項目説明１６０２、図１６Ｃにおいては、データベース設計書ＣＳＶのデータ例１６０３を示している。
【００５２】
次に、図５Ａ，Ｂを参照して、テーブル作成ＳＱＬ文作成処理部４０１の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてテーブル作成ＳＱＬ文５０１を作成する処理である。図１７Ａ，Ｂがテーブル作成ＳＱＬ文５０１の詳細構成である。
【００５３】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ５０１）。
【００５４】
次に、ＳＱＬエラーが発生しても後続処理を実行させる命令文とテーブルを削除するＳＱＬ文とテーブルを作成するＳＱＬ文をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５０３）。
【００５５】
次に、テーブルの項目名を出力する処理（項目分ループ）を実行する（ステップＳ５０５）。
【００５６】
（１）まず、データベース設計書ＣＳＶ３０３の項目名をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５０６）。
【００５７】
（２）次に、当該項目の型をチェックする。当該項目の型が"０"または"９"の場合、"ＮＵＭＢＥＲ"と桁をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５０７，Ｓ５０８）。
【００５８】
当該項目の型が"Ｘ"の場合、"ＶＥＲＣＨＡＲ２"と桁をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５０９，Ｓ５１０）。当該項目の型が"Ｋ"の場合、"ＮＶＥＲＣＨＡＲ２"と桁をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５１１，ステップＳ５１２）。当該項目の型がそれ以外の場合、"ＬＯＮＧ"  をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５１１，Ｓ５１３）。
【００５９】
（３）次に、まだ項目があるかチェックする。次の項目がある場合、"，"をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５１４，Ｓ５１５）。次の項目がない場合、"）"をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５１４，Ｓ５１６）。
【００６０】
上記（１）〜（３）の処理を項目があるだけループし実行する（ステップＳ５０５）。
【００６１】
その後、テーブルを格納する表領域のパラメータをテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５１８）。
【００６２】
そして最後に、ＳＱＬＰＬＵＳを終了する命令文をテーブル作成ＳＱＬ文５０１に出力する（ステップＳ５２１）。
【００６３】
このテーブル作成ＳＱＬ文作成処理部４０１の処理結果として、図１７Ａ，Ｂに詳細を示すテーブル作成ＳＱＬ文５０１が生成される。尚、図１７Ａにおいては、テーブル作成ＳＱＬ文のサンプル１７０１を示し、図１７Ｂにおいては、テーブル作成ＳＱＬ文の内容説明１７０２を示している。
【００６４】
次に、図６Ａ〜Ｃを参照してインデックス作成ＳＱＬ文作成処理部４０２の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてインデックス作成ＳＱＬ文５０２を作成する処理である。図１８Ａ，Ｂがインデックス作成ＳＱＬ文の詳細構成である。
【００６５】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ６０２）。
【００６６】
次に、ＳＱＬ処理時間を出力させる命令文とＳＱＬエラーが発生した時点でロールバックを行い、リターンコード「１」を戻してＳＱＬＰＬＵＳを終了する命令文をインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６０８）。
【００６７】
次に、ＮＯＴ  ＮＵＬＬ制約ＳＱＬ文作成処理を実行する（ステップＳ６５２）。すなわち、当該項目にＮＯＴ  ＮＵＬＬ制約を有効にする定義されているかチェックし、定義されている場合、ＮＯＴ  ＮＵＬＬ制約ＳＱＬ文をインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６０９，Ｓ６１０）。この処理を項目があるだけループし実行する。（ステップＳ６５２）
【００６８】
次に、ｐｕｔｆｌａｇとｕｎｉｑｆｌａｇに"０"を設定する（ステップＳ６１１）。尚、ｐｕｔｆｌａｇは、プライマリーまたはユニークインデックス作成ＳＱＬ文を出力したか判定するフラグであり、ｕｎｉｑｆｌａｇは、プライマリーまたはユニークインデックスを作成する項目があるか判定するフラグである。
【００６９】
当該項目にＫＥＹが定義されているかチェックし、定義されていた場合、ｕｎｉｑｆｌａｇを"１"にする（ステップＳ６１２，Ｓ６１３）。この処理を、項目があるだけループし実行する（ステップＳ６５３）。
【００７０】
次に、ｕｎｉｑｆｌａｇをチェックする（ステップＳ６１４）。ｕｎｉｑｆｌａｇが"１"の場合、プライマリーまたはユニークインデックス作成ＳＱＬ文作成処理を実行する（ステップＳ６５４）。
【００７１】
プライマリーまたはユニークインデックス作成ＳＱＬ文作成処理では、まず当該項目にＫＥＹが定義されているかチェックする（ステップＳ６１５）。ＫＥＹが設定されている場合、ｐｕｔｆｌａｇをチェックする処理（ステップＳ６１６）を実行する（ステップＳ６１５）。
【００７２】
ｐｕｔｆｌａｇが"０"の場合、プライマリーインデックス作成の場合かチェックし（ステップＳ６１７）、ｐｕｔｆｌａｇが"１"の場合、"，"をインデックス作成ＳＱＬ文５０２に出力し（ステップＳ６２５）た後にステップＳ６２５の処理に移行する。
【００７３】
ステップＳ６１７のチェック結果がプライマリーインデックス作成の場合、プライマリーインデックス作成ＳＱＬ文をインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６１９）。
【００７４】
ステップＳ６１７のチェック結果がプライマリーインデックス作成でない場合、ユニークインデックス作成ＳＱＬ文をインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６２２）。
【００７５】
その後、プライマリーまたはユニークインデックス作成ＳＱＬ文出力後、ｐｕｔｆｌａｇに"１"を設定し（ステップＳ６２７）ｌ、当該項目名をインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６２９）。
【００７６】
ステップＳ６１５からステップＳ６２９までの処理を項目があるだけループし実行する（ステップＳ６５４）。
【００７７】
このようなプライマリーまたはユニークインデックス作成ＳＱＬ文の作成処理後、インデックスを格納する表領域のパラメータをインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６３３）。
【００７８】
そして、プライマリー・ユニークインデックス作成処理後、以下のインデックス作成ＳＱＬ文作成処理（ループ）を実行する（ステップＳ６５５）。
【００７９】
まず、当該項目のＩＮＤＥＸの定義をチェックする（ステップＳ６３８，Ｓ６３９，Ｓ６４０，Ｓ６４３）。
【００８０】
ＩＮＤＥＸの定義がない場合、何も実行しない（ステップＳ６３８）。ＩＮＤＥＸの定義が"Ｂ"の場合、ビットマップインデックス作成ＳＱＬ文とインデックスを格納する表領域のパラメータをインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６３９，Ｓ６４０）。
【００８１】
ＩＮＤＥＸの定義が"Ｉ"の場合、ＢＴＲＥＥインデックス作成ＳＱＬ文とインデックスを格納する表領域のパラメータをインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６４１，Ｓ６４２）。
【００８２】
そして、ＩＮＤＥＸの定義が"Ｄ"の場合、まず、Ｏｒａｃｌｅ  Ｔｅｘｔ作成ＳＱＬ文をインデックス作成ＳＱＬ文５０２に出力し（ステップＳ６４３，Ｓ６４４）、さらに、#ＩＭＴレクサー、#ＩＭＴセクショングループ、#ＩＭＴストレージのそれぞれが定義されているか否かを判別する（ステップＳ６４５，Ｓ６４７，Ｓ６４９）。
【００８３】
#ＩＭＴレクサーが定義されている場合（ステップＳ６４５）、定義されたレクサーをインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６４６）。
【００８４】
#ＩＭＴセクショングループが定義されている場合（ステップＳ６４７）、定義されたセクショングループをインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６４８）。
【００８５】
#ＩＭＴストレージが定義されている場合（ステップＳ６４９）、定義されたストレージをインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６５０）。
【００８６】
上記ステップＳ６３８〜Ｓ６５０の処理を項目があるだけループし実行する（ステップＳ６５５）。
【００８７】
最後に、テーブルを分析するＳＱＬ文とＳＱＬＰＬＵＳを終了する命令文をインデックス作成ＳＱＬ文５０２に出力する（ステップＳ６５１）。
【００８８】
このインデックス作成ＳＱＬ文作成処理部４０２の処理結果として、図１８Ａ，Ｂに詳細を示すインデックス作成ＳＱＬ文５０２が生成される。尚、図１８Ａにおいては、インデックス作成ＳＱＬ文のサンプル１８０１を示し、図１８Ｂにおいては、インデックス作成ＳＱＬ文の内容説明１８０２を示している。
【００８９】
次に、図７Ａ，Ｂを参照してインデックス削除ＳＱＬ文作成処理部４０３の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてインデックス削除ＳＱＬ文５０３を作成する処理である。図１９Ａ，Ｂがインデックス削除ＳＱＬ文の詳細構成である。
【００９０】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ７０１）。
【００９１】
次に、ＳＱＬエラーが発生しても後続処理を実行させる命令文をインデックス削除ＳＱＬ文５０３に出力する（ステップＳ７０２）。
【００９２】
次にｐｕｔｆｌａｇに"０"、ｕｎｉｑｆｌａｇに"１"を設定する（ステップＳ７２０）。尚、ｐｕｔｆｌａｇは、プライマリーまたはユニークインデックス作成ＳＱＬ文を出力したか判定するフラグであり、ｕｎｉｑｆｌａｇは、プライマリーまたはユニークインデックスを作成する項目があるか判定するフラグである。
【００９３】
当該項目にＫＥＹが定義されているかチェックする（ステップＳ７１９）。定義されている場合、ｕｎｉｑｆｌａｇを"０"にする（ステップＳ７０３）。この処理を項目があるだけループし実行する（ステップＳ７１９）。
【００９４】
次に、インデックス削除および制約無効ＳＱＬ文作成処理（ループ）を実行する（ステップＳ７２１）。
【００９５】
ｐｕｔｆｌａｇが"０"且つｕｎｉｑｆｌａｇが"０"且つ当該項目にＫＥＹが設定されているか否かを判別する（ステップＳ７０５）。
【００９６】
ｐｕｔｆｌａｇが"０"且つｕｎｉｑｆｌａｇが"０"且つ当該項目にＫＥＹが設定されていなけば、ステップＳ７１０の処理に移るが、設定されている場合には、プライマリーインデックス削除ＳＱＬ文作成またはユニークインデックス削除ＳＱＬ文作成のいずれであるかを判別する（ステップＳ７０６）。
【００９７】
プライマリーインデックス作成の場合、プライマリーインデックス削除ＳＱＬ文をインデクス削除ＳＱＬ文５０３に出力する（ステップＳ７０７）。プライマリーインデックス作成でない場合、ユニークインデックス削除ＳＱＬ文をインデクス削除ＳＱＬ文５０３に出力する（ステップＳ７０８）。
【００９８】
そして、プライマリーまたはユニークインデックス削除ＳＱＬ文を出力後、ｐｕｔｆｌａｇに"１"を設定する（ステップＳ７０９）。
【００９９】
その後、当該項目にＩＮＤＥＸが定義されているかチェックする（ステップＳ７１０）。定義されていなければステップＳ７１４の処理に移り、定義されていれば、ＩＮＤＥＸの定義が"Ｂ"または"Ｉ"であるか、あるいはそれ以外であるか判別する（ステップＳ７１１）。
【０１００】
ＩＮＤＥＸの定義が"Ｂ"または"Ｉ"の場合、インデックスを削除するＳＱＬ文をインデクス削除ＳＱＬ文５０３に出力する（ステップＳ７１２）。ＩＮＤＥＸの定義が"Ｂ"または"Ｉ"以外の場合、Ｏｒａｃｌｅ  Ｔｅｘｔを削除するＳＱＬ文をインデクス削除ＳＱＬ文５０３に出力する（ステップＳ７１３）。
【０１０１】
次に、当該項目にＮＯＴ  ＮＵＬＬ制約が定義されているか否かをチェックする（ステップＳ７１４）。ＮＯＴ  ＮＵＬＬ制約が定義されている場合、ＮＯＴ  ＮＵＬＬ制約を無効にするＳＱＬ文をインデクス削除ＳＱＬ文５０３に出力する（ステップＳ７１５）。
【０１０２】
以上のステップＳ７０５〜Ｓ７１５の処理を項目があるだけループし実行する（ステップＳ７２１）。
【０１０３】
そして最後に、ＳＱＬＰＬＵＳを終了する命令文をインデクス削除ＳＱＬ文５０３に出力する（ステップＳ７１６）。
【０１０４】
このインデックス削除ＳＱＬ文作成処理部４０３の処理結果として、図１９Ａ，Ｂに詳細を示すインデックス削除ＳＱＬ文５０３が生成される。尚、図１９Ａにおいては、インデックス削除ＳＱＬ文のサンプル１９０１を示し、図１９Ｂにおいては、インデックス削除ＳＱＬ文の内容説明１９０２を示している。
【０１０５】
次に、図８Ａ，Ｂを参照してコピーテーブル作成ＳＱＬ文作成処理部４０４の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてコピーテーブル作成ＳＱＬ文５０４を作成する処理である。図２０Ａ，Ｂがコピーテーブル作成ＳＱＬ文の詳細構成である。
【０１０６】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ８０２）。
【０１０７】
次に、ＳＱＬエラーが発生しても後続処理を実行させる命令文、ＳＱＬ処理時間を出力させる命令文、コピーテーブルを作成するＳＱＬ文を、コピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８０４）。
【０１０８】
また、コピーテーブルを格納する表領域のパラメータをコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８１９）。
【０１０９】
次にｐｕｔｆｌａｇとｕｎｉｑｆｌａｇに"０"を設定する（ステップＳ８１１）。尚、ｐｕｔｆｌａｇは、プライマリーまたはユニークインデックス作成ＳＱＬ文を出力したか判定するフラグであり、ｕｎｉｑｆｌａｇは、プライマリーまたはユニークインデックスを作成する項目があるか判定するフラグである。
【０１１０】
そして、当該項目にＫＥＹが定義されているか否かをチェックし（ステップＳ８１２）、定義されていた場合、ｕｎｉｑｆｌａｇを"１"にする（ステップＳ８１３）処理を、項目があるだけループし実行する（ステップＳ８５３）。
【０１１１】
次にｕｎｉｑｆｌａｇをチェックする（ステップＳ８１４）。ｕｎｉｑｆｌａｇが"１"の場合、プライマリーまたはユニークインデックス作成ＳＱＬ文作成処理（ループ）を実行する（ステップＳ８５４）。
【０１１２】
このプライマリーまたはユニークインデックス作成ＳＱＬ文作成処理では、まず当該項目にＫＥＹが定義されているか否かをチェックする（ステップＳ８１５）。
【０１１３】
ＫＥＹが設定されていなければ何もせず、ＫＥＹが設定されている場合、ｐｕｔｆｌａｇをチェックする処理を実行する（ステップＳ８１６）。
【０１１４】
ｐｕｔｆｌａｇが"１"の場合、"，"をコピーテーブル作成ＳＱＬ文５０４に出力し（ステップＳ８２５）た後、ステップＳ８２７の処理に移行する。
【０１１５】
ｐｕｔｆｌａｇが"０"の場合、プライマリーインデックス作成の場合かチェックする（ステップＳ８１７）。
【０１１６】
プライマリーインデックス作成の場合、プライマリーインデックス作成ＳＱＬ文をコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８１９）。
【０１１７】
プライマリーインデックス作成でない場合、ユニークインデックス作成ＳＱＬ文をコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８２２）。
【０１１８】
プライマリーまたはユニークインデックス作成ＳＱＬ文出力後、ｐｕｔｆｌａｇに"１"を設定する（ステップＳ８２７）。
【０１１９】
その後、当該項目名をコピーテーブル作成ＳＱＬ文５０４に出力し（ステップＳ８２９）、ステップＳ８１５の処理に戻り、以降、項目があるだけループし実行する（ステップＳ８５４）。
【０１２０】
このプライマリーまたはユニークインデックス作成ＳＱＬ文作成処理ループの後、インデックスを格納する表領域のパラメータをコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８３３）。
【０１２１】
そして、このプライマリー・ユニークインデックス作成処理後、さらに、インデックス作成ＳＱＬ文作成処理（ループ）を実行する（ステップＳ８５５）。
【０１２２】
まず、当該項目のＩＮＤＥＸの定義をチェックする（ステップＳ８３８，Ｓ８３９，Ｓ８４０，Ｓ８４３）。ＩＮＤＥＸの定義がない場合、何も実行せずループ処理を終了する。
【０１２３】
ＩＮＤＥＸの定義が"Ｂ"の場合（ステップＳ８３９）、ビットマップインデックス作成ＳＱＬ文とインデックスを格納する表領域のパラメータをコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８４０）。
【０１２４】
ＩＮＤＥＸの定義が"Ｉ"の場合（ステップＳ８４１）、ＢＴＲＥＥインデックス作成ＳＱＬ文とインデックスを格納する表領域のパラメータをコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８４２）。
【０１２５】
ＩＮＤＥＸの定義が"Ｄ"の場合（ステップＳ８４３）、Ｏｒａｃｌｅ  Ｔｅｘｔ作成ＳＱＬ文をコピーテーブル作成ＳＱＬ文５０４に出力し（ステップＳ８４４）、さらに、#ＩＭＴレクサー、#ＩＭＴセクショングループ、#ＩＭＴストレージのそれぞれが定義されているか否かを判別チェックする（ステップＳ８４５，Ｓ８４７，Ｓ８４９）。
【０１２６】
#ＩＭＴレクサーが定義されている場合（ステップＳ８４５）、定義されたレクサーをコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８４６）。
【０１２７】
#ＩＭＴセクショングループが定義されている場合（ステップＳ８４７）、定義されたセクショングループをコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８４８）。
【０１２８】
#ＩＭＴストレージが定義されている場合（ステップＳ８４９）、定義されたストレージをコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８５０）。
【０１２９】
以上のステップＳ８３８〜Ｓ８５０の処理を項目があるだけループし実行（ステップＳ８５５）した後、最後に、テーブルを分析するＳＱＬ文とＳＱＬＰＬＵＳを終了する命令文をコピーテーブル作成ＳＱＬ文５０４に出力する（ステップＳ８５１）。
【０１３０】
このコピーテーブル作成ＳＱＬ文作成処理部４０４の処理結果として、図２０Ａ，Ｂに詳細を示すコピーテーブル作成ＳＱＬ文５０４が生成される。尚、図２０Ａにおいては、コピーテーブル作成ＳＱＬ文のサンプル２００１を示し、図２０Ｂにおいては、コピーテーブル作成ＳＱＬ文の内容説明２００２を示している。
【０１３１】
次に、図９Ａ，Ｂを参照してテーブルリネームＳＱＬ文作成処理部４０５の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてテーブルリネームＳＱＬ文５０５を作成する処理である。図２１がテーブルリネームＳＱＬ文の詳細構成である。
【０１３２】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ９０１）。
【０１３３】
ＳＱＬエラーが発生した時点でロールバックを行い、リターンコード「１」を戻してＳＱＬＰＬＵＳを終了する命令文を、テーブルリネームＳＱＬ文５０５に出力する（ステップＳ９０２）。
【０１３４】
次にｕｎｉｑｆｌａｇを"１"に設定する（ステップＳ９０３）。尚、ｕｎｉｑｆｌａｇは、プライマリーまたはユニークインデックスを作成する項目があるか判定するフラグである。
【０１３５】
次に、以下のステップＳ９０４，Ｓ９０５の処理を項目があるだけループし実行する（ステップＳ９２０）。すなわち、当該項目にＫＥＹが定義されているかチェックし（ステップＳ９０４）、定義されていた場合、ｕｎｉｑｆｌａｇを"１"にする（ステップＳ９０５）。
【０１３６】
その後、ｕｎｉｑｆｌａｇをチェックする（ステップＳ９０６）。ｕｎｉｑｆｌａｇが"１"の場合、プライマリーまたはユニークインデックスリネームＳＱＬ文作成処理を項目が無くなるまでループ実行する（ステップＳ９２１）。
【０１３７】
このプライマリーまたはユニークインデックスリネームＳＱＬ文作成のループ処理では、まず当該項目にＫＥＹが定義されているか否かをチェックする（ステップＳ９０７）。
【０１３８】
ＫＥＹが設定されていなければ次の項目の処理に移り、ＫＥＹが設定されている場合、プライマリーインデックス作成の場合か否かをチェックする（ステップＳ９０８）。
【０１３９】
プライマリーインデックス作成の場合、正のプライマリーインデックスを別名にリネームするＳＱＬ文とコピーテーブルのプライマリーインデックスを正のプライマリーインデックス名にリネームするＳＱＬ文を、テーブルリネームＳＱＬ文５０５に出力する（ステップＳ９０９）。
【０１４０】
プライマリーインデックス作成でない場合、正のユニークインデックスを別名にリネームするＳＱＬ文とコピーテーブルのユニークインデックスを正のユニークインデックス名にリネームするＳＱＬ文を、テーブルリネームＳＱＬ文５０５に出力する（ステップＳ９１０）。
【０１４１】
この処理を項目があるだけループし実行する（ステップＳ９２１）。但し、プライマリーまたはユニークインデックスをリネームするＳＱＬ文出力後、このループを終了する（ステップＳ９１１）。
【０１４２】
以上のプライマリーまたはユニークインデックスリネームＳＱＬ文作成処理の後、次のインデックスリネームＳＱＬ文作成処理を、項目があるだけループして実行する（ステップＳ９２２）。
【０１４３】
まず、当該項目のＩＮＤＥＸの定義をチェックする（ステップＳ９１２，Ｓ９１３，Ｓ９１５）。
【０１４４】
ＩＮＤＥＸの定義が"Ｂ"または"Ｉ"の場合（ステップＳ９１３）、正のインデックスを別名にリネームするＳＱＬ文とコピーテーブルのインデックスを正のインデックスにリネームするＳＱＬ文を、テーブルリネームＳＱＬ文５０５に出力する（ステップＳ９１４）。
【０１４５】
ＩＮＤＥＸの定義が"Ｄ"の場合（ステップＳ９１５）、正のＯｒａｃｌｅ  Ｔｅｘｔを別名にリネームするＳＱＬ文とコピーテーブルのＯｒａｃｌｅ  Ｔｅｘｔを正のＯｒａｃｌｅ  Ｔｅｘｔ名にリネームするＳＱＬを、テーブルリネームＳＱＬ文５０５に出力する（ステップＳ９１６）。
【０１４６】
この処理を項目があるだけループし実行する（ステップＳ９２２）。
【０１４７】
このループ処理によるインデックスリネームＳＱＬ文作成後、正のテーブルを別名にリネームするＳＱＬ文とコピーテーブルを正のテーブル名にリネームするＳＱＬ文を、テーブルリネームＳＱＬ文５０５に出力する（ステップＳ９１７）。
【０１４８】
そして最後に、ＳＱＬＰＬＵＳを終了する命令文をテーブルリネームＳＱＬ文５０５に出力する（ステップＳ９１８）
【０１４９】
このテーブルリネームＳＱＬ文作成処理部４０５の処理結果として、図２１に詳細を示すテーブルリネーム作成ＳＱＬ文５０５が生成される。尚、図２１においては、テーブルリネームＳＱＬ文のサンプル２１０１と、その内容説明２１０２を示している。
【０１５０】
次に、図１０を参照して、旧テーブル削除ＳＱＬ文作成処理部４０６の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にして旧テーブル削除ＳＱＬ文５０６を作成する処理である。図２２が旧テーブル削除ＳＱＬ文５０６の詳細構成である。
【０１５１】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ１００１）。
【０１５２】
次に、ＳＱＬエラーが発生した時点でロールバックを行い、リターンコード「１」を戻してＳＱＬＰＬＵＳを終了する命令文を、旧テーブル削除ＳＱＬ文５０６に出力する（ステップＳ１００２）。
【０１５３】
次に、旧テーブルを削除するＳＱＬ文を、旧テーブル削除ＳＱＬ文５０６に出力する（ステップＳ１００３）。
【０１５４】
最後に、ＳＱＬＰＬＵＳを終了する命令文"ＥXＩＴ"を、テーブルリネームＳＱＬ文５０５に出力する（ステップＳ９１８）
【０１５５】
この旧テーブル削除ＳＱＬ文作成処理部４０６の処理結果として、図２２に詳細を示す旧テーブル削除ＳＱＬ文５０６が生成される。尚、図２２においては、旧テーブル削除ＳＱＬ文のサンプル２２０１と、その内容説明２２０２を示している。
【０１５６】
次に図１１を参照してＳＱＬ*Ｌｏａｄｅｒ用制御文作成処理部４０７の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてＳＱＬ*Ｌｏａｄｅｒ用制御文５０７を作成する処理である。図２３がＳＱＬ*Ｌｏａｄｅｒ用制御文５０７の詳細構成である。
【０１５７】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ１１０１）。
【０１５８】
次に、ＳＱＬ*ＬＯＡＤＥＲ用制御パラメータをＳＱＬ*ＬＯＡＤＥＲ用制御文５０７に出力する（ステップＳ１１０２）。
【０１５９】
次に、cｎｔに"１"を設定する。これは、レコード内の当該項目の開始位置を示す。
【０１６０】
次に、ＳＱＬ*ＬＯＡＤＥＲ用制御文作成処理を、項目がなくなるまでループ処理として実行する（ステップＳ１１１５）。
【０１６１】
まず、当該項目の型をチェックする（ステップＳ１１０４，Ｓ１１０６，Ｓ１１０８）。
【０１６２】
型が"０"または"９"の場合（ステップＳ１１０４）、ｔyｐｅに"ＤＥＣＩＭＡＬ  ＥXＴＥＲＮＡＬ"、ｌｅｎに桁を設定し、ＳＱＬ*ＬＯＡＤＥＲ用制御文５０７に出力する（ステップＳ１１０５）。
【０１６３】
型が"Ｘ"の場合（ステップＳ１１０６）、ｔyｐｅに"ＣＨＡＲ"、ｌｅｎに桁を設定し、ＳＱＬ*ＬＯＡＤＥＲ用制御文５０７に出力する（ステップＳ１１０７）。
【０１６４】
型が"Ｋ"の場合（ステップＳ１１０８）、ｔyｐｅに"ＣＨＡＲ"、ｌｅｎに桁を２倍した値を設定し、ＳＱＬ*ＬＯＡＤＥＲ用制御文５０７に出力する（ステップＳ１１０９）。
【０１６５】
尚、ｔyｐｅは、ＳＱＬ*Ｌｏａｄｅｒで使用する項目の型が設定される。また、ｌｅｎは、項目のバイト数が設定される。
【０１６６】
ｔyｐｅとｌｅｎに値を設定後、当該項目をローディングするＳＱＬ*Ｌｏａｄｅｒ制御文を、ＳＱＬ*ＬＯＡＤＥＲ用制御文５０７に出力する（ステップＳ１１１０）。
【０１６７】
次に、まだ項目があるかチェックする（ステップＳ１１１１）。
【０１６８】
まだ次の項目がある場合、"，"をＳＱＬ*ＬＯＡＤＥＲ用制御文５０７に出力し（ステップＳ１１１１）、なければそのまま、cｎｔにｌｅｎを加算する（ステップＳ１１１３）。
【０１６９】
以上のステップＳ１１０４〜Ｓ１１１３の処理を、項目があるだけループし実行した後（ステップＳ１１１５）、最後に、"）"をＳＱＬ*ＬＯＡＤＥＲ用制御文５０７に出力する（ステップＳ１１１４）。
【０１７０】
このＳＱＬ*ＬＯＡＤＥＲ用制御文作成処理部４０７の処理結果として、図２３に詳細を示すＳＱＬ*ＬＯＡＤＥＲ用制御文５０７が生成される。尚、図２３においては、ＳＱＬ*ＬＯＡＤＥＲ用制御文のサンプル２３０１と、その内容説明２３０２を示している。
【０１７１】
次に、図１２Ａ，Ｂを参照して、テーブル引上げＳＱＬ文作成処理部４０８の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてテーブル引上げＳＱＬ文５０８を作成する処理である。図２４Ａ，Ｂに、テーブル引上げＳＱＬ文５０８の詳細構成を示す。
【０１７２】
まず、データベース設計書ＣＳＶ３０３の桁をサマリして、１レコードのバイト数を取得する（ステップＳ１２０１）。
【０１７３】
次に、ＳＱＬエラーが発生した時点でロールバックを行いＳＱＬ*Ｐｌｕsはリターンコード「１」を戻して終了させる命令文、１行に表示する文字数を指定するＳＱＬＰＬＵＳコマンド、レポートへの列ヘッダーを非出力に指定するＳＱＬＰＬＵＳコマンド、出力レコード数を非出力に指定するＳＱＬＰＬＵＳコマンド、各ページの行数を指定するＳＱＬＰＬＵＳコマンド、スクリプトから実行したコマンドを非表示に指定するＳＱＰＬＵＳコマンド、列の間の文字を非出力する指定するＳＱＬＰＬＵＳコマンド、ファイルへ出力を開始する命令文を、テーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２０２）。
【０１７４】
次に、データベース設計書ＣＳＶ３０３の情報を読み込み（ステップＳ１２０６）、以下のデータ出力書式設定処理を、項目があるだけループ実行する（ステップＳ１２１５）。
【０１７５】
まず、当該項目の型をチェックする（ステップＳ１２０３，Ｓ１２０５）。
【０１７６】
型が"Ｘ"または"０"または"９"の場合（ステップＳ１２０３）、列の出力書式文（"ＣＯＬ  Ａ"桁  "ＦＯＲ  Ａ"桁）をテーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２０４）。
【０１７７】
型が"Ｋ"の場合（ステップＳ１２０５）、列の出力書式文（"ＣＯＬ  Ａ"桁＊２  "ＦＯＲ  Ａ"桁＊２）をテーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２０６）。
【０１７８】
以上の処理を項目があるだけループし実行した後（ステップＳ１２１５）、次に、データ出力命令文"ＳＥＬＥＣＴ"をテーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２０７）。
【０１７９】
さらに、データベース設計書ＣＳＶ３０３の情報を読み込み（ステップＳ１２１８）、以下のテーブル引上げＳＱＬ文作成処理を、項目がなくなるまでループ実行する（ステップＳ１２１７）。
【０１８０】
まず、当該項目の型をチェックする（ステップＳ１２０８，Ｓ１２１０，Ｓ１２１２）。
【０１８１】
型が"０"または"９"の場合（ステップＳ１２０８）、数値型の項目出力文をテーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２０９）。
【０１８２】
型が"Ｘ"の場合（ステップＳ１２１０）、ＶＥＲＣＨＡＲ型の項目出力文をテーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２１１）。
【０１８３】
型が"Ｋ"の場合（ステップＳ１２１２）、ＮＶＥＲＣＨＡＲ型の項目出力文をテーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２１３）。
【０１８４】
以上の処理を項目があるだけループし実行した後（ステップＳ１２１７）、最後に、抽出対象テーブル、ファイルへの出力を終了する命令文、実行したコマンドを表示する命令文、ＳＱＬＰＬＵＳを終了する命令文を、テーブル引上げＳＱＬ文５０８に出力する（ステップＳ１２１４）。
【０１８５】
このテーブル引上げＳＱＬ文作成処理部４０８の処理結果として、図２４に詳細を示すテーブル引上げＳＱＬ文５０８が生成される。尚、図２４Ａにおいては、テーブル引上げＳＱＬ文のサンプル２４０１を示し、図２４Ｂにおいては、その内容説明２４０２を示している。
【０１８６】
次に、図２５を用いて、以上の図２〜図１２Ｂで示した各処理で作成した各ＳＱＬ文を用いたデータベース作成の流れを説明する。図２５においては、バッチ処理サーバ２５０１およびＷＥＢサーバ２５０８のそれぞれのコンピュータ上での各ＳＱＬ文の処理概要を示している。
【０１８７】
まず、バッチ処理サーバ２５０１において、テーブル作成ＳＱＬ文５０１で、データを格納する表であるサンプルテーブル２５０３を作成する（ステップＳ２５０１）。
【０１８８】
次に、ＳＱＬ*Ｌｏａｄｅｒ用制御文（図中「ＳＱＬ*Ｌｏａｄｅｒ用制御ファイル」と記載）５０７で、データベース設計書１０１に定義されている固定長のデータである入力ファイル２５０２を、サンプルテーブル２５０３にローディングする（ステップＳ２５０２）。
【０１８９】
さらに、インデックス作成ＳＱＬ文５０２で、サンプルテーブル２５０３に、インデックス作成、ＮＯＴ  ＮＵＬＬ制約作成、テーブルの分析を行い（ステップＳ２５０３）、インデックス削除ＳＱＬ文５０３で、サンプルテーブル２５０３からインデックス削除、ＮＯＴ  ＮＵＬＬ制約削除を行う（ステップＳ２５０４）。
【０１９０】
そして、コピーテーブル作成ＳＱＬ文５０４で、バッチ処理サーバ２５０１のサンプルテーブル２５０３を、ＷＥＢサーバ２５０８にコピーして、コピーサンプルテーブル２５０５を生成する（ステップＳ２５０７）。
【０１９１】
ＷＥＢサーバ２５０８においては、まず、コピーサンプルテーブル２５０５を、テーブルリネームＳＱＬ文５０５で、正のテーブルとしてのサンプルテーブル２５０６にリネームする（ステップＳ２５０８）。
【０１９２】
さらに、ＷＥＢサーバ２５０８では、テーブルリネームＳＱＬ文５０５で、正のテーブルとしてのサンプルテーブル２５０６を別名、すなわち、旧サンプルテーブル２５０７にリネームする（ステップＳ２５０９）。
【０１９３】
また、旧テーブル削除ＳＱＬ文５０６で、別名にリネームした旧サンプルテーブル２５０７を削除する（ステップＳ２５１０）。
【０１９４】
一方、バッチ処理サーバ２５０１においては、テーブル引上げＳＱＬ文５０８で、サンプルテーブル２５０３のバックアップファイル２５０４を作成する（ステップＳ２５０５）。尚、このバックアップファイル２５０４は、データベース設計書１０１に定義されている固定長のデータである。
【０１９５】
また、ＳＱＬ*Ｌｏａｄｅｒ用制御ファイル５０７で、バックアップファイル２５０４をサンプルテーブル２５０３にローディングすることができる（ステップＳ２５０６）。
【０１９６】
以上のようにして、本例のデータベース構築支援システムでは、プログラムされたコンピュータによって、データベース設計書１０１の情報を基に、データベースを構築する上で必要となる、テーブル定義のドキュメントと共に、データベースにおけるテーブル作成ＳＱＬ文、テーブルにデータをローディングするＳＱＬ*Ｌｏａｄｅｒ制御文、テーブルバックアップ取得ＳＱＬ文、テーブル本番環境移行ＳＱＬ文、さらにテーブル定義のドキュメントを自動で生成することができる。
【０１９７】
次に、図２６Ａ，Ｂを参照してＤＢアクセスモジュール作成処理部４０９の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にして、ＤＢアクセスモジュール５０９を作成する処理である。
【０１９８】
まず、データベース設計書ＣＳＶ３０３の情報を読み込む（ステップＳ２６０１）。
【０１９９】
次に、変数および宣言文をＤＢアクセスモジュール５０９に出力する（ステップＳ２６０２，Ｓ２６０３）。
【０２００】
次に、データベース設計書ＣＳＶ３０３の情報に基づいて、ホスト変数（ＥＸＥＣ  ＳＱＬ  ＢＥＧＩＮ  ＤＥＣＬＡＲＥ，  ＳＥＣＴＩＯＮ；，  ＶＡＲＣＨＡＲ句）をＤＢアクセスモジュール５０９に出力する（ステップＳ２６０４）。
【０２０１】
次に、データベース設計書ＣＳＶ３０３の情報に基づいて、テーブルを検索するＳＱＬ文（複数レコード抽出用）を、ＤＢアクセスモジュール５０９に出力する（ステップＳ２６０５）。ここでは、ＳＥＬＥＣＴ句は項目名、ＦＲＯＭ句はテーブル名、ＷＨＥＲＥ句とＯＲＤＥＲ  ＢＹ句は、ＣＧＩプログラムから引数として取得する変数名を出力する。
【０２０２】
次に、ＳＱＬ解析文（ＥＸＥＣ  ＳＱＬ  ＰＲＥＰＡＲＥ  ｘｘｘ  ＦＲＯＭ  ｘｘｘ：）をＤＢアクセスモジュール５０９に出力する（ステップＳ２６０６）。
【０２０３】
次に、解析後のＳＱＬ文をカーソルにバインドする文（ＥＸＥＣ  ＳＱＬ  ＤＥＣＬＡＲＥ  ｘｘｘ  ＣＵＲＳＯＲ）をＤＢアクセスモジュール５０９に出力する（ステップＳ２６０７）。
【０２０４】
次に、カーソルオープン処理文（ＥＸＥＣ  ＳＱＬ  ＯＰＥＮ  ｘｘｘ；）をＤＢアクセスモジュール５０９に出力する（ステップＳ２６０８）。
【０２０５】
次に、フェッチ処理文（ＥＸＥＣ  ＳＱＬ  ＦＥＴＣＨ  ｘｘｘ  ＩＮＴＯｘｘｘ；）をＤＢアクセスモジュール５０９に出力する（ステップＳ２６０９）。
【０２０６】
次に、カーソルクローズ処理文（ＥＸＥＣ  ＳＱＬ  ＣＬＯＳＥ  ｘｘｘ；）をＤＢアクセスモジュール５０９に出力する（ステップＳ２６１０）。
【０２０７】
次に、データベース設計書ＣＳＶ３０３に基づいて，テーブルを検索するＳＱＬ文（単一レコード抽出用、ＥＸＥＣ  ＳＱＬ      ＳＥＬＥＣＴ  ｘｘｘ  ＩＮＴＯ  ｘｘｘ  ＦＲＯＭ  ｘｘｘ  ＷＨＥＲＥ  ｘｘｘ）をＤＢアクセスモジュール５０９に出力する（ステップＳ２６１１）。尚、ＳＥＬＥＣＴ句は項目名、ＦＲＯＭ句はテーブル名、ＷＨＥＲＥ句はテーブルのプライマリーキー項目を出力する。
【０２０８】
次に、引数チェック処理文をＤＢアクセスモジュール５０９に出力する（ステップＳ２６１２）。
【０２０９】
このＤＢアクセスモジュール作成処理部４０９の処理結果として、以下にサンプルとして示すＤＢアクセスモジュールが生成される。尚、図２８においては、このように生成されたＤＢアクセスモジュールのサンプルの内容説明２８０１を示している。
【０２１０】
ＤＢアクセスモジュールのサンプル  
行番号      サンプルデータ  
1        #ifndef  WIN32  
2        #define  NOT_DLL  
3        #endif  
4        #include  <stdlib.h>  
5        #include  <stdio.h>  
6        #include  <ctype.h>  
7        #include  <string.h>
8        #ifndef  WIN32
9        #include  <unistd.h>
10        #endif
11
12        #include  <sqlca.h>
13
14        #include  <oraca.h>
15
16        EXEC  ORACLE  OPTION  (ORACA=YES);
17
18        EXEC  ORACLE  OPTION  (RELEASE_CURSOR=YES);
19
20        #ifndef  NOT_DLL
21        #define  DllImport  _declspec(dllimport)
22        #define  DllExport  _declspec(dllexport)
23        #endif
24
25        #define  FETCH_BU  50/*  フェッチバッファ配列数  */
26        #define  REC_NOT_(1403L)
27
28        extern  lget_count(char  *table,char  *joken,int  jokenlen,char  *hint);
29        extern  ichk_space(char  *buf);
30        extern  vpadding_copy(char  *dbuf,char  *sbuf,short  max,char  type);
31        extern  vset_hint(char  *hint);
32        extern  vSAMPLE1_select(char  *errbuf,char  *keybuf1,char  *databuf);
33        static  lSAMPLE1_datafetch(void);
34        static  vrectobuf(char  *databuf,int  reccnt);
35        static  icheck_key(char  *wherebuf,char  *keybuf1);
36        static  lfetch_rows;  /*  フェッチ行  */
37        static  sfetch_cn/*  フェッチ数  */
38        static  lmax_cnt;
39        static  cend_flag;
40        static  iselectflag;
41        static  iselfetflag;
42        static  ckeybuf1[1024];
43        extern  c*hintptr;                /*  ヒント格納ポインタ  */
44
45        EXEC  SQL  BEGIN  DECLARE  SECTION;
46                    /*  フェッチ用構造体  */
47        static  struct  fetch_rec  {
48        VARCcolumn1[11];  /*  ＫＥＹ部  */
49        VARCcolumn2[21];  /*  ＤＡＴＡ部  */
50        }    rec[FETCH_BUFFER_COUNT];
51
52                    /*  フェッチ用指標変数構造体  */
53        static  struct  fetch_ind  {
54        shorcolumn1;    /*  ＫＥＹ部  */
55        shorcolumn2;    /*  ＤＡＴＡ部  */
56        }    rec_ind[FETCH_BUFFER_COUNT];
57        static  VARCHAR    key1[11];
58        EXEC  SQL  END  DECLARE  SECTION;
59        static  cselbuf[30];
60
61        /*
62        *    SAMPLE1_open  :  サンプルテーブル１オープン
63        */
64        #ifndef  NOT_DLL
65        DllExport
66        #endif
67        void  SAMPLE1_open(char  *errbuf,char  *wherebuf,char  *orderbuf,char
*count)
68        {
69        EXEC  SQL  BEGIN  DECLARE  SECTION;
70        VARCbuf[16384];  /*  ＳＱＬバッファ  */
71        EXEC  SQL  END  DECLARE  SECTION;
72        chartmpbuf[16384];
73        longerrcode;
74        longcnt;
75        char*wherep;
76        int    wherelen;
77        char*p;
78        int    i;
79
80        if(check_key(wherebuf,keybuf1))  {
81        SAMPLE1_select(errbuf,keybuf1,selbuf);
82        strncpy(tmpbuf,errbuf,5);
83        tmpbuf[5]  =  '\0';
84        errcode  =  atoi(tmpbuf);
85        if(errcode  ==  0)  {
86        strncpy(count,"0000001",7);
87        }
88        selectflag  =  1;
89        if(errcode  ==  1403)  {
90        strncpy(count,"0000000",7);
91        strncpy(errbuf,"00000",5);
92        selfetflag  =  1;
93        }
94        else  {
95        selfetflag  =  0;
96        }
97        return;
98        }
99
100              /*  ＳＱＬ文作成  */
101        strcpy((char  *)buf.arr,"SELECT  ");
102        if(hintptr  !=  (char  *)NULL)  {
103        strcat((char  *)buf.arr,hintptr);
104        strcat((char  *)buf.arr,"  ");
105        }
106        strcat((char  *)buf.arr,"ＫＥＹ部,");
107        strcat((char  *)buf.arr,"ＤＡＴＡ部  ");
108        strcat((char  *)buf.arr,"FROM  サンプルテーブル１");
109        buf.len  =  strlen((char  *)buf.arr);
110
111                    /*  検索条件付加  */
112        if(chk_space(wherebuf))  {
113        strcat((char  *)buf.arr,"  WHERE  ");
114        buf.len  =  strlen((char  *)buf.arr);
115        p  =  &(wherebuf[7999]);
116        while(*p  ==  '  '  ||  *p  ==  0)  {
117        p--;
118        }
119        wherelen  =  p-wherebuf+1;
120        memcpy(&(buf.arr[buf.len]),wherebuf,wherelen);
121        buf.len  +=  wherelen;
122        buf.arr[buf.len]  =  '\0';
123        wherep  =  wherebuf;
124        }
125        else  {
126        wherelen  =  0;
127        wherep  =  (char  *)NULL;
128        }
129
130                    /*  ソート条件付加  */
131      if(chk_space(orderbuf))  {
132        strcpy(tmpbuf,"  ORDER  BY  ");
133        strcat(tmpbuf,orderbuf);
134        memcpy((char  *)&(buf.arr[buf.len]),tmpbuf,strlen(tmpbuf));
135        buf.len  +=  strlen(tmpbuf);
136        buf.arr[buf.len]  =  '\0';
137        }
138
139                    /*  エラーが発生しても継続  */
140        EXEC  SQL  WHENEVER  SQLERROR  CONTINUE;
141
142                    /*  ＳＱＬ文解析  */
143        EXEC  SQL  PREPARE  S_SAMPLE1  FROM  :buf;
144
145                    /*  ＳＱＬ文をカーソルにバインド  */
146        if  (sqlca.sqlcode  ==  0)  {
147        EXEC  SQL  DECLARE  c_SAMPLE1  CURSOR  FOR  S_SAMPLE1;
148        }
149
150                    /*  カーソルオープン  */
151        if  (sqlca.sqlcode  ==  0)  {
152            EXEC  SQL  OPEN  c_SAMPLE1;
153        }
154
155        if  (sqlca.sqlcode  ==  0)  {
156        cnt  =  get_count("サンプルテーブル１",wherep,wherelen,hintptr);
157        hintptr  =  (char  *)NULL;
158
159                    /*  エラー発生  */
160        if  (cnt  <  0)  {
161        sqlca.sqlcode  =  cnt;
162        }
163        else  {
164                    /*  返却用件数作成  */
165        sprintf(tmpbuf,"%07d",cnt);
166        strncpy(count,tmpbuf,7);
167          }
168        }
169
170        fetch_rows  =  0;  /*  フェッチ行数のクリア  */
171        fetch_cnt  =  FETCH_BUFFER_COUNT;
172        end_flag  =  0;
173
174        errcode  =  abs(sqlca.sqlcode);
175                    /*  エラーコードが５桁以上  */
176        if  (errcode  >=  100000L)  {
177        errcode  =  99999L;
178        }
179
180                    /*  返却用エラーコード作成  */
181        sprintf(tmpbuf,"%05d",errcode);
182        strncpy(errbuf,tmpbuf,5);
183
184        return;
185        }
186
187        static  long  SAMPLE1_datafetch(void)
188        {
189        longerrcode;
190
191        if(fetch_cnt  >=  FETCH_BUFFER_COUNT)  {
192                    /*  エラーが発生したらジャンプ  */
193        EXEC  SQL  WHENEVER  SQLERROR  GOTO  errexit;
194
195                    /*  NOT  FOUNDは継続  */
196        EXEC  SQL  WHENEVER  NOT  FOUND  CONTINUE;
197
198        EXEC  SQL  FETCH  c_SAMPLE1
199        INTO  :rec  INDICATOR  :rec_ind;
200
201                    /*  フェッチ数クリア  */
202        fetch_cnt  =  0;
203                    /*  フェッチでデータを取得した場合  */
204        if  (fetch_rows  <  sqlca.sqlerrd[2])  {
205        max_cnt  =  sqlca.sqlerrd[2]  -  fetch_rows;
206                    /*  フェッチ行更新  */
207        fetch_rows  =  sqlca.sqlerrd[2];
208        if  (sqlca.sqlcode  ==  REC_NOT_FOUND)  {
209        end_flag  =  1;
210        }
211        }
212        }
213
214        errexit:
215        errcode  =  abs(sqlca.sqlcode);
216
217        return  errcode;
218        }
219
220        /*
221        *    SAMPLE1_fetch  :  サンプルテーブル１フェッチ
222        */
223        #ifndef  NOT_DLL
224        DllExport
225        #endif
226        void  SAMPLE1_fetch(char  *errbuf,char  *databuf)
227        {
228        longerrcode;
229        chartmpbuf[6];
230
231                    /*  入力バッファチェック  */
232        if(databuf  ==  (char  *)NULL)  {
233        return;
234        }
235
236        if(selectflag)  {
237        if(selfetflag)  {
238        strncpy(errbuf,"01403",5);
239        }
240        else  {
241        strncpy(databuf,selbuf,30);
242        strncpy(errbuf,"01403",5);
243        selfetflag  =  1;
244        }
245        return;
246        }
247
248        sqlca.sqlcode  =  (0L);
249
250                    /*  フェッチ  */
251        if((errcode  =  SAMPLE1_datafetch())  <  0)  {
252        if  (errc/*  エラーコードが５桁以上  */
253        errcode  =  99999L;
254        }
255
256        sprintf(tmpbuf,"%05d",errcode);
257        memcpy(errbuf,tmpbuf,5);
258
259        return;
260        }
261
262        if  (!end_flag  ||  ((long)fetch_cnt  <  max_cnt))  {
263        rectobuf(databuf,fetch_cnt);
264        }
265
266        fetch_cnt++;
267
268        if(!end_flag)  {
269        errcode  =  SAMPLE1_datafetch();
270        }
271
272        if  (end_flag)  {
273        if  ((long)fetch_cnt  <  max_cnt)  {
274        errcode  =  (0L);
275        }
276        else  {
277        errcode  =  REC_NOT_FOUND;
278        }
279        }
280
281        if  (/*  エラーコードが５桁以上  */
282        errcode  =  99999L;
283        }
284
285        sprintf(tmpbuf,"%05d",errcode);
286        strncpy(errbuf,tmpbuf,5);
287
288        return;
289        }
290
291        /*
292        *    SAMPLE1_close  :  サンプルテーブル１クローズ
293        */
294        #ifndef  NOT_DLL
295        DllExport
296        #endif
297        void  SAMPLE1_close(void)
298        {
299        if(selectflag)  {
300        selectflag  =  0;
301        selfetflag  =  0;
302        return;
303        }
304
305        EXEC  SQL  WHENEVER  SQLERROR  CONTINUE;
306        EXEC  SQL  CLOSE  c_SAMPLE1;
307
308
309        static  void  rectobuf(char  *databuf,int  reccnt)
310        {
311        char*datap;
312
313        datap  =  databuf;
314
315                    /*  ＫＥＹ部  */
316        if(rec_ind[reccnt].column1  ==  (short)-1)  {
317        rec[reccnt].column1.len  =  0;
318        }
319        rec[reccnt].column1.arr[rec[reccnt].column1.len]  =  '\0';
320        padding_copy(datap,(char  *)rec[reccnt].column1.arr,10,'X');
321        datap  +=  10;
322
323                    /*  ＤＡＴＡ部  */
324        if(rec_ind[reccnt].column2  ==  (short)-1)  {
325        rec[reccnt].column2.len  =  0;
326        }
327        rec[reccnt].column2.arr[rec[reccnt].column2.len]  =  '\0';
328        padding_copy(datap,(char  *)rec[reccnt].column2.arr,20,'X');
329        datap  +=  20;
330
331        return;
332        }
333
334        /*
335        *    SAMPLE1_select  :  サンプルテーブル１セレクト
336        */
337        #ifndef  NOT_DLL
338        DllExport
339        #endif
340        void  SAMPLE1_select(char  *errbuf,char  *keybuf1,char  *databuf)
341        {
342        char*datap;
343        chartmpbuf[6];
344        longerrcode;
345
346                    /*  入力バッファチェック  */
347        if(databuf  ==  (char  *)NULL)  {
348        return;
349        }
350
351        datap  =  databuf;
352
353        memset(key1.arr,0,sizeof(key1.arr));
354        strncpy((char  *)key1.arr,keybuf1,10);
355        key1.len  =  strlen((char  *)key1.arr);
356
357                    /*  エラーが発生したらジャンプ  */
358        EXEC  SQL  WHENEVER  SQLERROR  GOTO  errexit;
359        EXEC  SQL  WHENEVER  NOT  FOUND  GOTO  errexit;
360
361                    /*  ＳＱＬ文実行  */
362        EXEC  SQL
363        SELECT
364        ＫＥＹ部,
365        ＤＡＴＡ部
366        INTO
367        :rec[0]
368        INDICATOR
369        :rec_ind[0]
370        FROM
371        サンプルテーブル１
372        WHERE
373        ＫＥＹ部  =  :key1;
374
375        rectobuf(databuf,0);
376
377        errexit:
378        errcode  =  abs(sqlca.sqlcode);
379
380        if  (/*  エラーコードが５桁以上  */
381        errcode  =  99999L;
382        }
383
384
385        static  int  check_key(char  *wherebuf,char  *keybuf1)
386        {
387        char*inptr;
388        char*datap;
389        char*ptr;
390        int    cnt;
391        int    substrflag;
392        int    keyflag1;
393
394        inptr  =  wherebuf;
395        substrflag  =  0;
396        keyflag1  =  0;
397
398        /*  先頭のスペース読み飛ばし  */
399        while(isspace(*inptr))  {
400        inptr++;
401        }
402
403        /*  全角文字チェック  */
404        if(!(*inptr  &  0x80))  {
405        return  0;
406        }
407
408        for  (cnt=0;cnt<1;cnt++)  {
409        /*  トークン間のスペース読み飛ばし  */
410        while(isspace(*inptr))  {
411        inptr++;
412        }
413
414        /*  SUBSTR読み飛ばし処理  */
415        if(!strncmp(inptr,"SUBSTR",6)  ||  !strncmp(inptr,"substr",6))  {
416        inptr  +=  6;
417        substrflag  =  1;
418        /*  '('  or  スペース読み飛ばし  */
419        while(isspace(*inptr)  ||  *inptr  ==  '(')  {
420        inptr++;
421        }
422        }
423
424        if(!strncmp(inptr,"ＫＥＹ部",8))  {
425        datap  =  keybuf1;
426        keyflag1  =  1;
427        inptr  +=  8;
428        }
429        else  {
430        return  0;
431        }
432
433        /*  SUBSTR読み飛ばし処理  */
434        if(substrflag)  {
435        substrflag  =  0;
436        /*  ')'の位置検索  */
437        ptr  =  strchr(inptr,')');
438        if(ptr  ==  (char  *)NULL)  {
439        return  0;
440        }
441        inptr  =  ptr  +  1;
442        }
443
444        /*  トークン間のスペース読み飛ばし  */
445        while(isspace(*inptr))  {
446        inptr++;
447        }
448
449        /*  ＝チェック  */
450        if(*inptr  !=  '=')  {
451        return  0;
452        }
453        inptr++;
454
455        /*  トークン間のスペース読み飛ばし  */
456        while(isspace(*inptr))  {
457        inptr++;
458        }
459
460        if(*inptr  =='\'')  {  /*  シングルクォートの場合  */
461        /*  シングルクォート読み飛ばし  */
462        inptr++;
463
464        /*  対応するシングルクォートの位置検索  */
465        ptr  =  strchr(inptr,'\'');
466        if(ptr  ==  (char  *)NULL)  {
467        return  0;
468        }
469
470        /*  キー項目コピー  */
471        strncpy(datap,inptr,ptr-inptr);
472        datap[ptr-inptr]  =  '\0';
473
474        inptr  =  ptr  +  1;
475        }
476        else  {            /*  値の場合  */
477        /*  スペースの位置検索  */
478        ptr  =  strchr(inptr,'  ');
479        if(ptr  ==  (char  *)NULL)  {      /*  NULLの場合  */
480        /*  文字列の最終位置をセット  */
481        ptr  =  inptr  +  strlen(inptr);
482        }
483
484        /*  キー項目コピー  */
485        strncpy(datap,inptr,ptr-inptr);
486        datap[ptr-inptr]  =  '\0';
487
488        inptr  =  ptr;
489        }
490
491        /*  トークン間のスペース読み飛ばし  */
492        while(isspace(*inptr))  {
493        inptr++;
494        }
495
496        /*  検索条件終了チェック  */
497        if(*inptr  ==  '\0')  {
498        break;
499        }
500
501        /*  AND条件チェック  */
502        if(strncmp(inptr,"AND",3)  &&  strncmp(inptr,"and",3))  {
503        return  0;
504        }
505        inptr  +=  3;
506        }
507
508        if(keyflag1  &&  cnt  <  1)  {
509        return  1;
510        }
511
512        return  0;
513        }
【０２１１】
次に、図２７を参照してコピー文作成処理部４１０の処理動作について説明する。これは、データベース設計書ＣＳＶ３０３の情報を基にしてコピー文３１０を作成する処理である。尚、図２９に、作成したコピー文３１０の詳細構成を示す。
【０２１２】
まず、データベース設計書ＣＳＶ３０３の情報を読み込み（ステップＳ２７０１）、次に、データベース設計書ＣＳＶ３０３の項目があるだけループし、テーブル名、項目名、桁数をコピー文５１０に出力する（ステップＳ２７０２，Ｓ２７０３）。
【０２１３】
このコピー文作成処理部４１０の処理結果として、図２９に詳細を示すコピー文５０８が生成される。尚、図２９においては、コピー文のサンプル２９０１と、その内容説明２９０２を示している。
【０２１４】
次に、図３０を用いて、以上の図２６，２７で示した各処理で作成したＤＢアクセスモジュールとコピー文を用いたＣＧＩプログラム処理の流れを説明する。図３０においては、データベース装置３００１，３００３のそれぞれのコンピュータ上でのＤＢアクセスモジュールとコピー文を用いた処理概要を示している。
【０２１５】
データベース装置３００１においては、主キーを条件にテーブルを検索する動作を実行しており、ＣＧＩ処理部３００２は、ＷＨＥＲＥ句に主キーの値を設定し、ＳＱＬを実行して、サンプルテーブル２５０６にアクセスし、１レコードのデータをコピー文に取得する。
【０２１６】
データベース装置３００３においては、主キー以外を条件にテーブルを検索する動作を実行しており、ＣＧＩ処理部３００４は、ＷＨＥＲＥ句に主キー以外の項目と値を設定し、サンプルテーブル２５０６に対するカーソルオープンを実行し、ＣＧＩ処理部３００５は、フェッチ処理により、サンプルテーブル２５０６から複数レコードのデータをコピー文に取得し、ＣＧＩ処理部３００６は、サンプルテーブル２５０６に対するカーソルクローズを実行する。
【０２１７】
以上、図１〜図３０を用いて説明したように、本例では、プログラムされたコンピュータによって、データベースの構築を支援するシステムを構成し、データベース設計書１０１の情報を基に、テーブル定義のドキュメント（テーブル一覧表３０１、テーブル定義書３０２）を自動で生成すると共に、データベース設計書ＣＳＶ３０３を生成し、そして、このデータベース設計書ＣＳＶ３０３を基に、データベースにおけるテーブル作成ＳＱＬ文と、テーブルにデータをローディングするＳＱＬ*Ｌｏａｄｅｒ制御文、テーブルバックアップ取得ＳＱＬ文、テーブル本番環境移行ＳＱＬ文を自動で生成する。テーブル定義のドキュメントを自動で生成する。
【０２１８】
すなわち、本システムは、データベース構築において開発と保守運用の全般を考慮しており、データベース設計書１０１の情報を基に作成された各ＳＱＬ文を利用することで、テーブルの作成、テーブルへのデータのローディング、バックアップデータの取得、テーブルの本番環境へ移行など、データベースを構築する上で必要となるＳＱＬ文を自動で生成することができる。
【０２１９】
さらに、本システムでは、ＣＧＩプログラムからテーブル全項目を固定長で１レコードおよび複数レコード抽出するモジュール（ＤＢアクセスモジュール）と、このＤＢアクセスモジュールで抽出したデータを格納する変数定義ファイル（コピー文）を、データベース設計書ＣＳＶ３０３を基に、自動で生成することができる。
【０２２０】
このように、本例によれば、（１）データベースを管理する上で必要となるテーブル定義のドキュメント、（２）データをテーブルに取込むために必要となるローディング制御文、（３）システムを保守運用する上で必須となるデータのバックアップを取得するＳＱＬ文、（４）新規作成したテーブルや更新したテーブルを本番環境に移行するＳＱＬ、（５）ＤＢアクセスモジュールとコピー文を含む、それぞれデータベースを構築する上で必要となるＳＱＬ文などを、データベース設計書１０１から自動生成したデータベース設計書ＣＳＶ３０３の情報を基に、自動で生成することができるので、開発や保守運用の工数を削減することが可能となると共に、それぞれ、必ず整合性が取れたものとなる。
【０２２１】
これにより、従来の技術の問題点、すなわち、データベース設計書の内容に対応するデータベース定義ＳＱＬ文（テーブル作成・インデックス作成）のみを作成できるだけであり、データベースを構築する上で必要となるその他のＳＱＬ文やテーブル定義に関するドキュメントは、人手により作成しなければならない点と、ＣＧＩプログラムからテーブルを検索するＳＱＬ文も人手により作成しなければならない点を解決し、データベースの開発工数を軽減することが可能となると共に、開発者に依存しない検索ＳＱＬ分の作成を可能として保守運用の複雑化を回避することができる。
【０２２２】
尚、本発明は、図１〜図３０を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、図１に示すように、１台のコンピュータ（サーバ１）において、各処理を実行する構成としているが、複数のコンピュータで各処理部の機能を振り分け、負荷の分散を図る構成としても良い。
【０２２３】
また、本例のコンピュータ構成に関しても、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【図面の簡単な説明】
【０２２４】
【図１】本発明に係るデータベース構築支援システムの構成例を示すブロック図である。
【図２】図１におけるテーブル一覧表作成処理部の処理動作例を示すフローチャートである。
【図３Ａ】図１におけるテーブル定義書作成処理部の第１の処理動作例を示すフローチャートである。
【図３Ｂ】図１におけるテーブル定義書作成処理部の第２の処理動作例を示すフローチャートである。
【図３Ｃ】図１におけるテーブル定義書作成処理部の第３の処理動作例を示すフローチャートである。
【図４】図１におけるデータベース設計書ＣＳＶ作成処理部の処理動作例を示すフローチャートである。
【図５Ａ】図１におけるテーブル作成ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャートである。
【図５Ｂ】図１におけるテーブル作成ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャートである。
【図６Ａ】図１におけるインデックス作成ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャートでる。
【図６Ｂ】図１におけるインデックス作成ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャートである。
【図６Ｃ】図１におけるインデックス作成ＳＱＬ文作成処理部の第３の処理動作例を示すフローチャートである。
【図７Ａ】図１におけるインデックス削除ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャートである。
【図７Ｂ】図１におけるインデックス削除ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャートである。
【図８Ａ】図１におけるコピーテーブル作成ＳＱＬ文作成処理部の第１の処理動作例を示すフローチャートである。
【図８Ｂ】図１におけるコピーテーブル作成ＳＱＬ文作成処理部の第２の処理動作例を示すフローチャートである。
【図９Ａ】図１におけるテーブルリネームＳＱＬ文作成処理部の第１の処理動作例を示すフローチャートである。
【図９Ｂ】図１におけるテーブルリネームＳＱＬ文作成処理部の第２の処理動作例を示すフローチャートである。
【図１０】図１における旧テーブル削除ＳＱＬ文作成処理部の処理動作例を示すフローチャートである。
【図１１Ａ】図１におけるＳＱＬ*Ｌｏａｄｅｒ用制御文作成処理部の第１の処理動作例を示すフローチャートである。
【図１１Ｂ】図１におけるＳＱＬ*Ｌｏａｄｅｒ用制御文作成処理部の第２の処理動作例を示すフローチャートである。
【図１２Ａ】図１におけるテーブル引上げＳＱＬ文作成処理部の第１の処理動作例を示すフローチャートである。
【図１２Ｂ】図１におけるテーブル引上げＳＱＬ文作成処理部の第２の処理動作例を示すフローチャートである。
【図１３Ａ】図１におけるデータベース設計書のサンプル例を示す説明図である。
【図１３Ｂ】図１におけるデータベース設計書の項目説明例を示す説明図である。
【図１３Ｃ】図１におけるデータベース設計書のデータ例を示す説明図である。
【図１４】図１におけるテーブル一覧表の構成例を示す説明図である。
【図１５Ａ】図１におけるテーブル定義書のサンプル例を示す説明図である。
【図１５Ｂ】図１におけるテーブル定義書の項目説明例を示す説明図である。
【図１５Ｃ】図１におけるテーブル定義書のデータ例を示す説明図である。
【図１６Ａ】図１におけるデータベース設計書ＣＳＶのサンプル例を示す説明図である。
【図１６Ｂ】図１におけるデータベース設計書ＣＳＶの項目説明例を示す説明図である。
【図１６Ｃ】図１におけるデータベース設計書ＣＳＶのデータ例を示す説明図である。
【図１７Ａ】図１におけるテーブル作成ＳＱＬ文のサンプル例を示す説明図である。
【図１７Ｂ】図１におけるテーブル作成ＳＱＬ文の内容説明例を示す説明図である。
【図１８】図１におけるインデックス作成ＳＱＬ文の具体例を示す説明図である。
【図１９】図１におけるインデックス削除ＳＱＬ文の具体例を示す説明図である。
【図２０Ａ】図１におけるコピーテーブル作成ＳＱＬ文のサンプル例を示す説明図である。
【図２０Ｂ】図１におけるコピーテーブル作成ＳＱＬ文の内容説明例を示す説明図である。
【図２１】図１におけるテーブルリネーム作成ＳＱＬ文の具体例を示す説明図である。
【図２２】図１における旧テーブル削除ＳＱＬ文の具体例を示す説明図である。
【図２３】図１におけるＳＱＬ*Ｌｏａｄｅｒ用制御文の具体例を示す説明図である。
【図２４Ａ】図１におけるテーブル引上げＳＱＬ文のサンプル例を示す説明図である。
【図２４Ｂ】図１におけるテーブル引上げＳＱＬ文の内容説明例を示す説明図である。
【図２５】図１におけるデータベース構築支援システムで作成した各ＳＱＬ文による処理機能を示す説明図である。
【図２６Ａ】図１におけるＤＢアクセスモジュール作成処理部の第１の処理動作例を示すフローチャートである。
【図２６Ｂ】図１におけるＤＢアクセスモジュール作成処理部の第２の処理動作例を示すフローチャートである。
【図２７】図１におけるコピー文作成処理部の処理動作例を示すフローチャートである。
【図２８】図１におけるデータベース構築支援システムで生成したＤＢアクセスモジュールの内容説明を示す説明図である。
【図２９】図１におけるデータベース構築支援システムで生成したコピー文のサンプルとその内容説明を示す説明図である。
【図３０】図２６Ａ，Ｂおよび図２７における処理で作成されたＤＢアクセスモジュールとコピー文の処理機能を示す説明図である。
【符号の説明】
【０２２５】
１０１：データベース設計書、２０１：テーブル一覧作成処理部、２０２：テーブル定義書作成処理部、２０３：データベース設計書処理部、３０１：テーブル一覧表、３０２：テーブル定義書、３０３：データベース設計書ＣＳＶ、４０１：テーブル作成ＳＱＬ文作成処理部、４０２：インデックス作成ＳＱＬ文作成処理部、４０３：インデックス削除ＳＱＬ文作成処理部、４０４：コピーテーブルＳＱＬ文作成処理部、４０５：テーブルリネームＳＱＬ文作成処理部、４０６：旧テーブル削除ＳＱＬ文作成処理部、４０７：ＳＱＬ*Ｌｏａｄｅｒ用制御文作成処理部、４０８：テーブル引上げＳＱＬ文作成処理部、５０１：テーブル作成ＳＱＬ文、５０２：インデックス作成ＳＱＬ文、５０３：インデックス削除ＳＱＬ文、５０４：コピーテーブルＳＱＬ文、５０５：テーブルリネームＳＱＬ文、５０６：旧テーブル削除ＳＱＬ文、５０７：ＳＱＬ*Ｌｏａｄｅｒ用制御文、５０８：テーブル引上げＳＱＬ文、５０９：ＤＢアクセスモジュール、５１０：コピー文、１３０１：データベース設計書のサンプル、１３０２：データベース設計書の項目説明、１３０３：データベース設計書のデータ例、１４０１：テーブル一覧表のサンプル、１４０２：テーブル一覧表の項目説明、１４０３：テーブル一覧表のデータ例、１５０１：テーブル定義書のサンプル、１５０２：テーブル定義書の項目説明、１５０３：テーブル定義書のデータ例、１６０１：データベース設計書ＣＳＶのサンプル、１６０２：データベース設計書ＣＳＶの項目説明、１６０３：データベース設計書ＣＳＶのデータ例、１７０１：テーブル作成ＳＱＬ文のサンプル、１７０２：テーブル作成ＳＱＬ文の内容説明、１８０１：インデックス作成ＳＱＬ文のサンプル、１８０２：インデックス作成ＳＱＬ文の内容説明、１９０１：インデックス削除ＳＱＬ文のサンプル、１９０２：インデックス削除ＳＱＬ文の内容説明、２００１：コピーテーブル作成ＳＱＬ文のサンプル、２００２：コピーテーブル作成ＳＱＬ文の内容説明、２１０１：テーブルリネームＳＱＬ文のサンプル、２１０２：テーブルリネームＳＱＬ文の内容説明、２２０１：旧テーブル削除ＳＱＬ文のサンプル、２２０２：旧テーブル削除ＳＱＬ文の内容説明、２３０１：ＳＱＬ*ＬＯＡＤＥＲ用制御文のサンプル、２３０２：ＳＱＬ*ＬＯＡＤＥＲ用制御文の内容説明、２４０１：テーブル引上げＳＱＬ文のサンプル、２４０２：テーブル引上げＳＱＬ文の内容説明、２５０１：バッチ処理サーバ、２５０２：入力ファイル、２５０３：サンプルテーブル、２５０４：バックアップファイル、２５０５：コピーサンプルテーブル、２５０６：正のテーブルとしてのサンプルテーブル、２５０７：旧サンプルテーブル、２５０８：ＷＥＢサーバ、２８０１：ＤＢアクセスモジュールの内容説明、２９０１：コピー文のサンプル、２９０２：コピー文の内容説明、３００１：データベース装置、３００２：ＣＧＩ処理部、３００２：データベース装置、３００４〜３００６：ＣＧＩ処理部。
【図１】
2008242677.tif 000003
【図２】
2008242677.tif 000004
【図３Ａ】
2008242677.tif 000005
【図３Ｂ】
2008242677.tif 000006
【図３Ｃ】
2008242677.tif 000007
【図４】
2008242677.tif 000008
【図５Ａ】
2008242677.tif 000009
【図５Ｂ】
2008242677.tif 000010
【図６Ａ】
2008242677.tif 000011
【図６Ｂ】
2008242677.tif 000012
【図６Ｃ】
2008242677.tif 000013
【図７Ａ】
2008242677.tif 000014
【図７Ｂ】
2008242677.tif 000015
【図８Ａ】
2008242677.tif 000016
【図８Ｂ】
2008242677.tif 000017
【図９Ａ】
2008242677.tif 000018
【図９Ｂ】
2008242677.tif 000019
【図１０】
2008242677.tif 000020
【図１１Ａ】
2008242677.tif 000021
【図１１Ｂ】
2008242677.tif 000022
【図１２Ａ】
2008242677.tif 000023
【図１２Ｂ】
2008242677.tif 000024
【図１３Ａ】
2008242677.tif 000025
【図１３Ｂ】
2008242677.tif 000026
【図１３Ｃ】
2008242677.tif 000027
【図１４】
2008242677.tif 000028
【図１５Ａ】
2008242677.tif 000029
【図１５Ｂ】
2008242677.tif 000030
【図１５Ｃ】
2008242677.tif 000031
【図１６Ａ】
2008242677.tif 000032
【図１６Ｂ】
2008242677.tif 000033
【図１６Ｃ】
2008242677.tif 000034
【図１７Ａ】
2008242677.tif 000035
【図１７Ｂ】
2008242677.tif 000036
【図１８】
2008242677.tif 000037
【図１９】
2008242677.tif 000038
【図２０Ａ】
2008242677.tif 000039
【図２０Ｂ】
2008242677.tif 000040
【図２１】
2008242677.tif 000041
【図２２】
2008242677.tif 000042
【図２３】
2008242677.tif 000043
【図２４Ａ】
2008242677.tif 000044
【図２４Ｂ】
2008242677.tif 000045
【図２５】
2008242677.tif 000046
【図２６Ａ】
2008242677.tif 000047
【図２６Ｂ】
2008242677.tif 000048
【図２７】
2008242677.tif 000049
【図２８】
2008242677.tif 000050
【図２９】
2008242677.tif 000051
【図３０】
2008242677.tif 000052