(57)【要約】【課題】専門的な知識の乏しい者であっても、簡単にデータベースを構築できるようにする。【解決手段】テーブル設計記憶部１２１は、データベースで使用されるテーブルを定義するテーブル設計データを記憶する。使用テーブル記憶部１３１は、テーブル設計記憶部１２１が記憶したテーブル設計データが定義するテーブルのうち、構築する構築データベースで使用するテーブルを表わす使用テーブルデータを記憶する。テーブル定義生成部１４３は、使用テーブル記憶部１３１が記憶した使用テーブルデータが表わすテーブルについて、テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、テーブルを定義するテーブル定義データを生成する。【選択図】図１１
2011008443.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶装置と、データを処理する処理装置と、テーブル設計記憶部と、使用テーブル記憶部と、テーブル定義生成部と、定義記憶部とを有し、
上記テーブル設計記憶部は、上記記憶装置を用いて、データベースで使用されるテーブルを定義するテーブル設計データを記憶し、
上記使用テーブル記憶部は、上記記憶装置を用いて、上記テーブル設計記憶部が記憶したテーブル設計データが定義するテーブルのうち、構築する構築データベースで使用するテーブルを表わす使用テーブルデータを記憶し、
上記テーブル定義生成部は、上記処理装置を用いて、上記使用テーブル記憶部が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部が記憶したテーブル設計データに基づいて、上記テーブルを定義するテーブル定義データを生成し、
上記定義記憶部は、上記記憶装置を用いて、上記構築データベースを定義するデータベース定義データとして、上記テーブル定義生成部が生成したテーブル定義データを記憶することを特徴とするデータベース定義生成装置。
【請求項２】
上記データベース定義生成装置は、更に、使用カラム記憶部を有し、
上記テーブル設計記憶部は、上記記憶装置を用いて、上記テーブル設計データとして、上記テーブルが含むカラムを定義するカラム設計データを記憶し、
上記使用カラム記憶部は、上記記憶装置を用いて、上記使用テーブル記憶部が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部が記憶したカラム設計データが定義するカラムのうち、上記構築データベースで使用するカラムを表わす使用カラムデータを記憶し、
上記テーブル定義生成部は、上記処理装置を用いて、上記使用テーブル記憶部が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部が記憶したカラム設計データに基づいて、上記使用カラム記憶部が記憶した使用カラムデータが表わすカラムを含むテーブルを定義するテーブル定義データを生成することを特徴とする請求項１に記載のデータベース定義生成装置。
【請求項３】
上記データベース定義生成装置は、更に、インデックス設計記憶部と、使用インデックス判定部と、インデックス定義生成部とを有し、
上記インデックス設計記憶部は、上記記憶装置を用いて、上記テーブル設計記憶部が記憶したテーブル設計データが定義するテーブルについて、上記テーブルを対象とするインデックスを定義するインデックス設計データを記憶し、
上記使用インデックス判定部は、上記処理装置を用いて、上記インデックス設計記憶部が記憶したインデックス設計データが表わすインデックスのうち、上記構築データベースで使用するインデックスを判定し、
上記インデックス定義生成部は、上記処理装置を用いて、上記構築データベースで使用すると上記使用インデックス判定部が判定したインデックスについて、上記インデックス設計記憶部が記憶したインデックス設計データに基づいて、上記インデックスを定義するインデックス定義データを生成し、
上記定義記憶部は、上記記憶装置を用いて、上記データベース定義データとして、上記インデックス定義生成部が生成したインデックス定義データを記憶することを特徴とする請求項１または請求項２に記載のデータベース定義生成装置。
【請求項４】
上記データベース定義生成装置は、更に、クエリ設計記憶部と、使用クエリ記憶部とを有し、
上記クエリ設計記憶部は、上記記憶装置を用いて、上記インデックス設計記憶部が記憶したインデックス設計データが定義するインデックスについて、上記インデックスを使用するクエリを定義するクエリ設計データを記憶し、
上記使用クエリ記憶部は、上記記憶装置を用いて、上記クエリ設計記憶部が記憶したクエリ設計データが定義するクエリのうち、上記構築データベースで使用するクエリを表わす使用クエリデータを記憶し、
上記使用インデックス判定部は、上記処理装置を用いて、上記クエリ設計記憶部が記憶したクエリ設計データに基づいて、上記使用クエリ記憶部が記憶した使用クエリデータが示すクエリが使用するインデックスを、上記構築データベースで使用すると判定することを特徴とする請求項３に記載のデータベース定義生成装置。
【請求項５】
上記データベース定義生成装置は、更に、使用インデックス記憶部を有し、
上記使用インデックス記憶部は、上記記憶装置を用いて、上記インデックス設計記憶部が記憶したインデックス設計データが定義するインデックスのうち、上記構築データベースで使用するインデックスを示す使用インデックスデータを記憶し、
上記使用インデックス判定部は、上記処理装置を用いて、上記インデックス設計記憶部が記憶したインデックス設計データに基づいて、上記使用インデックス記憶部が記憶した使用インデックスデータが表わすインデックスのうち、上記使用テーブル記憶部が記憶した使用テーブルデータが表わすテーブルを対象とするインデックスを、上記構築データベースで使用すると判定することを特徴とする請求項３または請求項４に記載のデータベース定義生成装置。
【請求項６】
上記データベース定義生成装置は、更に、使用カラム記憶部を有し、
上記テーブル設計記憶部は、上記テーブル設計データとして、上記テーブルが含むカラムを定義するカラム設計データを記憶し、
上記使用カラム記憶部は、上記記憶装置を用いて、上記使用テーブル記憶部が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部が記憶したカラム設計データが定義するカラムのうち、上記構築データベースで使用するカラムを表わす使用カラムデータを記憶し、
上記インデックス設計記憶部は、上記記憶装置を用いて、上記インデックス設計データとして、上記インデックスが対象とするテーブルについて、上記テーブル設計記憶部が記憶したカラム設計データが定義するカラムのうち、上記インデックスのキーとなるカラムを表わすキー設計データを記憶し、
上記インデックス定義生成部は、上記処理装置を用いて、上記インデックス設計記憶部が記憶したキー設計データが表わすカラムのうち、上記使用カラム記憶部が記憶した使用カラムデータが表わすカラムをキーとするインデックスを定義するインデックス定義データを生成することを特徴とする請求項３乃至請求項５のいずれかに記載のデータベース定義生成装置。
【請求項７】
データを記憶する記憶装置と、データを処理する処理装置と、利用者の操作を入力する操作入力装置と、設計テーブル記憶部と、テーブル選択部と、選択テーブル生成部と、選択テーブル記憶部とを有し、
上記設計テーブル記憶部は、上記記憶装置を用いて、データベースで使用されるテーブルを定義するテーブル設計データを記憶し、
上記テーブル選択部は、上記操作入力装置を用いて、上記設計テーブル記憶部が記憶したテーブル設計データが定義するテーブルのうちから、構築する構築データベースで使用するテーブルを選択する操作を入力し、
上記選択テーブル生成部は、上記処理装置を用いて、上記テーブル選択部が入力した操作に基づいて、上記構築データベースで使用するテーブルとして選択されたテーブルを表わす使用テーブルデータを生成し、
上記選択テーブル記憶部は、上記記憶装置を用いて、上記選択テーブル生成部が生成した使用テーブルデータを記憶することを特徴とするデータベース設計装置。
【請求項８】
上記データベース設計装置は、更に、カラム選択部と、選択カラム生成部と、選択カラム記憶部とを有し、
上記設計テーブル記憶部は、上記テーブル設計データとして、上記テーブルが含むカラムを定義するカラム設計データを記憶し、
上記カラム選択部は、上記操作入力装置を用いて、上記テーブル選択部が入力した操作により上記構築データベースで使用するテーブルとして選択されたテーブルについて、上記設計テーブル記憶部が記憶したカラム設計データが定義するカラムのうちから、上記構築データベースで使用するカラムを選択する操作を入力し、
上記選択カラム生成部は、上記処理装置を用いて、上記カラム選択部が入力した操作に基づいて、上記構築データベースで使用するカラムとして選択されたカラムを表わす使用カラムデータを生成し、
上記選択カラム記憶部は、上記記憶装置を用いて、上記選択カラム生成部が生成した使用カラムデータを記憶することを特徴とする請求項７に記載のデータベース設計装置。
【請求項９】
上記データベース設計装置は、更に、追加カラム入力部と、カラム追加部とを有し、
上記追加カラム入力部は、上記操作入力装置を用いて、上記設計テーブル記憶部が記憶したテーブル設計データが定義するテーブルにカラムを追加する操作を入力し、
上記カラム追加部は、上記処理装置を用いて、上記追加カラム入力部が入力した操作に基づいて、上記設計テーブル記憶部が記憶したカラム設計データを更新し、上記設計テーブル記憶部が記憶したテーブル設計データが定義するテーブルにカラムを追加することを特徴とする請求項８に記載のデータベース設計装置。
【請求項１０】
請求項７乃至請求項９のいずれかに記載のデータベース設計装置と、請求項１乃至請求項６のいずれかに記載のデータベース定義生成装置とを有し、
上記テーブル設計記憶部は、上記記憶装置を用いて、上記設計テーブル記憶部が記憶したテーブル設計データを記憶し、
上記使用テーブル記憶部は、上記記憶装置を用いて、上記選択テーブル記憶部が記憶した使用テーブルデータを記憶することを特徴とするデータベース構築システム。
【請求項１１】
データを記憶する記憶装置とデータを処理する処理装置とを有するコンピュータを、請求項１乃至請求項６のいずれかに記載のデータベース定義生成装置または請求項７乃至請求項９のいずれかに記載のデータベース設計装置または請求項１０に記載のデータベース構築システムとして機能させることを特徴とするコンピュータプログラム。
【請求項１２】
データを処理する処理装置を有するデータベース定義生成装置が、構築する構築データベースを定義するデータベース定義データを生成するデータベース定義生成方法において、
上記処理装置が、データベースで使用されるテーブルを定義するテーブル設計データと、上記テーブル設計データが定義するテーブルのうち上記構築データベースで使用するテーブルを表わす使用テーブルデータとに基づいて、上記使用テーブルデータが表わすテーブルについて、上記テーブルを定義するテーブル定義データを生成し、生成したテーブル定義データを上記データベース定義データとすることを特徴とするデータベース定義生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データベース管理装置にデータベースを構築させるために用いるデータベース定義データを生成する装置・システム・プログラム・方法に関する。
【背景技術】
【０００２】
新たに構築するデータベースの設計情報を記述したデータベース設計データから、ＳＱＬ文など、データベース管理装置が理解する形式でデータベースを定義するデータベース定義データを生成するデータベース定義生成装置がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２２２２５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のデータベース定義生成装置は、新たなデータベースを構築するたびに、新たなデータベース設計データを記述する必要があった。データベース設計データの記述には、専門的な知識が必要であるため、そのような作業ができる者は限られる。
この発明は、例えば上記のような課題を解決するためになされたものであり、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
この発明にかかるデータベース定義生成装置は、
データを記憶する記憶装置と、データを処理する処理装置と、テーブル設計記憶部と、使用テーブル記憶部と、テーブル定義生成部と、定義記憶部とを有し、
上記テーブル設計記憶部は、上記記憶装置を用いて、データベースで使用されるテーブルを定義するテーブル設計データを記憶し、
上記使用テーブル記憶部は、上記記憶装置を用いて、上記テーブル設計記憶部が記憶したテーブル設計データが定義するテーブルのうち、構築する構築データベースで使用するテーブルを表わす使用テーブルデータを記憶し、
上記テーブル定義生成部は、上記処理装置を用いて、上記使用テーブル記憶部が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部が記憶したテーブル設計データに基づいて、上記テーブルを定義するテーブル定義データを生成し、
上記定義記憶部は、上記記憶装置を用いて、上記構築データベースを定義するデータベース定義データとして、上記テーブル定義生成部が生成したテーブル定義データを記憶することを特徴とする。
【発明の効果】
【０００６】
この発明にかかるデータベース定義生成装置によれば、テーブル設計データによって定義されるテーブルのなかから、構築データベースで使用するテーブルを選択して、使用テーブルデータを生成しておけば、データベース定義生成装置が、選択したテーブルを含むデータベースを定義するデータベース定義データを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１におけるデータベース構築システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１におけるデータベース定義生成装置１００及びデータベース設計装置２００の外観の一例を示す斜視図。
【図３】実施の形態１におけるデータベース定義生成装置１００及びデータベース設計装置２００のハードウェア資源の一例を示す図。
【図４】実施の形態１におけるデータベース設計装置２００の機能ブロックの構成の一例を示すブロック構成図。
【図５】実施の形態１におけるテーブル基本データ５１０の一例を示す図。
【図６】実施の形態１におけるカラム設計データ５２０の一例を示す図。
【図７】実施の形態１におけるインデックス基本データ５３０の一例を示す図。
【図８】実施の形態１におけるキー設計データ５４０の一例を示す図。
【図９】実施の形態１におけるデータベース設計処理Ｓ６００の流れの一例を示すフローチャート図。
【図１０】実施の形態１における使用データ出力部２１３が生成するデータベース使用データ５６０の一例を示す図。
【図１１】実施の形態１におけるデータベース定義生成装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図１２】実施の形態１におけるデータベース定義生成処理Ｓ７００の流れの一例を示すフローチャート図。
【図１３】実施の形態１におけるテーブル定義生成部１４３及びインデックス定義生成部１５３が生成するデータの一例を示す図。
【図１４】実施の形態１におけるデータベース定義生成装置１００が生成するテーブル定義データの一例を示す図。
【図１５】実施の形態１におけるデータベース定義生成装置１００が生成するインデックス定義データの一例を示す図。
【図１６】実施の形態２におけるデータベース設計装置２００の機能ブロックの構成の一例を示すブロック構成図。
【図１７】実施の形態２におけるクエリ設計データ５５０の一例を示す図。
【図１８】実施の形態２における使用データ出力部２１３が生成するデータベース使用データ５６０の一例を示す図。
【図１９】実施の形態２におけるデータベース定義生成装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図２０】実施の形態２におけるインデックス判定工程Ｓ７４２の流れの一例を示すフローチャート図。
【発明を実施するための形態】
【０００８】
実施の形態１．
実施の形態１について、図１〜図１５を用いて説明する。
【０００９】
図１は、この実施の形態におけるデータベース構築システム８００の全体構成の一例を示すシステム構成図である。
データベース構築システム８００は、データベースを定義するデータベース定義データを生成する。データベース定義データは、例えばＳＱＬ文などのデータベース管理言語を用いて記述されたデータである。データベース構築システム８００が生成したデータベース定義データは、例えば定義データ記憶装置８５０が記憶する。データベース管理装置８６０（データベース管理システム）は、例えばＳＱＬ文などのデータベース管理言語を理解するサーバ装置であり、定義データ記憶装置８５０が記憶したデータベース定義データに基づいて、データベースを構築する。データベース記憶装置８７０は、データベース管理装置８６０が構築したデータベースを記憶する。
【００１０】
データベース構築システム８００は、設計データ記憶装置８１０、データベース設計装置２００、使用データ記憶装置８２０、データベース定義生成装置１００を有する。
設計データ記憶装置８１０は、データベース設計データを記憶している。データベース設計データは、データベースで使用するテーブルやインデックス、クエリなどを定義するデータである。データベース設計データは、例えば過去にデータベースを構築した際に使用されたデータである。過去に構築したデータベースと類似のデータベースを新たに構築しようとする際にデータベース設計データを利用することにより、まったく新しくデータベースを構築するのと比較して、少ない手間でデータベースを構築することができ、また、専門知識のない者でも、データベースを構築することができる。
【００１１】
データベース設計装置２００は、利用者の操作に基づいて、新たなデータベースを構築するために必要な情報を取得し、データベース使用データを生成する。データベース設計装置２００は、利用者の操作に基づいて、設計データ記憶装置８１０が記憶したデータベース設計データが定義するテーブルなどのなかから、新たに構築するデータベースで使用するテーブルなどを選択する。また、データベース設計装置２００は、利用者の操作に基づいて、選択したテーブルに含まれるカラムのうち、新たに構築するデータベースに必要なカラムだけを選択し、不要なカラムは選択しない。データベース設計装置２００が生成するデータベース使用データは、データベース設計装置２００が選択したテーブルやカラムなどを表わすデータである。
データベース設計装置２００は、新たに構築するデータベースに必要なカラムが、選択したテーブルに含まれていない場合は、利用者の操作に基づいて、カラムを追加する。また、データベース設計装置２００は、新たに構築するデータベースに必要なテーブルが、設計データ記憶装置８１０が記憶したデータベース設計データが定義するテーブルに含まれていない場合は、利用者の操作に基づいて、テーブルを追加する。設計データ記憶装置８１０は、追加されたカラムやテーブルなどを含むデータベース設計データを記憶する。このように、新たにデータベースを構築するたびに、設計データ記憶装置８１０が記憶したデータベース設計データが充実化し、データベース構築に必要な手間や知識が少なくて済むようになる。
【００１２】
使用データ記憶装置８２０は、データベース設計装置２００が生成したデータベース使用データ（サポート機能データ）を記憶する。
データベース定義生成装置１００は、設計データ記憶装置８１０が記憶したデータベース設計データと、使用データ記憶装置８２０が記憶したデータベース使用データとに基づいて、新たに構築するデータベース（以下「構築データベース」と呼ぶ。）を定義するデータベース定義データ（ＳＱＬデータ）を生成する。
【００１３】
図２は、この実施の形態におけるデータベース定義生成装置１００及びデータベース設計装置２００の外観の一例を示す斜視図である。
データベース定義生成装置１００（ＳＱＬデータ生成装置）・データベース設計装置２００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。
なお、データベース定義生成装置１００及びデータベース設計装置２００は、物理的に一つの装置であってもよい。逆に、データベース定義生成装置１００及びデータベース設計装置２００のいずれかまたは双方が、物理的に複数の装置からなるものであってもよい。設計データ記憶装置８１０、使用データ記憶装置８２０、定義データ記憶装置８５０、データベース管理装置８６０、データベース記憶装置８７０なども同様である。
【００１４】
図３は、この実施の形態におけるデータベース定義生成装置１００及びデータベース設計装置２００のハードウェア資源の一例を示す図である。
データベース定義生成装置１００・データベース設計装置２００は、プログラムを実行する処理装置９１１（中央処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ。以下「ＣＰＵ」と呼ぶ。）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信装置９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０（以下「ＨＤＤ」と呼ぶ。）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置９１５、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。  キーボード９０２、マウス９０３などは、利用者の操作を入力する操作入力装置の一例である。  通信装置９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００１５】
通信装置９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信装置９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０或いはＩＳＤＮ等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
ＨＤＤ９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００１６】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、ＨＤＤ９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１７】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００１８】
図４は、この実施の形態におけるデータベース設計装置２００の機能ブロックの構成の一例を示すブロック構成図である。
データベース設計装置２００は、設計データ入力部２１１、設計データ出力部２１２、使用データ出力部２１３、設計テーブル記憶部２２１、設計インデックス記憶部２２２、追加テーブル入力部２３１、テーブル選択部２３２、追加カラム入力部２４１、カラム選択部２４２、追加インデックス入力部２５１、インデックス選択部２５２を有する。
【００１９】
設計データ入力部２１１は、ＣＰＵ９１１を用いて、設計データ記憶装置８１０が記憶したデータベース設計データを入力する。この例において、データベース設計データは、テーブル設計データ（テーブル設計情報）と、インデックス設計データ（インデックス設計情報）とを有する。テーブル設計データとは、データベースで使用されるテーブルを定義するデータである。インデックス設計データとは、データベースで使用されるインデックスを定義するデータである。設計データ入力部２１１は、ＣＰＵ９１１を用いて、入力したデータベース設計データから、テーブル設計データと、インデックス設計データとを取得する。設計データ入力部２１１は、ＣＰＵ９１１を用いて、取得したテーブル設計データと、インデックス設計データとを出力する。
設計テーブル記憶部２２１は、ＣＰＵ９１１を用いて、設計データ入力部２１１が出力したテーブル設計データを入力する。設計テーブル記憶部２２１は、ＨＤＤ９２０を用いて、入力したテーブル設計データを記憶する。
設計インデックス記憶部２２２は、ＣＰＵ９１１を用いて、設計データ入力部２１１が出力したインデックス設計データを入力する。設計インデックス記憶部２２２は、ＨＤＤ９２０を用いて、入力したインデックス設計データを記憶する。
【００２０】
テーブル選択部２３２は、ＣＰＵ９１１を用いて、設計テーブル記憶部２２１が記憶したテーブル設計データを入力する。テーブル選択部２３２は、表示装置９０１を用いて、入力したテーブル設計データにより定義されるテーブルを表示する。テーブル選択部２３２は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、キーボード９０２を操作して、表示されたテーブルのなかから、構築しようとする構築データベースで使いたいテーブルを選択する。テーブル選択部２３２は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が選択したテーブルを判別する。テーブル選択部２３２は、ＣＰＵ９１１を用いて、判別した結果に基づいて、利用者が選択したテーブルの一覧を表わすデータ（以下「使用テーブルデータ」と呼ぶ。）を生成する。テーブル選択部２３２は、ＣＰＵ９１１を用いて、生成した使用テーブルデータを出力する。
【００２１】
追加テーブル入力部２３１は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、テーブル選択部２３２が表示したテーブルのなかに、構築データベースで使いたいテーブルがない場合、キーボード９０２を操作して、使いたいテーブルの定義を入力する。追加テーブル入力部２３１は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が使いたいテーブルを定義するデータを生成する。追加テーブル入力部２３１は、ＣＰＵ９１１を用いて、生成したデータを出力する。
設計テーブル記憶部２２１は、ＣＰＵ９１１を用いて、追加テーブル入力部２３１が出力したデータを入力する。設計テーブル記憶部２２１は、ＣＰＵ９１１を用いて、記憶したテーブル設計データを更新して、入力したデータにより定義されるテーブルを追加する。設計テーブル記憶部２２１は、ＨＤＤ９２０を用いて、更新したテーブル設計データを記憶する。
【００２２】
カラム選択部２４２は、ＣＰＵ９１１を用いて、設計テーブル記憶部２２１が記憶したテーブル設計データと、テーブル選択部２３２が出力した使用テーブルデータとを入力する。カラム選択部２４２は、表示装置９０１を用いて、入力したテーブル設計データが表わすテーブルのうち、入力した使用テーブルデータが表わすテーブルについて、そのテーブルに含まれるカラムを表示する。カラム選択部２４２は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、キーボード９０２を操作して、表示されたカラムのなかから、構築データベースで使いたいカラムを選択する。カラム選択部２４２は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が選択したカラムを判別する。カラム選択部２４２は、ＣＰＵ９１１を用いて、判別した結果に基づいて、利用者が選択したカラムの一覧を表わすデータ（以下「使用カラムデータ」と呼ぶ。）を生成する。カラム選択部２４２は、ＣＰＵ９１１を用いて、生成した使用カラムデータを出力する。
【００２３】
追加カラム入力部２４１は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、カラム選択部２４２が表示したカラムのなかに、構築データベースで使いたいカラムがない場合、キーボード９０２を操作して、使いたいカラムの定義を入力する。追加カラム入力部２４１は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が使いたいカラムを定義するデータを生成する。追加カラム入力部２４１は、ＣＰＵ９１１を用いて、生成したデータを出力する。
設計テーブル記憶部２２１は、ＣＰＵ９１１を用いて、追加カラム入力部２４１が出力したデータを入力する。設計テーブル記憶部２２１は、ＣＰＵ９１１を用いて、記憶したテーブル設計データを更新して、入力したデータにより定義されるカラムを追加する。設計テーブル記憶部２２１は、ＨＤＤ９２０を用いて、更新したテーブル設計データを記憶する。
【００２４】
インデックス選択部２５２は、ＣＰＵ９１１を用いて、設計インデックス記憶部２２２が記憶したインデックス設計データと、テーブル選択部２３２が出力した使用テーブルデータとを入力する。インデックス選択部２５２は、表示装置９０１を用いて、入力したインデックス設計データにより定義されるインデックスのうち、入力した使用テーブルデータが表わすテーブルについて、そのテーブルを対象とするインデックスを表示する。インデックス選択部２５２は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、キーボード９０２を操作して、表示されたインデックスのなかから、構築データベースで使いたいインデックスを選択する。インデックス選択部２５２は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が選択したインデックスを判別する。インデックス選択部２５２は、ＣＰＵ９１１を用いて、判別した結果に基づいて、利用者が選択したインデックスの一覧を表わすデータ（以下「使用インデックスデータ」と呼ぶ。）を生成する。インデックス選択部２５２は、ＣＰＵ９１１を用いて、生成した使用インデックスデータを出力する。
【００２５】
追加インデックス入力部２５１は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、インデックス選択部２５２が表示したインデックスのなかに、構築データベースで使いたいインデックスがない場合、キーボード９０２を操作して、使いたいインデックスの定義を入力する。追加インデックス入力部２５１は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が使いたいインデックスを定義するデータを生成する。追加インデックス入力部２５１は、ＣＰＵ９１１を用いて、生成したデータを出力する。
設計インデックス記憶部２２２は、ＣＰＵ９１１を用いて、追加インデックス入力部２５１が出力したデータを入力する。設計インデックス記憶部２２２は、ＣＰＵ９１１を用いて、記憶したインデックス設計データを更新して、入力したデータにより定義されるインデックスを追加する。設計インデックス記憶部２２２は、ＨＤＤ９２０を用いて、更新したインデックス設計データを記憶する。
【００２６】
設計データ出力部２１２は、ＣＰＵ９１１を用いて、設計テーブル記憶部２２１が記憶したテーブル設計データと、設計インデックス記憶部２２２が記憶したインデックス設計データとを入力する。設計データ出力部２１２は、ＣＰＵ９１１を用いて、入力したテーブル設計データと、入力したインデックス設計データとに基づいて、データベース設計データを生成する。設計データ出力部２１２は、ＣＰＵ９１１を用いて、生成したデータベース設計データを外部に出力する。
設計データ出力部２１２が出力したデータベース設計データは、例えば、設計データ記憶装置８１０が入力して記憶する。これにより、追加テーブル入力部２３１や追加カラム入力部２４１や追加インデックス入力部２５１などがテーブル設計データやインデックス設計データを更新した内容が、設計データ記憶装置８１０が記憶したデータベース設計データに反映される。これにより、今回のデータベース構築時に利用者が追加したテーブルやカラムやインデックスを次回以降のデータベース構築時に使う場合、利用者は、その定義を入力する必要はなく、表示されるなかから選択するだけで使うことができる。
【００２７】
使用データ出力部２１３は、ＣＰＵ９１１を用いて、テーブル選択部２３２が出力した使用テーブルデータと、カラム選択部２４２が出力した使用カラムデータと、インデックス選択部２５２が出力した使用インデックスデータとを入力する。使用データ出力部２１３は、ＣＰＵ９１１を用いて、入力した使用テーブルデータと、入力した使用カラムデータと、入力した使用インデックスデータとに基づいて、構築データベースで使用するテーブル・カラム・インデックスなどを表わすデータベース使用データを生成する。使用データ出力部２１３は、ＣＰＵ９１１を用いて、生成したデータベース使用データを外部に出力する。
使用データ出力部２１３が出力したデータベース使用データは、例えば、使用データ記憶装置８２０が入力して記憶し、データベース定義生成装置１００が読み出して利用する。
【００２８】
図５は、この実施の形態におけるテーブル基本データ５１０の一例を示す図である。
テーブル基本データ５１０は、データベースで使用されるテーブルの基本的な情報を定義するデータである。テーブル基本データ５１０は、テーブル設計データの一部である。
テーブル基本データ５１０は、テーブルＩＤ５１１・テーブル名５１２・説明文５１３の組を複数含む。一組のテーブルＩＤ５１１・テーブル名５１２・説明文５１３は、一つのテーブルについての定義を表わす。それが複数組あることにより、テーブル基本データ５１０は、複数のテーブルについての定義を表わす。
【００２９】
テーブルＩＤ５１１は、そのテーブルを一意に識別するための文字列データである。テーブルＩＤ５１１は、例えば、追加テーブル入力部２３１がそのテーブルを追加する際、自動的に生成したものであってもよい。なお、テーブル名５１２によってテーブルを識別する場合には、テーブルＩＤ５１１はなくてもよい。
テーブル名５１２は、そのテーブルの名前を表わす文字列データである。
説明文５１３は、そのテーブルがどんなテーブルであるかを利用者に教えるための文字列データである。説明文５１３は、例えば、テーブル選択部２３２がテーブル名５１２とともに表示する。利用者は、表示された説明文５１３を読み、構築データベースで使いたいテーブルを選択する。
【００３０】
この例では、２つのテーブル「ＴＢＬ＿ＰＥＲＳＯＮ」及び「ＴＢＬ＿ＦＡＭＩＬＹ」が定義されている。利用者は、この２つのテーブルのなかから、構築データベースで使いたいテーブルを選択する。利用者は、どちらか一方のテーブルだけを選択してもよいし、両方選択してもよい。また、この２つ以外に利用者が使いたいテーブルがある場合には、追加テーブル入力部２３１がテーブルを追加することにより、この２つ以外のテーブルを選択できるようになる。
【００３１】
図６は、この実施の形態におけるカラム設計データ５２０の一例を示す図である。
上述したように、カラム設計データ５２０は、データベースで使用されるテーブルに含まれるカラムを定義するデータである。カラム設計データ５２０は、テーブル設計データの一部である。
カラム設計データ５２０は、カラムＩＤ５２１・所属テーブルＩＤ５２２・カラム名５２３の組を複数含む。一組のカラムＩＤ５２１・所属テーブルＩＤ５２２・カラム名５２３・データ型５２４・制約５２５・説明文５２６は、一つのカラムについての定義を表わす。それが複数組あることにより、カラム設計データ５２０は、複数のカラムについての定義を表わす。
【００３２】
カラムＩＤ５２１は、そのカラムを一意に識別するための文字列データである。カラムＩＤ５２１は、例えば、追加カラム入力部２４１がそのカラムを追加する際、自動的に生成したものであってもよい。なお、カラム名５２３によってカラムを識別する場合には、カラムＩＤ５２１はなくてもよい。
所属テーブルＩＤ５２２は、そのカラムが含まれるテーブルのテーブルＩＤ５１１を表わす文字列データである。なお、テーブルＩＤ５１１ではなくテーブル名５１２によってテーブルを識別する場合には、所属テーブルＩＤ５２２に代えて、所属テーブル名を設ける。所属テーブル名は、そのカラムが含まれるテーブルのテーブル名５１２を表わす文字列データである。
カラム名５２３は、そのカラムの名前を表わす文字列データである。
データ型５２４は、そのカラムのデータ型を表わす文字列データである。例えば、「ＩＮＴ」は整数型を表わし、「ＣＨＡＲ［３２」」は３２バイトの固定長文字列型を表わし、「ＶＡＲＣＨＡＲ」は可変長文字列型を表わし、「ＤＡＴＥ」は日付型を表わす。
制約５２５は、そのカラムについての制約を表わす文字列データである。例えば、「ＰＲＩＭＡＲＹ  ＫＥＹ」は、そのカラムをそのテーブルの主キーとし、必ずデータを入力しなければならず、データの重複を許さないことを表わし、「ＮＯＴ  ＮＵＬＬ」は、そのカラムに必ずデータを入力しなければならないことを表わす。そのカラムについての制約が特にない場合、制約５２５は空欄であってもよい。
説明文５２６は、そのカラムがどんなカラムであるかを利用者に教えるための文字列データである。説明文５２６は、例えば、カラム選択部２４２がカラム名５２３とともに表示する。利用者は、表示された説明文５２６を読み、構築データベースで使いたいカラムを選択する。
【００３３】
この例では、１３個のカラムが定義されている。そのうちの８つは、テーブル「ＴＢＬ＿ＰＥＲＳＯＮ」に含まれるカラムであり、残りの５つは、テーブル「ＴＢＬ＿ＦＡＭＩＬＹ」に含まれるカラムである。すなわち、テーブル「ＴＢＬ＿ＰＥＲＳＯＮ」は、８つのカラム「ＰＥＲＳＯＮ＿ＩＤ」「ＮＡＭＥ」「ＮＡＭＥ＿ＫＡＮＡ」「ＴＹＰＥ＿ＣＯＤＥ」「ＨＯＭＥ＿ＡＤＤＲＥＳＳ」「ＨＯＭＥ＿ＰＨＯＮＥ」「ＥＮＴＲＹＤＡＹ」「ＢＩＲＴＨＤＡＹ」を含み、テーブル「ＴＢＬ＿ＦＡＭＩＬＹ」は、５つのカラム「ＦＡＭＩＬＹ＿ＩＤ」「ＰＥＲＳＯＮ＿ＩＤ」「ＲＥＬＡＴＩＯＮＳＨＩＰ＿ＣＯＤＥ」「ＢＩＲＴＨＤＡＹ」「ＮＡＭＥ」を含む。
利用者は、構築データベースで使うテーブルとしてテーブル「ＴＢＬ＿ＰＥＲＳＯＮ」を選択した場合、そのテーブルに含まれる８つのカラムのなかから、構築データベースで使いたいカラムを選択する。利用者は、８つのカラムをすべて選択してもよいし、そのなかのいくつかだけを選択してもよい。また、制約５２５が「ＰＲＩＭＡＲＹ  ＫＥＹ」であるカラム「ＰＥＲＳＯＮ＿ＩＤ」は必ず選択しなければならないなどの条件を設けてもよい。その場合、カラム選択部２４２は、利用者がカラム「ＰＥＲＳＯＮ＿ＩＤ」を選択しないなど、条件に反する選択をした場合に警告をする構成であってもよいし、カラム「ＰＥＲＳＯＮ＿ＩＤ」をあらかじめ選択して変更できないようにしておくなど、利用者が条件に反する選択をできない構成であってもよい。
また、この８つ以外に、利用者が構築データベースのテーブル「ＴＢＬ＿ＰＥＲＳＯＮ」で使いたいカラムがある場合には、追加カラム入力部２４１がカラムを追加することにより、この８つ以外のカラムを選択できるようになる。
【００３４】
図７は、この実施の形態におけるインデックス基本データ５３０の一例を示す図である。
インデックス基本データ５３０は、データベースで使用するインデックスの基本的な情報を定義するデータである。インデックス基本データ５３０は、インデックス設計データの一部である。
インデックス基本データ５３０は、インデックスＩＤ５３１・対象テーブルＩＤ５３２・インデックス名５３３の組を複数含む。一組のインデックスＩＤ５３１・対象テーブルＩＤ５３２・インデックス名５３３・説明文５３４は、一つのインデックスについての定義を表わす。それが複数組あることにより、インデックス基本データ５３０は、複数のインデックスについての定義を表わす。
【００３５】
インデックスＩＤ５３１は、そのインデックスを一意に識別するための文字列データである。インデックスＩＤ５３１は、例えば、追加インデックス入力部２５１がそのインデックスを追加する際、自動的に生成したものであってもよい。なお、対象テーブルＩＤ５３２によってインデックスを識別する場合には、インデックスＩＤ５３１はなくてもよい。
対象テーブルＩＤ５３２は、そのインデックスの対象となるテーブルのテーブルＩＤ５１１を表わす文字列データである。なお、テーブルＩＤ５１１ではなくテーブル名５１２によってテーブルを識別する場合には、対象テーブルＩＤ５３２に代えて、対象テーブル名を設ける。対象テーブル名は、そのインデックスの対象となるテーブルのテーブル名５１２を表わす文字列データである。
インデックス名５３３は、そのインデックスの名前を表わす文字列データである。
説明文５３４は、そのインデックスがどんなインデックスであるかを利用者に教えるための文字列データである。説明文５３４は、例えば、インデックス選択部２５２がインデックス名５３３とともに表示する。利用者は、表示された説明文５３４を読み、構築データベースで使いたいインデックスを選択する。
【００３６】
この例では、３つのインデックスが定義されている。このうち、インデックス「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ」及び「ＩＤＸ＿ＰＥＲＳＯＮ＿ＴＹＰＥ＿ＣＯＤＥ」は、テーブル「ＴＢＬ＿ＰＥＲＳＯＮ」を対象とし、インデックス「ＩＤＸ＿ＦＡＭＩＬＹ＿ＰＥＲＳＯＮ＿ＩＤ」は、テーブル「ＴＢＬ＿ＦＡＭＩＬＹ」を対象とする。
利用者は、この３つのインデックスのなかから、構築データベースで使いたいインデックスを選択する。利用者は、３つのインデックスをすべて選択してもよいし、そのうちのいくつかだけを選択してもよいし、１つも選択しなくてもよい。また、選択したテーブルを対象とするインデックス以外は選択できないなどの条件を設けてもよい。その場合、インデックス選択部２５２は、選択していないテーブルを対象とするインデックスを表示しないなど、利用者が条件に反する選択をできない構成であってもよい。
【００３７】
図８は、この実施の形態におけるキー設計データ５４０の一例を示す図である。
キー設計データ５４０は、データベースで使用するインデックスのキーとなるカラムを定義するデータである。キー設計データ５４０は、インデックス設計データの一部である。
キー設計データ５４０は、キーＩＤ５４１・所属インデックスＩＤ５４２・対象カラムＩＤ５４３・優先順位５４４の組を複数含む。一組のキーＩＤ５４１・所属インデックスＩＤ５４２・対象カラムＩＤ５４３・優先順位５４４は、一つのキーについての定義を表わす。それが複数組あることにより、キー設計データ５４０は、複数のキーについての定義を表わす。
【００３８】
キーＩＤ５４１は、そのキーを一意に識別するための文字列データである。キーＩＤ５４１は、例えば、追加インデックス入力部２５１がそのキーを含むインデックスを追加する際、自動的に生成したものであってもよい。
所属インデックスＩＤ５４２は、そのキーが含まれるインデックスのインデックスＩＤ５３１を表わす文字列データである。なお、インデックスＩＤ５３１ではなくインデックス名５３３によってインデックスを識別する場合、所属インデックスＩＤ５４２に代えて、所属インデックス名を設ける。所属インデックス名は、そのキーが含まれるインデックスのインデックス名５３３を表わす文字列データである。
対象カラムＩＤ５４３は、そのキーが含まれるインデックスの対象となるテーブルにおいてインデックス生成のキーとなるカラムのカラムＩＤ５２１を表わす文字列データである。なお、カラムＩＤ５２１ではなくカラム名５２３によってカラムを識別する場合、対象カラムＩＤ５４３に代えて、対象カラム名を設ける。対象カラム名は、そのキーが含まれるインデックスの対象となるテーブルにおいてインデックス生成のキーとなるカラムのカラム名５２３を表わす文字列データである。
優先順位５４４は、そのキーの優先順位を表わす数値データである。例えば、一つのインデックスに含まれるキーが複数ある場合、優先順位５４４の数値が小さいキーが優先される。
【００３９】
この例では、１２個のキーが定義されている。そのうちの４つは、インデックス「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ」に含まれるキーであり、別の４つは、インデックス「ＩＤＸ＿ＰＥＲＳＯＮ＿ＴＹＰＥ＿ＣＯＤＥ」に含まれるキーであり、残りの４つは、インデックス「ＩＤＸ＿ＦＡＭＩＬＹ＿ＰＥＲＳＯＮ＿ＩＤ」に含まれるキーである。すなわち、インデックス「ＩＤＸ＿ＰＥＲＳＯＭ＿ＮＡＭＥ＿ＫＡＮＡ」は、優先順位の高いほうから順に、４つのカラム「ＮＡＭＥ＿ＫＡＮＡ」「ＮＡＭＥ」「ＥＮＴＲＹＤＡＹ」「ＰＥＲＳＯＮ＿ＩＤ」をキーとし、インデックス「ＩＤＸ＿ＰＥＲＳＯＮ＿ＴＹＰＥ＿ＣＯＤＥ」は、優先順位の高いほうから順に、４つのカラム「ＴＹＰＥ＿ＣＯＤＥ」「ＮＡＭＥ＿ＫＡＮＡ」「ＮＡＭＥ」「ＰＥＲＳＯＮ＿ＩＤ」をキーとし、インデックス「ＩＤＸ＿ＦＡＭＩＬＹ＿ＰＥＲＳＯＮ＿ＩＤ」は、優先順位の高いほうから順に、４つのカラム「ＰＥＲＳＯＮ＿ＩＤ」「ＢＩＲＴＨＤＡＹ」「ＲＥＬＡＴＩＯＮＳＨＩＰ＿ＣＯＤＥ」「ＦＡＭＩＬＹ＿ＩＤ」をキーとする。
なお、利用者が構築データベースで使うカラムとして選択しなかったカラムは、インデックスのキーとしない。例えば、テーブル「ＴＢＬ＿ＰＥＲＳＯＮ」のカラムとして、カラム「ＥＮＴＲＹＤＡＹ」を選択しなかった場合、インデックス「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ」は、カラム「ＥＮＴＲＹＤＡＹ」を除く３つのカラム「ＮＡＭＥ＿ＫＡＮＡ」「ＮＡＭＥ」「ＰＥＲＳＯＮ＿ＩＤ」をキーとする。
【００４０】
図９は、この実施の形態におけるデータベース設計処理Ｓ６００の流れの一例を示すフローチャート図である。
データベース設計処理Ｓ６００において、データベース設計装置２００は、利用者の操作に基づいて、利用者が設計した構築データベースで使用するテーブルなどを表わすデータベース使用データを生成する。
【００４１】
データベース設計処理Ｓ６００は、設計データ入力工程Ｓ６１１、テーブル一覧表示工程Ｓ６２１、追加テーブル入力工程Ｓ６２２、選択テーブル生成工程Ｓ６２３、カラム一覧表示工程Ｓ６３１、追加カラム入力工程Ｓ６３２、選択カラム生成工程Ｓ６３３、インデックス一覧表示工程Ｓ６４１、追加インデックス入力工程Ｓ６４２、選択インデックス生成工程Ｓ６４３、設計データ出力工程Ｓ６１２、使用データ出力工程Ｓ６１３を有する。
【００４２】
設計データ入力工程Ｓ６１１において、設計データ入力部２１１は、ＣＰＵ９１１を用いて、設計データ記憶装置８１０が記憶したデータベース設計データを入力する。設計テーブル記憶部２２１は、ＨＤＤ９２０を用いて、設計データ入力部２１１が入力したデータベース設計データに含まれるテーブル設計データを記憶する。設計インデックス記憶部２２２は、ＨＤＤ９２０を用いて、設計データ入力部２１１が入力したデータベース設計データに含まれるインデックス設計データを記憶する。
【００４３】
テーブル一覧表示工程Ｓ６２１において、テーブル選択部２３２は、表示装置９０１を用いて、設計テーブル記憶部２２１が記憶したテーブル設計データが表わすテーブルの一覧を表示する。
利用者は、キーボード９０２を操作して、表示されたテーブルのなかから、構築データベースで使いたいテーブルを選択する。利用者が使いたいテーブルを選択した場合、選択テーブル生成工程Ｓ６２３へ進む。
また、利用者は、表示されたテーブル以外のテーブルを構築データベースで使いたい場合、キーボード９０２を操作して、新たなテーブルを追加することを選択する。利用者が新たなテーブルを追加することを選択した場合、追加テーブル入力工程Ｓ６２２へ進む。
また、利用者は、使いたいテーブルをすべて選択し終わった場合、キーボード９０２を操作して、テーブル選択を終了することを選択する。利用者がテーブル選択の終了を選択した場合、設計データ出力工程Ｓ６１２へ進む。
【００４４】
追加テーブル入力工程Ｓ６２２において、追加テーブル入力部２３１は、キーボード９０２を用いて、利用者の操作を入力し、利用者が追加しようとする新たなテーブルの定義を入力する。追加テーブル入力部２３１は、例えば、新たなテーブルのテーブル名、説明文、そのテーブルに含まれるカラムのカラム名、データ型、制約、説明文などを入力する。
設計テーブル記憶部２２１は、ＣＰＵ９１１を用いて、記憶したテーブル設計データを更新し、追加テーブル入力部２３１が入力した定義により定義される新たなテーブルを追加する。
その後、テーブル一覧表示工程Ｓ６２１に戻る。
【００４５】
選択テーブル生成工程Ｓ６２３において、テーブル選択部２３２は、ＣＰＵ９１１を用いて、テーブル一覧表示工程Ｓ６２１で利用者が選択したテーブルを表わす使用テーブルデータを生成する。
【００４６】
カラム一覧表示工程Ｓ６３１において、カラム選択部２４２は、表示装置９０１を用いて、設計テーブル記憶部２２１が記憶したテーブル設計データに含まれるカラム設計データ５２０に基づいて、テーブル一覧表示工程Ｓ６２１で利用者が選択したテーブルに含まれるカラムの一覧を表示する。
利用者は、キーボード９０２を操作して、表示されたカラムのなかから、そのテーブルで使いたいカラムを選択する。利用者が使いたいカラムを選択した場合、選択カラム生成工程Ｓ６３３へ進む。
また、利用者は、表示されたカラム以外のカラムをそのテーブルで使いたい場合、キーボード９０２を操作して、新たなカラムを追加することを選択する。利用者が新たなカラムを追加することを選択した場合、追加カラム入力工程Ｓ６３２へ進む。
また、利用者は、そのテーブルで使いたいカラムをすべて選択し終わった場合、キーボード９０２を操作して、カラム選択を終了することを選択する。利用者がカラム選択の終了を選択した場合、インデックス一覧表示工程Ｓ６４１へ進む。
【００４７】
追加カラム入力工程Ｓ６３２において、追加カラム入力部２４１は、キーボード９０２を用いて、利用者の操作を入力し、利用者が追加しようとする新たなカラムの定義を入力する。追加カラム入力部２４１は、例えば、新たなカラムのカラム名、データ型、制約、説明文などを入力する。
設計テーブル記憶部２２１は、ＣＰＵ９１１を用いて、記憶したテーブル設計データを更新し、追加カラム入力部２４１が入力した定義により定義される新たなカラムを追加する。
その後、カラム一覧表示工程Ｓ６３１に戻る。
【００４８】
選択カラム生成工程Ｓ６３３において、カラム選択部２４２は、ＣＰＵ９１１を用いて、カラム一覧表示工程Ｓ６３１で利用者が選択したカラムを表わす使用カラムデータを生成する。
その後、カラム一覧表示工程Ｓ６３１に戻る。
【００４９】
インデックス一覧表示工程Ｓ６４１において、インデックス選択部２５２は、表示装置９０１を用いて、設計インデックス記憶部２２２が記憶したインデックス設計データに基づいて、テーブル一覧表示工程Ｓ６２１で利用者が選択したテーブルを対象とするインデックスの一覧を表示する。
利用者は、キーボード９０２を操作して、表示されたインデックスのなかから、そのテーブルを対象として使いたいインデックスを選択する。利用者が使いたいインデックスを選択した場合、選択インデックス生成工程Ｓ６４３へ進む。
また、利用者は、表示されたインデックス以外のインデックスを使いたい場合、キーボード９０２を操作して、新たなインデックスを追加することを選択する。利用者が新たなインデックスを追加することを選択した場合、追加インデックス入力工程Ｓ６４２へ進む。
また、利用者は、そのテーブルを対象として使いたいインデックスをすべて選択し終わった場合、キーボード９０２を操作して、インデックス選択を終了することを選択する。利用者がインデックス選択の終了を選択した場合、テーブル一覧表示工程Ｓ６２１に戻る。
【００５０】
追加インデックス入力工程Ｓ６４２において、追加インデックス入力部２５１は、キーボード９０２を用いて、利用者の操作を入力し、利用者が追加しようとする新たなインデックスの定義を入力する。追加インデックス入力部２５１は、例えば、新たなインデックスのインデックス名、説明文、キーとするカラム名、キーの優先順位などを入力する。
設計インデックス記憶部２２２は、ＣＰＵ９１１を用いて、記憶したインデックス設計データを更新し、追加インデックス入力部２５１が入力した定義により定義される新たなインデックスを追加する。
その後、インデックス一覧表示工程Ｓ６４１に戻る。
【００５１】
選択インデックス生成工程Ｓ６４３において、インデックス選択部２５２は、ＣＰＵ９１１を用いて、インデックス一覧表示工程Ｓ６４１で利用者が選択したインデックスを表わす使用インデックスデータを生成する。
その後、インデックス一覧表示工程Ｓ６４１に戻る。
【００５２】
設計データ出力工程Ｓ６１２において、設計データ出力部２１２は、ＣＰＵ９１１を用いて、設計テーブル記憶部２２１が記憶したテーブル設計データと、設計インデックス記憶部２２２が記憶したインデックス設計データとに基づいて生成したデータベース設計データを出力する。
設計データ記憶装置８１０は、設計データ出力部２１２が出力したデータベース設計データを記憶する。
【００５３】
使用データ出力工程Ｓ６１３において、使用データ出力部２１３は、ＣＰＵ９１１を用いて、テーブル選択部２３２が生成した使用テーブルデータと、カラム選択部２４２が生成した使用カラムデータと、インデックス選択部２５２が生成した使用インデックスデータとに基づいて生成したデータベース使用データを出力する。
使用データ記憶装置８２０は、使用データ出力部２１３が出力したデータベース使用データを記憶する。
【００５４】
図１０は、この実施の形態における使用データ出力部２１３が生成するデータベース使用データ５６０の一例を示す図である。
データベース使用データ５６０は、選択テーブルリスト５６１、選択カラムリスト５６２、選択インデックスリスト５６３を含む。
【００５５】
選択テーブルリスト５６１（サポートテーブル情報）は、利用者が選択したテーブルの一覧である。選択テーブルリスト５６１は、使用テーブルデータの一例である。選択テーブルリスト５６１は、利用者が選択した各テーブルのテーブルＩＤ５１１を表わす文字列データを含む。
選択カラムリスト５６２は、利用者が選択したカラムの一覧である。選択カラムリスト５６２は、使用カラムデータの一例でる。選択カラムリスト５６２は、利用者が選択した各カラムのカラムＩＤ５２１を表わす文字列データを含む。
選択インデックスリスト５６３（サポートインデックス情報）は、利用者が選択したインデックスの一覧である。選択インデックスリスト５６３は、使用インデックスデータの一例である。選択インデックスリスト５６３は、利用者が選択した各インデックスのインデックスＩＤ５３１を表わす文字列データを含む。
【００５６】
この例におけるデータベース使用データ５６０は、利用者が、１つのテーブル「ＴＢＬ＿ＰＥＲＳＯＮ」を選択し、７つのカラム「ＰＥＲＳＯＮ＿ＩＤ」「ＮＡＭＥ」「ＮＡＭＥ＿ＫＡＮＡ」「ＴＹＰＥ＿ＣＯＤＥ」「ＨＯＭＥ＿ＡＤＤＲＥＳＳ」「ＨＯＭＥ＿ＰＨＯＮＥ」「ＢＩＲＴＨＤＡＹ」を選択し、１つのインデックス「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ］を選択したことを表わす。
【００５７】
図１１は、この実施の形態におけるデータベース定義生成装置１００の機能ブロックの構成の一例を示すブロック構成図である。
データベース定義生成装置１００は、設計データ入力部１１１、使用データ入力部１１２、定義データ出力部１１３、テーブル設計記憶部１２１、インデックス設計記憶部１２２、使用テーブル記憶部１３１、定義記憶部１３４、使用カラム記憶部１４１、テーブル定義生成部１４３、使用インデックス記憶部１５１、使用インデックス判定部１５２、インデックス定義生成部１５３を有する。
【００５８】
設計データ入力部１１１は、ＣＰＵ９１１を用いて、設計データ記憶装置８１０が記憶したデータベース設計データを入力する。設計データ入力部１１１は、ＣＰＵ９１１を用いて、入力したデータベース設計データから、テーブル設計データと、インデックス設計データとを取得する。設計データ入力部１１１は、ＣＰＵ９１１を用いて、取得したテーブル設計データと、インデックス設計データとを出力する。
テーブル設計記憶部１２１は、ＣＰＵ９１１を用いて、設計データ入力部１１１が出力したテーブル設計データを入力する。テーブル設計記憶部１２１は、ＨＤＤ９２０を用いて、入力したテーブル設計データを記憶する。
インデックス設計記憶部１２２は、ＣＰＵ９１１を用いて、設計データ入力部１１１が出力したインデックス設計データを入力する。インデックス設計記憶部１２２は、使用データ記憶装置８２０を用いて、入力したインデックス設計データを記憶する。
【００５９】
なお、データベース設計データは、１つのファイルにすべての情報が記述された構成であってもよいし、複数のファイルに情報が分散されて記述された構成であってもよい。また、ファイル以外の形式で記憶される構成であってもよい。
【００６０】
使用データ入力部１１２は、ＣＰＵ９１１を用いて、使用データ記憶装置８２０が記憶したデータベース使用データを入力する。使用データ入力部１１２は、ＣＰＵ９１１を用いて、入力したデータベース使用データから、使用テーブルデータと、使用カラムデータと、使用インデックスデータとを取得する。使用データ入力部１１２は、ＣＰＵ９１１を用いて、取得した使用テーブルデータと、使用カラムデータと、使用インデックスデータとを出力する。
使用テーブル記憶部１３１は、ＣＰＵ９１１を用いて、使用データ入力部１１２が出力した使用テーブルデータを入力する。使用テーブル記憶部１３１は、ＨＤＤ９２０を用いて、入力した使用テーブルデータを記憶する。
使用カラム記憶部１４１は、ＣＰＵ９１１を用いて、使用データ入力部１１２が出力した使用カラムデータを入力する。使用カラム記憶部１４１は、ＨＤＤ９２０を用いて、入力した使用カラムデータを記憶する。
使用インデックス記憶部１５１は、ＣＰＵ９１１を用いて、使用データ入力部１１２が出力した使用インデックスデータを入力する。使用インデックス記憶部１５１は、ＨＤＤ９２０を用いて、入力した使用インデックスデータを記憶する。
【００６１】
なお、データベース使用データ（サポート機能データ）は、１つのファイルにすべての情報が記述された構成であってもよいし、複数のファイルに情報が分散されて記述された構成であってもよい。また、ファイル以外の形式で記憶される構成であってもよい。
【００６２】
テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル設計記憶部１２１が記憶したテーブル設計データと、使用テーブル記憶部１３１が記憶した使用テーブルデータと、使用カラム記憶部１４１が記憶した使用カラムデータとを入力する。テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、入力した使用テーブルデータに基づいて、構築データベースで使用するテーブルを判別する。また、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、入力した使用カラムデータに基づいて、判別したテーブルに含まれるカラムを判別する。テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、入力したテーブル設計データに基づいて、判別したテーブルを定義するテーブル定義データを生成する。テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、生成したテーブル定義データを出力する。
テーブル定義データは、例えばＳＱＬ文など、データベース管理装置８６０が解釈できる形式のデータである。テーブル定義データは、例えば「ＣＲＥＡＴＥ  ＴＡＢＬＥ」コマンドなど、データベース管理装置８６０に対して、そのテーブルの生成を指示する内容を表わす。テーブル定義データには、そのテーブルに含まれるカラムを定義するデータが含まれる。
【００６３】
使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データと、使用テーブル記憶部１３１が記憶した使用テーブルデータと、使用インデックス記憶部１５１が記憶した使用インデックスデータとを入力する。使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、入力したインデックス設計データと、入力した使用テーブルデータと、入力した使用インデックスデータとに基づいて、構築データベースで使用するインデックスを判別する。使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、判別した結果を表わすデータを出力する。
構築データベースでインデックスを使用するか否かの判定基準は、例えば、以下のとおりである。
第一に、使用インデックスデータに基づいて、構築データベースで使用しないとされているインデックスは、使用しないと判定する。
第二に、使用インデックスデータに基づいて構築データベースで使用するとされているインデックスであっても、そのインデックスが対象としているテーブルが、使用テーブルデータに基づいて、構築データベースで使用しないとされている場合、そのインデックスは、使用しないと判定する。
第三に、以上２つの条件のどちらも満足しないインデックス、すなわち、使用インデックスデータに基づいて構築データベースで使用するとされていて、かつ、そのインデックスが対象としているテーブルが使用テーブルデータに基づいて構築データベースで使用するとされているインデックスは、使用すると判定する。
【００６４】
インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データと、使用カラム記憶部１４１が記憶した使用カラムデータと、使用インデックス判定部１５２が出力したデータとを入力する。インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、入力したデータが表わす使用インデックス判定部１５２の判別結果に基づいて、構築データベースで使用するインデックスを判別する。インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、入力したインデックス設計データと、入力した使用カラムデータとに基づいて、判別したインデックスに含まれるキーのうち、使用するキーを判別する。インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、判別したインデックスを定義するインデックス定義データを生成する。インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、生成したインデックス定義データを出力する。
インデックス定義データは、テーブル定義データと同じく、例えばＳＱＬ文など、データベース管理装置８６０が解釈できる形式のデータである。インデックス定義データは、例えば「ＣＲＥＡＴＥ  ＩＮＤＥＸ」コマンドなど、データベース管理装置８６０に対して、そのインデックスの生成を指示する内容を表わす。インデックス定義データは、対象となるテーブルや、キーとして使用するカラムを示すデータを含む。
【００６５】
定義記憶部１３４は、ＨＤＤ９２０を用いて、データベース定義データを記憶する。データベース定義データは、テーブル定義生成部１４３が生成したテーブル定義データと、インデックス定義生成部１５３が生成したインデックス定義データとを含む。定義記憶部１３４は、テーブル定義記憶部１４４、インデックス定義記憶部１５４を有する。
テーブル定義記憶部１４４は、ＣＰＵ９１１を用いて、テーブル定義生成部１４３が出力したテーブル定義データを入力する。テーブル定義記憶部１４４は、ＨＤＤ９２０を用いて、入力したテーブル定義データを記憶する。
インデックス定義記憶部１５４は、ＣＰＵ９１１を用いて、インデックス定義生成部１５３が出力したインデックス定義データを入力する。インデックス定義記憶部１５４は、ＨＤＤ９２０を用いて、入力したインデックス定義データを記憶する。
【００６６】
定義データ出力部１１３は、ＣＰＵ９１１を用いて、テーブル定義記憶部１４４が記憶したテーブル定義データ及びインデックス定義記憶部１５４が記憶したインデックス定義データを入力する。定義データ出力部１１３は、ＣＰＵ９１１を用いて、入力したテーブル定義データと、入力したインデックス定義データとを含むデータベース定義データを生成する。定義データ出力部１１３は、ＣＰＵ９１１を用いて、生成したデータベース定義データを外部に出力する。
定義データ出力部１１３が出力したデータベース定義データは、例えば、定義データ記憶装置８５０が入力して記憶し、データベース管理装置８６０が読み出して利用する。
【００６７】
図１２は、この実施の形態におけるデータベース定義生成処理Ｓ７００の流れの一例を示すフローチャート図である。
データベース定義生成処理Ｓ７００において、データベース定義生成装置１００は、データベース設計データと、データベース使用データとに基づいて、データベース定義データを生成する。
データベース定義生成処理Ｓ７００は、データ入力工程Ｓ７１１、定義初期化工程Ｓ７１２、テーブル定義生成工程Ｓ７２０、インデックス定義生成工程Ｓ７４０、定義データ出力工程Ｓ７１３を有する。
【００６８】
データ入力工程Ｓ７１１において、設計データ入力部１１１は、ＣＰＵ９１１を用いて、設計データ記憶装置８１０が記憶したデータベース設計データを入力する。テーブル設計記憶部１２１は、ＨＤＤ９２０を用いて、設計データ入力部１１１が入力したデータベース設計データに含まれるテーブル設計データを記憶する。インデックス設計記憶部１２２は、ＨＤＤ９２０を用いて、設計データ入力部１１１が入力したデータベース設計データに含まれるインデックス設計データを記憶する。
使用データ入力部１１２は、ＣＰＵ９１１を用いて、使用データ記憶装置８２０が記憶したデータベース使用データを入力する。使用テーブル記憶部１３１は、ＨＤＤ９２０を用いて、使用データ入力部１１２が入力したデータベース使用データに含まれる使用テーブルデータを記憶する。使用カラム記憶部１４１は、ＨＤＤ９２０を用いて、使用データ入力部１１２が入力したデータベース使用データに含まれる使用カラムデータを記憶する。使用インデックス記憶部１５１は、ＨＤＤ９２０を用いて、使用データ入力部１１２が入力したデータベース使用データに含まれる使用インデックスデータを記憶する。
【００６９】
定義初期化工程Ｓ７１２において、テーブル定義記憶部１４４は、ＣＰＵ９１１を用いて、記憶したテーブル定義データ（ＳＱＬバッファ）を初期化して、空文字列とする。テーブル定義記憶部１４４は、ＨＤＤ９２０を用いて、初期化したテーブル定義データを記憶する。
インデックス定義記憶部１５４は、ＣＰＵ９１１を用いて、記憶したインデックス定義データ（ＳＱＬバッファ）を初期化して、空文字列とする。インデックス定義記憶部１５４は、ＨＤＤ９２０を用いて、初期化したテーブル定義データを記憶する。
【００７０】
以下の工程において、テーブル定義生成部１４３がデータを生成すると、テーブル定義記憶部１４４は、ＣＰＵ９１１を用いて、記憶したテーブル定義データの後に、テーブル定義生成部１４３が生成したデータを連結して、テーブル定義データを更新する。テーブル定義記憶部１４４は、ＨＤＤ９２０を用いて、更新したテーブル定義データを記憶する。このようにして、テーブル定義生成部１４３が生成したデータをテーブル定義記憶部１４４が順に連結することにより、テーブル定義データを生成する。
同様に、インデックス定義生成部１５３がデータを生成すると、インデックス定義記憶部１５４は、ＣＰＵ９１１を用いて、記憶したインデックス定義データの後に、インデックス定義生成部１５３が生成したデータを連結して、インデックス定義データを更新する。インデックス定義記憶部１５４は、ＨＤＤ９２０を用いて、更新したインデックス定義データを記憶する。このようにして、インデックス定義生成部１５３が生成したデータをインデックス定義記憶部１５４が順に連結することにより、インデックス定義データを生成する。
【００７１】
テーブル定義生成工程Ｓ７２０において、データベース定義生成装置１００は、テーブル定義データを生成する。
テーブル定義生成工程Ｓ７２０は、テーブル選択工程Ｓ７２１、テーブル判定工程Ｓ７２２、テーブル定義開始生成工程Ｓ７２３、カラム選択工程Ｓ７２４、カラム判定工程Ｓ７２５、テーブル定義終了生成工程Ｓ７２６、カラム定義生成工程Ｓ７３０を有する。
【００７２】
テーブル選択工程Ｓ７２１において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、定義されているすべてのテーブルのなかから、未処理のテーブルを１つずつ選択する。
未処理のテーブルがあり、テーブル定義生成部１４３がテーブルを選択した場合、テーブル判定工程Ｓ７２２へ進む。
選択すべきテーブルがすべて処理済であり、テーブル定義生成部１４３がテーブルを選択しなかった場合、テーブル定義生成工程Ｓ７２０を終了し、インデックス定義生成工程Ｓ７４０へ進む。
【００７３】
テーブル判定工程Ｓ７２２において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、使用テーブル記憶部１３１が記憶した使用テーブルデータに基づいて、テーブル選択工程Ｓ７２１で選択したテーブルが、構築データベースで使用するとされているか否かを判定する。
そのテーブルが使用するとされていると判定した場合、テーブル定義開始生成工程Ｓ７２３へ進む。
そのテーブルが使用しないとされていると判定した場合、テーブル選択工程Ｓ７２１に戻り、次のテーブルを選択する。
【００７４】
テーブル定義開始生成工程Ｓ７２３において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、テーブル選択工程Ｓ７２１で選択したテーブルについて、テーブル定義開始データを生成する。テーブル定義開始データは、テーブル定義データの一部であり、一つのテーブルの定義を開始することを表わす。
【００７５】
カラム選択工程Ｓ７２４において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、テーブル選択工程Ｓ７２１で選択したテーブルに含まれるカラムのなかから、未処理のカラムを１つずつ選択する。
未処理のカラムがあり、テーブル定義生成部１４３がカラムを選択した場合、カラム判定工程Ｓ７２５へ進む。
選択すべきカラムがすべて処理済であり、テーブル定義生成部１４３がカラムを選択しなかった場合、テーブル定義終了生成工程Ｓ７２６へ進む。
【００７６】
テーブル定義終了生成工程Ｓ７２６（終端処理）において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル定義終了データを生成する。テーブル定義終了データは、テーブル定義データの一部であり、一つのテーブルの定義が終了したことを表わす。
その後、テーブル選択工程Ｓ７２１に戻り、次のテーブルを選択する。
【００７７】
カラム判定工程Ｓ７２５において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、使用カラム記憶部１４１が記憶した使用カラムデータに基づいて、カラム選択工程Ｓ７２４で選択したカラムが、そのテーブルで使用するとされているか否かを判定する。
そのカラムが使用するとされていると判定した場合、カラム定義生成工程Ｓ７３０へ進む。
そのカラムが使用しないとされていると判定した場合、カラム選択工程Ｓ７２４に戻り、次のカラムを選択する。
【００７８】
カラム定義生成工程Ｓ７３０において、テーブル定義生成部１４３は、カラム定義データを生成する。カラム定義データは、テーブル定義データの一部であり、カラムの定義を表わす。
カラム定義生成工程Ｓ７３０は、カラム先頭判定工程Ｓ７３１、カラム区切り生成工程Ｓ７３２、カラム生成工程Ｓ７３３、カラム制約判定工程Ｓ７３４、カラム制約生成工程Ｓ７３５を有する。
【００７９】
カラム先頭判定工程Ｓ７３１において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、そのテーブルについてカラム定義生成工程Ｓ７３０を実行するのが初めてであるか二回目以降であるか、すなわち、そのカラムがテーブルの先頭であるか否かを判定する。
そのカラムがそのテーブルの先頭であると判定した場合、カラム生成工程Ｓ７３３へ進む。
そのカラムがそのテーブルの先頭でないと判定した場合、カラム区切り生成工程Ｓ７３２へ進む。
【００８０】
カラム区切り生成工程Ｓ７３２において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、カラム定義区切りデータを生成する。カラム定義区切りデータは、テーブル定義データの一部であり、複数のカラム定義データの区切りを表わす。
【００８１】
カラム生成工程Ｓ７３３において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、カラム選択工程Ｓ７２４で選択したカラムについて、カラム基本定義データを生成する。カラム基本定義データは、カラム定義データの一部であり、カラム名・データ型など、すべてのカラムに定義すべき基本的な情報の定義を表わす。
【００８２】
カラム制約判定工程Ｓ７３４において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、カラム選択工程Ｓ７２４で選択したカラムに、制約が定義されているか否かを判定する。
そのカラムに制約が定義されていると判定した場合、カラム制約生成工程Ｓ７３５へ進む。
そのカラムに制約が定義されていないと判定した場合、カラム定義生成工程Ｓ７３０を終了して、カラム選択工程Ｓ７２４に戻り、次のカラムを選択する。
【００８３】
カラム制約生成工程Ｓ７３５において、テーブル定義生成部１４３は、ＣＰＵ９１１を用いて、テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、カラム選択工程Ｓ７２４で選択したカラムについて、カラム制約定義データを生成する。カラム制約定義データは、カラム定義データの一部であり、そのカラムの制約の定義を表わす。
その後、カラム定義生成工程Ｓ７３０を終了して、カラム選択工程Ｓ７２４に戻り、次のカラムを選択する。
【００８４】
インデックス定義生成工程Ｓ７４０において、データベース定義生成装置１００は、インデックス定義データを生成する。
インデックス定義生成工程Ｓ７４０は、インデックス選択工程Ｓ７４１、インデックス判定工程Ｓ７４２、インデックス定義開始生成工程Ｓ７４３、キー選択工程Ｓ７４４、キー判定工程Ｓ７４５、インデックス定義終了生成工程Ｓ７４６、キー定義生成工程Ｓ７５０を有する。
【００８５】
インデックス選択工程Ｓ７４１において、使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データに基づいて、定義されているすべてのインデックスのなかから、未処理のインデックスを１つずつ選択する。
未処理のインデックスがあり、使用インデックス判定部１５２がインデックスを選択した場合、インデックス判定工程Ｓ７４２へ進む。
選択すべきインデックスがすべて処理済であり、使用インデックス判定部１５２がインデックスを選択しなかった場合、インデックス定義生成工程Ｓ７４０を終了して、定義データ出力工程Ｓ７１３へ進む。
【００８６】
インデックス判定工程Ｓ７４２において、使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、使用インデックス記憶部１５１が記憶した使用インデックスデータに基づいて、インデックス選択工程Ｓ７４１で選択したインデックスが構築データベースで使用するとされているか否かを判定する。
そのインデックスが構築データベースで使用しないとされていると判定した場合、インデックス選択工程Ｓ７４１に戻り、次のインデックスを選択する。
そのインデックスが構築データベースで使用するとされていると判定した場合、使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データに基づいて、インデックス選択工程Ｓ７４１で選択したインデックスが対象とするテーブルを判別する。使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、使用テーブル記憶部１３１が記憶した使用テーブルデータに基づいて、判別したテーブルが、構築データベースで使用するとされているか否かを判定する。
そのテーブルが使用しないとされていると判定した場合、インデックス選択工程Ｓ７４１に戻り、次のインデックスを選択する。
そのテーブルが使用するとされていると判定した場合、インデックス定義開始生成工程Ｓ７４３へ進む。
【００８７】
インデックス定義開始生成工程Ｓ７４３において、インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス定義データに基づいて、インデックス選択工程Ｓ７４１で選択したインデックスについて、インデックス定義開始データを生成する。インデックス定義開始データは、インデックス定義データの一部であり、一つのインデックスについての定義を開始することを表わす。
【００８８】
キー選択工程Ｓ７４４において、インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データに基づいて、インデックス選択工程Ｓ７４１で選択したインデックスに含まれるキーのなかから、未処理のキーを優先順位の高いほうから順に１つずつ選択する。
未処理のキーがあり、インデックス定義生成部１５３がキーを選択した場合、キー判定工程Ｓ７４５へ進む。
選択すべきキーがすべて処理済であり、インデックス定義生成部１５３がキーを選択しなかった場合、インデックス定義終了生成工程Ｓ７４６へ進む。
【００８９】
インデックス定義終了生成工程Ｓ７４６（終端処理）において、インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、インデックス定義終了データを生成する。インデックス定義終了データは、インデックス定義データの一部であり、一つのインデックスの定義が終了したことを表わす。
その後、インデックス選択工程Ｓ７４１に戻り、次のインデックスを選択する。
【００９０】
キー判定工程Ｓ７４５において、インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス定義データに基づいて、キー選択工程Ｓ７４４で選択したキーとなるカラムを判別する。インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、使用カラム記憶部１４１が記憶した使用カラムデータに基づいて、判別したカラムが、そのインデックスの対象となるテーブルで使用するとされているか否かを判定する。
そのカラムが使用するとされていると判定した場合、キー定義生成工程Ｓ７５０へ進む。
そのカラムが使用しないとされていると判定した場合、キー選択工程Ｓ７４４に戻り、次のキーを選択する。
【００９１】
キー定義生成工程Ｓ７５０において、インデックス定義生成部１５３は、キー定義データを生成する。キー定義データは、インデックス定義データの一部であり、キーの定義を表わす。
キー定義生成工程Ｓ７５０は、キー先頭判定工程Ｓ７５１、キー区切り生成工程Ｓ７５２、キー生成工程Ｓ７５３を有する。
【００９２】
キー先頭判定工程Ｓ７５１において、インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、そのインデックスについてキー定義生成工程Ｓ７５０を実行するのが初めてであるか二回目以降であるか、すなわち、そのキーがインデックスの先頭であるか否かを判定する。
そのキーがそのインデックスの先頭であると判定した場合、キー生成工程Ｓ７５３へ進む。
そのカラムがそのインデックスの先頭でないと判定した場合、キー区切り生成工程Ｓ７５２へ進む。
【００９３】
キー区切り生成工程Ｓ７５２において、インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、キー定義区切りデータを生成する。キー定義区切りデータは、インデックス定義データの一部であり、複数のキー定義データの区切りを表わす。
【００９４】
キー生成工程Ｓ７５３において、インデックス定義生成部１５３は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データに基づいて、キー選択工程Ｓ７４４で選択したキーについて、キー定義データを生成する。キー定義データは、キーとなるカラムのカラム名などを表わす。
その後、キー定義生成工程Ｓ７５０を終了して、キー選択工程Ｓ７４４に戻り、次のキーを選択する。
【００９５】
図１３は、この実施の形態におけるテーブル定義生成部１４３及びインデックス定義生成部１５３が生成するデータの一例を示す図である。
【００９６】
テーブル定義開始データ４１０は、テーブル定義開始生成工程Ｓ７２３でテーブル定義生成部１４３が生成する文字列データである。テーブル定義生成部１４３は、テーブル定義開始文字列４１１、テーブル名４１２、カラム定義開始文字列４１３を連結して、テーブル定義開始データ４１０とする。
テーブル定義開始文字列４１１は、テーブルの定義の開始を表わす所定の文字列である。
テーブル名４１２は、定義するテーブルのテーブル名を表わす文字列である。テーブル定義生成部１４３は、テーブル選択工程Ｓ７２１で選択したテーブルのテーブル名５１２をテーブル基本データ５１０から取得し、テーブル名４１２とする。
カラム定義開始文字列４１３は、定義するテーブルに含まれるカラムの定義の開始を表わす所定の文字列である。
【００９７】
カラム定義区切りデータ４２０は、カラム区切り生成工程Ｓ７３２でテーブル定義生成部１４３が生成する文字列データである。テーブル定義生成部１４３は、区切り文字４２１を、カラム定義区切りデータ４２０とする。
区切り文字４２１は、複数のカラム定義データの区切りを表わす所定の文字列である。
【００９８】
カラム基本定義データ４３０は、カラム生成工程Ｓ７３３でテーブル定義生成部１４３が生成する文字列データである。テーブル定義生成部１４３は、カラム名４３１、空白文字４３２、データ型４３３を連結して、カラム基本定義データ４３０とする。
カラム名４３１は、定義するカラムのカラム名を表わす文字列である。テーブル定義生成部１４３は、カラム選択工程Ｓ７２４で選択したカラムのカラム名５２３をカラム設計データ５２０から取得し、カラム名４３１とする。
空白文字４３２は、カラム名４３１とデータ型４３３との区切りを表わす所定の文字列である。
データ型４３３は、定義するカラムのデータ型を表わす文字列である。テーブル定義生成部１４３は、カラム選択工程Ｓ７２４で選択したカラムのデータ型５２４をカラム設計データ５２０から取得し、データ型４３３とする。
【００９９】
カラム制約定義データ４４０は、カラム制約生成工程Ｓ７３５でテーブル定義生成部１４３が生成する文字列データである。テーブル定義生成部１４３は、空白文字４４１、制約４４２を連結して、カラム制約定義データ４４０とする。
空白文字４４１は、データ型４３３と制約４４２との区切りを表わす所定の文字列である。制約４４２は、定義するカラムの制約を表わす文字列である。
テーブル定義生成部１４３は、カラム選択工程Ｓ７２４で選択したカラムの制約５２５をカラム設計データ５２０から取得し、制約４４２とする。
【０１００】
テーブル定義終了データ４５０は、テーブル定義終了生成工程Ｓ７２６でテーブル定義生成部１４３が生成する文字列データである。テーブル定義生成部１４３は、テーブル定義終了文字列４５１を、テーブル定義終了データ４５０とする。
テーブル定義終了文字列４５１は、そのテーブルの定義の終了を表わす所定の文字列である。
【０１０１】
インデックス定義開始データ４６０は、インデックス定義開始生成工程Ｓ７４３でインデックス定義生成部１５３が生成する文字列データである。インデックス定義生成部１５３は、インデックス定義開始文字列４６１、インデックス名４６２、区切り文字列４６３、テーブル名４６４、キー定義開始文字列４６５を連結して、インデックス定義開始データ４６０とする。
インデックス定義開始文字列４６１は、インデックスの定義の開始を表わす所定の文字列である。
インデックス名４６２は、定義するインデックスのインデックス名を表わす文字列である。インデックス定義生成部１５３は、インデックス選択工程Ｓ７４１で選択したインデックスのインデックス名５３３をインデックス基本データ５３０から取得し、インデックス名４６２とする。
区切り文字列４６３は、インデックス名４６２とテーブル名４６４との区切りを表わす所定の文字列である。
テーブル名４６４は、定義するインデックスが対象とするテーブルのテーブル名を表わす文字列である。インデックス定義生成部１５３は、インデックス選択工程Ｓ７４１で選択したインデックスが対象とするテーブルの対象テーブルＩＤ５３２をインデックス基本データ５３０から取得し、取得した対象テーブルＩＤ５３２がテーブルＩＤ５１１であるテーブルのテーブル名５１２をテーブル基本データ５１０から取得して、テーブル名４６４とする。
キー定義開始文字列４６５は、定義するインデックスに含まれるキーの定義の開始を表わす所定の文字列である。
【０１０２】
キー定義区切りデータ４７０は、キー区切り生成工程Ｓ７５２でインデックス定義生成部１５３が生成する文字列データである。インデックス定義生成部１５３は、区切り文字４７１を、キー定義区切りデータ４７０とする。
区切り文字４７１は、複数のキー定義データの区切りを表わす所定の文字列である。
【０１０３】
キー定義データ４８０は、カラム区切り生成工程Ｓ７３２でインデックス定義生成部１５３が生成する文字列データである。インデックス定義生成部１５３は、カラム名４８１を、キー定義データ４８０とする。
カラム名４８１は、定義するインデックスに含まれるキーとなるカラムのカラム名を表わす文字列である。インデックス定義生成部１５３は、キー選択工程Ｓ７４４で選択したキーとなるカラムの対象カラムＩＤ５４３をキー設計データ５４０から取得し、取得した対象カラムＩＤ５４３がカラムＩＤ５２１であるカラムのカラム名５２３をカラム設計データ５２０から取得して、カラム名４８１とする。
【０１０４】
インデックス定義終了データ４９０は、インデックス定義終了生成工程Ｓ７４６でインデックス定義生成部１５３が生成する文字列データである。インデックス定義生成部１５３は、インデックス定義終了文字列４９１を、インデックス定義終了データ４９０とする。
インデックス定義終了文字列４９１は、そのインデックスの定義の終了を表わす所定の文字列である。
【０１０５】
図１４は、この実施の形態におけるデータベース定義生成装置１００が生成するテーブル定義データの一例を示す図である。
この例におけるテーブル定義データは、ＳＱＬ文である。なお、改行や字下げは、見やすくするために挿入されているものであり、データベース定義生成装置１００が生成するテーブル定義データの一部ではない。しかし、データベース定義生成装置１００は、このような改行や字下げを含むテーブル定義データを生成する構成であってもよい。
図５〜図８及び図１０に示したテーブル基本データ５１０、カラム設計データ５２０、インデックス基本データ５３０、キー設計データ５４０及びデータベース使用データ５６０に基づいて、このテーブル定義データが生成される手順を見ていく。
【０１０６】
テーブル選択工程Ｓ７２１において、テーブル定義生成部１４３は、テーブル基本データ５１０のなかから、テーブルＩＤ５１１・テーブル名５１２・説明文５１３の組を先頭から順に１つずつ取得することにより、テーブルを１つずつ選択する。なお、説明文５１３はこのあとの処理で使わないので、テーブル定義生成部１４３は、説明文５１３を取得しない構成であってもよい。
この例では、テーブル定義生成部１４３は、最初に、テーブルＩＤ５１１「Ｔ０１」、テーブル名５１２「ＴＢＬ＿ＰＥＲＳＯＮ」を取得する。
【０１０７】
テーブル判定工程Ｓ７２２において、テーブル定義生成部１４３は、データベース使用データ５６０に含まれる選択テーブルリスト５６１に、テーブル選択工程Ｓ７２１で取得したテーブルＩＤ５１１「Ｔ０１」が含まれるか否かを判定する。
この例では、選択テーブルリスト５６１にテーブルＩＤ「Ｔ０１」が含まれているので、テーブル定義生成部１４３は、テーブル定義開始生成工程Ｓ７２３へ進む。
【０１０８】
テーブル定義開始生成工程Ｓ７２３において、テーブル定義生成部１４３は、テーブル基本データ５１０のなかから、テーブル選択工程Ｓ７２１で取得したテーブル名５１２「ＴＢＬ＿ＰＥＲＳＯＮ」を、テーブル名４１２とする。テーブル定義生成部１４３は、テーブル定義開始文字列４１１「ＣＲＥＡＴＥ  ＴＡＢＬＥ  」、テーブル名４１２「ＴＢＬ＿ＰＥＲＳＯＮ」、カラム定義開始文字列４１３「  （」を連結して、テーブル定義開始データ４１０「ＣＲＥＡＴＥ  ＴＡＢＬＥ  ＴＢＬ＿ＰＥＲＳＯＮ  （」を生成する。
【０１０９】
カラム選択工程Ｓ７２４において、テーブル定義生成部１４３は、カラム設計データ５２０のなかから、テーブル選択工程Ｓ７２１で選択したテーブルＩＤ５１１「Ｔ０１」に所属テーブルＩＤ５２２が一致するカラムＩＤ５２１・所属テーブルＩＤ５２２・カラム名５２３・データ型５２４・制約５２５・説明文５２６の組を先頭から順に１つずつ取得することにより、カラムを１つずつ選択する。なお、説明文５２６はこのあとの処理で使わないので、テーブル定義生成部１４３は、説明文５２６を取得しない構成であってもよい。
この例では、テーブル定義生成部１４３は、最初に、カラムＩＤ５２１「Ｃ１１」、所属テーブルＩＤ５２２「Ｔ０１」、カラム名５２３「ＰＥＲＳＯＮ＿ＩＤ」、データ型５２４「ＩＮＴ」、制約５２５「ＰＲＩＭＡＲＹ  ＫＥＹ」を取得する。
【０１１０】
カラム判定工程Ｓ７２５において、テーブル定義生成部１４３は、データベース使用データ５６０に含まれる選択カラムリスト５６２に、カラム選択工程Ｓ７２４で取得したカラムＩＤ５２１「Ｃ１１」が含まれるか否かを判定する。
この例では、選択カラムリスト５６２にカラムＩＤ「Ｃ１１」が含まれているので、テーブル定義生成部１４３は、カラム先頭判定工程Ｓ７３１へ進む。
【０１１１】
カラム先頭判定工程Ｓ７３１において、テーブル定義生成部１４３は、このカラムが先頭であるか否かを判定する。
この場合、このカラムが先頭なので、テーブル定義生成部１４３は、カラム生成工程Ｓ７３３へ進む。
【０１１２】
カラム生成工程Ｓ７３３において、テーブル定義生成部１４３は、カラム選択工程Ｓ７２４で取得したカラム名５２３「ＰＥＲＳＯＮ＿ＩＤ」をカラム名４３１とし、データ型５２４「ＩＮＴ」をデータ型４３３とする。テーブル定義生成部１４３は、カラム名４３１「ＰＥＲＳＯＮ＿ＩＤ」、空白文字４３２「  」、データ型４３３「ＩＮＴ」を連結して、カラム基本定義データ４３０「ＰＥＲＳＯＮ＿ＩＤ  ＩＮＴ」を生成する。
【０１１３】
カラム制約判定工程Ｓ７３４において、テーブル定義生成部１４３は、カラム選択工程Ｓ７２４で取得した制約５２５「ＰＲＩＭＡＲＹ  ＫＥＹ」が空欄であるか否かを判定することにより、そのカラムに制約が定義されているか否かを判定する。
この例において、制約「ＰＲＩＭＡＲＹ  ＫＥＹ」が空欄でないので、テーブル定義生成部１４３は、カラム制約生成工程Ｓ７３５へ進む。
【０１１４】
カラム制約生成工程Ｓ７３５において、テーブル定義生成部１４３は、カラム選択工程Ｓ７２４で取得した制約５２５「ＰＲＩＭＡＲＹ  ＫＥＹ」を制約４４２とする。テーブル定義生成部１４３は、空白文字４４１「  」、制約４４２「ＰＲＩＭＡＲＹ  ＫＥＹ」を連結して、カラム制約定義データ４４０「  ＰＲＩＭＡＲＹ  ＫＥＹ」を生成する。
【０１１５】
カラム選択工程Ｓ７２４に戻り、テーブル定義生成部１４３は、所属テーブルＩＤ５２２が「Ｔ０１」に一致する次のカラムを選択する。テーブル定義生成部１４３は、カラム設計データ５２０から、カラムＩＤ５２１「Ｃ１２」、所属テーブルＩＤ５２２「Ｔ０１」、カラム名５２３「ＮＡＭＥ」、データ型５２４「ＣＨＡＲ［３２］」、制約５２５「ＮＯＴ  ＮＵＬＬ」を取得する。
【０１１６】
カラム判定工程Ｓ７２５において、テーブル定義生成部１４３は、選択カラムリスト５６２にカラムＩＤ５２１「Ｃ１２」が含まれると判定し、カラム先頭判定工程Ｓ７３１へ進む。
カラム先頭判定工程Ｓ７３１において、テーブル定義生成部１４３は、そのカラムが先頭でないと判定し、カラム区切り生成工程Ｓ７３２へ進む。
カラム区切り生成工程Ｓ７３２において、テーブル定義生成部１４３は、カラム定義区切りデータ４２０として区切り文字４２１「，」を生成する。
カラム生成工程Ｓ７３３において、テーブル定義生成部１４３は、カラム基本定義データ４３０「ＮＡＭＥ  ＣＨＡＲ［３２］」を生成する。
カラム制約判定工程Ｓ７３４において、テーブル定義生成部１４３は、そのカラムに制約が定義されていると判定し、カラム制約生成工程Ｓ７３５へ進む。
カラム制約生成工程Ｓ７３５において、テーブル定義生成部１４３は、カラム制約定義データ４４０「  ＮＯＴ  ＮＵＬＬ」を生成する。
【０１１７】
カラム選択工程Ｓ７２４に戻り、テーブル定義生成部１４３は、所属テーブルＩＤ５２２が「Ｔ０１」に一致する次のカラムを選択する。テーブル定義生成部１４３は、カラム設計データ５２０から、カラムＩＤ５２１「Ｃ１３」、所属テーブルＩＤ５２２「Ｔ０１」、カラム名５２３「ＮＡＭＥ＿ＫＡＮＡ」、データ型５２４「ＣＨＡＲ［３２］」、制約５２５「（空欄）」を取得する。
カラム判定工程Ｓ７２５において、テーブル定義生成部１４３は、選択カラムリスト５６２にカラムＩＤ「Ｃ１３」が含まれると判定し、カラム先頭判定工程Ｓ７３１へ進む。
カラム先頭判定工程Ｓ７３１において、テーブル定義生成部１４３は、そのカラムが先頭でないと判定し、カラム区切り生成工程Ｓ７３２へ進む。
カラム区切り生成工程Ｓ７３２において、テーブル定義生成部１４３は、カラム定義区切りデータ４２０として区切り文字４２１「，」を生成する。
カラム生成工程Ｓ７３３において、テーブル定義生成部１４３は、カラム基本定義データ４３０「ＮＡＭＥ＿ＫＡＮＡ  ＣＨＡＲ［３２］」を生成する。
カラム制約判定工程Ｓ７３４において、テーブル定義生成部１４３は、そのカラムに制約が定義されていないと判定し、カラム選択工程Ｓ７２４に戻る。
【０１１８】
同様にして、テーブル定義生成部１４３は、カラムＩＤ５２１「Ｃ１４」のカラムについて、カラム定義区切りデータ４２０「，」、カラム基本定義データ４３０「ＴＹＰＥ＿ＣＯＤＥ  ＩＮＴ」を生成し、カラムＩＤ５２１「Ｃ１５」のカラムについて、カラム定義区切りデータ４２０「，」、カラム基本定義データ４３０「ＨＯＭＥ＿ＡＤＤＲＥＳＳ  ＶＡＲＣＨＡＲ」を生成し、カラムＩＤ５２１「Ｃ１６」のカラムについて、カラム定義区切りデータ４２０「，」、カラム基本定義データ４３０「ＨＯＭＥ＿ＰＨＯＮＥ  ＣＨＡＲ［１６］」を生成する。
【０１１９】
テーブル定義生成部１４３は、カラムＩＤ５２１「Ｃ１７」のカラムについて、カラム判定工程Ｓ７２５において、選択カラムリスト５６２にカラムＩＤ「Ｃ１７」が含まれていないと判定し、そのカラムについてのカラム定義データを生成せずに、カラム選択工程Ｓ７２４に戻る。
【０１２０】
テーブル定義生成部１４３は、カラムＩＤ５２１「Ｃ１８」のカラムについて、カラム定義区切りデータ４２０「，」、カラム基本定義データ４３０「ＢＩＲＴＨＤＡＹ  ＤＡＴＥ」を生成する。
【０１２１】
カラム選択工程Ｓ７２４に戻り、テーブル定義生成部１４３は、所属テーブルＩＤ５２２が「Ｔ０１」に一致するカラムをすべて選択し終わったと判定し、テーブル定義終了生成工程Ｓ７２６へ進む。
【０１２２】
テーブル定義終了生成工程Ｓ７２６において、テーブル定義生成部１４３は、テーブル定義終了データ４５０としてテーブル定義終了文字列４５１「）；」を生成する。
【０１２３】
テーブル選択工程Ｓ７２１に戻り、テーブル定義生成部１４３は、次のテーブルを選択する。テーブル定義生成部１４３は、テーブル基本データ５１０から、テーブルＩＤ５１１「Ｔ０２」、テーブル名５１２「ＴＢＬ＿ＦＡＭＩＬＹ」を取得する。
テーブル判定工程Ｓ７２２において、テーブル定義生成部１４３は、選択テーブルリスト５６１にテーブルＩＤ「Ｔ０２」が含まれていないと判定し、そのテーブルについてのテーブル定義データを生成せずに、テーブル選択工程Ｓ７２１に戻る。
【０１２４】
テーブル選択工程Ｓ７２１において、テーブル定義生成部１４３は、すべてのテーブルを選択し終わったと判定し、テーブル定義生成工程Ｓ７２０を終了して、インデックス定義生成工程Ｓ７４０へ進む。
【０１２５】
図１５は、この実施の形態におけるデータベース定義生成装置１００が生成するインデックス定義データの一例を示す図である。
この例におけるインデックス定義データは、ＳＱＬ文である。なお、改行や字下げは、見やすくするために挿入されているものであり、データベース定義生成装置１００が生成するインデックス定義データの一部ではない。しかし、データベース定義生成装置１００は、このような改行や字下げを含むインデックス定義データを生成する構成であってもよい。
図５〜図８及び図１０に示したテーブル基本データ５１０、カラム設計データ５２０、インデックス基本データ５３０、キー設計データ５４０及びデータベース使用データ５６０に基づいて、このインデックス定義データが生成される手順を見ていく。
【０１２６】
インデックス選択工程Ｓ７４１において、使用インデックス判定部１５２は、インデックス基本データ５３０のなかから、インデックスＩＤ５３１・対象テーブルＩＤ５３２・インデックス名５３３・説明文５３４の組を先頭から順に１つずつ取得することにより、インデックスを１つずつ選択する。なお、説明文５３４はこのあとの処理で使わないので、使用インデックス判定部１５２は、説明文５３４を取得しない構成であってもよい。
この例では、使用インデックス判定部１５２は、最初に、インデックスＩＤ５３１「Ｉ０５」、対象テーブルＩＤ５３２「Ｔ０１」、インデックス名５３３「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ」を取得する。
【０１２７】
インデックス判定工程Ｓ７４２において、使用インデックス判定部１５２は、データベース使用データ５６０に含まれる選択インデックスリスト５６３に、インデックス選択工程Ｓ７４１で取得したインデックスＩＤ５３１「Ｉ０５」が含まれるか否かを判定する。
この例では、選択インデックスリスト５６３にインデックスＩＤ［Ｉ０５」が含まれているので、使用インデックス判定部１５２は、データベース使用データ５６０に含まれる選択テーブルリスト５６１に、インデックス選択工程Ｓ７４１で取得した対象テーブルＩＤ５３２「Ｔ０１」が含まれるか否かを判定する。
この例では、選択テーブルリスト５６１にテーブルＩＤ「Ｔ０１」が含まれているので、使用インデックス判定部１５２は、インデックス定義開始生成工程Ｓ７４３へ進む。
【０１２８】
インデックス定義開始生成工程Ｓ７４３において、インデックス定義生成部１５３は、インデックス選択工程Ｓ７４１で使用インデックス判定部１５２が取得したインデックス名５３３「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ」をインデックス名４６２とする。インデックス定義生成部１５３は、インデックス選択工程Ｓ７４１で使用インデックス判定部１５２が取得した対象テーブルＩＤ５３２「Ｔ０１」と一致するテーブルＩＤ５１１と組になっているテーブル名５１２「ＴＢＬ＿ＰＥＲＳＯＮ」を、テーブル基本データ５１０から取得して、テーブル名４６４とする。インデックス定義生成部１５３は、インデックス定義開始文字列４６１「ＣＲＥＡＴＥ  ＩＮＤＥＸ  」、インデックス名４６２「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ」、区切り文字列４６３「  ＯＮ  」、テーブル名４６４「ＴＢＬ＿ＰＥＲＳＯＮ」、キー定義開始文字列４６５「  （」を連結して、インデックス定義開始データ４６０「ＣＲＥＡＴＥ  ＩＮＤＥＸ  ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ  ＯＮ  ＴＢＬ＿ＰＥＲＳＯＮ  （」を生成する。
【０１２９】
キー選択工程Ｓ７４４において、インデックス定義生成部１５３は、キー設計データ５４０のなかから、インデックス選択工程Ｓ７４１で選択したインデックスＩＤ５３１「Ｉ０５」に所属インデックスＩＤ５４２が一致するキーＩＤ５４１・所属インデックスＩＤ５４２・対象カラムＩＤ５４３・優先順位５４４の組を、優先順位５４４が高い順に１つずつ取得することにより、インデックスを１つずつ選択する。
この例では、インデックス定義生成部１５３は、最初に、キーＩＤ５４１「Ｋ５１」、所属インデックスＩＤ５４２「Ｉ０５」、対象カラムＩＤ５４３「Ｃ１３」、優先順位５４４「１」を取得する。
【０１３０】
キー判定工程Ｓ７４５において、インデックス定義生成部１５３は、データベース使用データ５６０に含まれる選択カラムリスト５６２に、キー選択工程Ｓ７４４で取得した対象カラムＩＤ５４３「Ｃ１３」が含まれるか否かを判定する。
この例では、選択カラムリスト５６２にカラムＩＤ「Ｃ１３」が含まれているので、インデックス定義生成部１５３は、キー先頭判定工程Ｓ７５１へ進む。
【０１３１】
キー先頭判定工程Ｓ７５１において、インデックス定義生成部１５３は、このキーが先頭であるか否かを判定する。
この場合、このキーが先頭なので、インデックス定義生成部１５３は、キー生成工程Ｓ７５３へ進む。
【０１３２】
キー生成工程Ｓ７５３において、インデックス定義生成部１５３は、キー選択工程Ｓ７４４で取得した対象カラムＩＤ５４３「Ｃ１３」に一致するカラムＩＤ５２１と組になっているカラム名５２３「ＮＡＭＥ＿ＫＡＮＡ」を、カラム設計データ５２０から取得し、カラム名４８１とする。インデックス定義生成部１５３は、キー定義データ４８０としてカラム名４８１「ＮＡＭＥ＿ＫＡＮＡ」を生成する。
【０１３３】
キー選択工程Ｓ７４４に戻り、テーブル定義生成部１４３は、所属インデックスＩＤ５４２が「Ｉ０５」に一致し、優先順位５４４が２番目のキーを選択する。インデックス定義生成部１５３は、キー設計データ５４０から、キーＩＤ５４１「Ｋ５２」、所属インデックスＩＤ５４２「Ｉ０５」、対象カラムＩＤ５４３「Ｃ１２」、優先順位５４４「２」を取得する。
【０１３４】
キー判定工程Ｓ７４５において、インデックス定義生成部１５３は、選択カラムリスト５６２に対象カラムＩＤ５４３「Ｃ１２」が含まれると判定し、キー先頭判定工程Ｓ７５１へ進む。
キー先頭判定工程Ｓ７５１において、インデックス定義生成部１５３は、そのキーが先頭でないと判定し、キー区切り生成工程Ｓ７５２へ進む。
キー区切り生成工程Ｓ７５２において、インデックス定義生成部１５３は、キー定義区切りデータ４７０として区切り文字４７１「，」を生成する。
キー生成工程Ｓ７５３において、インデックス定義生成部１５３は、キー定義データ４８０「ＮＡＭＥ」を生成する。
【０１３５】
キー選択工程Ｓ７４４に戻り、テーブル定義生成部１４３は、所属インデックスＩＤ５４２が「Ｉ０５」に一致し、優先順位５４４が３番目のキーを選択する。インデックス定義生成部１５３は、キー設計データ５４０から、キーＩＤ５４１「Ｋ５３」、所属インデックスＩＤ５４２「Ｉ０５」、対象カラムＩＤ５４３「Ｃ１７」、優先順位５４４「３」を取得する。
【０１３６】
キー判定工程Ｓ７４５において、インデックス定義生成部１５３は、選択カラムリスト５６２に対象カラムＩＤ５４３「Ｃ１７」が含まれていないと判定し、そのキーについてのキー定義データを生成せずに、キー選択工程Ｓ７４４に戻る。
【０１３７】
キー選択工程Ｓ７４４において、テーブル定義生成部１４３は、所属インデックスＩＤ５４２が「Ｉ０５」に一致し、優先順位５４４が４番目のキーを選択する。インデックス定義生成部１５３は、キー設計データ５４０から、キーＩＤ５４１「Ｋ５４」、所属インデックスＩＤ５４２「Ｉ０５」、対象カラムＩＤ５４３「Ｃ１１」、優先順位５４４「４」を取得する。
【０１３８】
キー判定工程Ｓ７４５において、インデックス定義生成部１５３は、選択カラムリスト５６２に対象カラムＩＤ５４３「Ｃ１１」が含まれると判定し、キー先頭判定工程Ｓ７５１へ進む。
キー先頭判定工程Ｓ７５１において、インデックス定義生成部１５３は、そのキーが先頭でないと判定し、キー区切り生成工程Ｓ７５２へ進む。
キー区切り生成工程Ｓ７５２において、インデックス定義生成部１５３は、キー定義区切りデータ４７０として区切り文字４７１「，］を生成する。
キー生成工程Ｓ７５３において、インデックス定義生成部１５３は、キー定義データ４８０「ＰＥＲＳＯＮ＿ＩＤ」を生成する。
【０１３９】
キー選択工程Ｓ７４４に戻り、インデックス定義生成部１５３は、所属インデックスＩＤ５４２が「Ｉ０５」に一致するキーをすべて選択し終わったと判定し、インデックス定義終了生成工程Ｓ７４６へ進む。
【０１４０】
インデックス定義終了生成工程Ｓ７４６において、インデックス定義生成部１５３は、インデックス定義終了データ４９０としてインデックス定義終了文字列４９１「）；」を生成する。
【０１４１】
インデックス選択工程Ｓ７４１に戻り、使用インデックス判定部１５２は、次のインデックスを選択する。使用インデックス判定部１５２は、インデックスＩＤ５３１「Ｉ０６」、対象テーブルＩＤ５３２「Ｔ０１」、インデックス名５３３「ＩＮＸ＿ＰＥＲＳＯＮ＿ＴＹＰＥ＿ＣＯＤＥ」を取得する。
インデックス判定工程Ｓ７４２において、使用インデックス判定部１５２は、データベース使用データ５６０に含まれる選択インデックスリスト５６３に、インデックス選択工程Ｓ７４１で取得したインデックスＩＤ５３１「Ｉ０６」が含まれていないと判定し、そのインデックスについてのインデックス定義データを生成せずに、インデックス選択工程Ｓ７４１に戻る。
【０１４２】
インデックス選択工程Ｓ７４１において、使用インデックス判定部１５２は、次のインデックスを選択する。使用インデックス判定部１５２は、インデックスＩＤ５３１「Ｉ０７」、対象テーブルＩＤ５３２「Ｔ０２」、インデックス名５３３「ＩＤＸ＿ＦＡＭＩＬＹ＿ＰＥＲＳＯＮ＿ＩＤ」を取得する。
インデックス判定工程Ｓ７４２において、使用インデックス判定部１５２は、データベース使用データ５６０に含まれる選択インデックスリスト５６３に、インデックス選択工程Ｓ７４１で取得したインデックスＩＤ５３１「Ｉ０７」が含まれていないと判定し、そのインデックスについてのインデックス定義データを生成せずに、インデックス選択工程Ｓ７４１に戻る。
【０１４３】
ちなみに、もし仮に、選択インデックスリスト５６３にインデックスＩＤ５３１「Ｉ０７」が含まれていたとしても、使用インデックス判定部１５２は、データベース使用データ５６０に含まれる選択テーブルリスト５６１に、インデックス選択工程Ｓ７４１で取得した対象テーブルＩＤ５３２「Ｔ０２」が含まれていないと判定するので、やはり、そのインデックスについてのインデックス定義データを生成せずに、インデックス選択工程Ｓ７４１に戻る。
【０１４４】
インデックス選択工程Ｓ７４１において、使用インデックス判定部１５２は、すべてのインデックスを選択し終わったと判定し、インデックス定義生成工程Ｓ７４０を終了して、定義データ出力工程Ｓ７１３へ進む。
【０１４５】
以上のようにして生成されたデータベース定義データに基づいて、データベース管理装置８６０がデータベースを構築する。
このように、データベース構築システム８００は、テーブル設計データやインデックス設計データなどのデータベース設計データに基づいて、新たに構築するデータベースを定義するデータベース定義データを生成するので、高度な知識を有さない利用者であっても、新たなデータベースを構築することができる。
【０１４６】
データベースの構築に際して、データベース設計データのなかに、新たに構築するデータベースに必要なテーブルやカラムやインデックスの定義がない場合には、これを追加することにより、データベース設計データを充実化する。また、データベース設計データのなかに、新たに構築するデータベースには不要なテーブルやカラムやインデックスの定義がある場合でも、これを削除せずに残しておく。したがって、データベースを構築すればするほど、過去に構築したデータベースで使用したテーブルやカラムやインデックスの定義が、データベース設計データに蓄積されていく。
これにより、テータベース構築に必要な労力を大幅に削減することができる。
【０１４７】
この実施の形態におけるデータベース定義生成装置１００は、データを記憶する記憶装置（ＨＤＤ９２０、ＲＡＭ９１４など）と、データを処理する処理装置（ＣＰＵ９１１）と、テーブル設計記憶部１２１と、使用テーブル記憶部１３１と、テーブル定義生成部１４３と、定義記憶部１３４とを有する。
上記テーブル設計記憶部１２１は、上記記憶装置を用いて、データベースで使用されるテーブルを定義するテーブル設計データを記憶する。
上記使用テーブル記憶部１３１は、上記記憶装置を用いて、上記テーブル設計記憶部１２１が記憶したテーブル設計データが定義するテーブルのうち、構築する構築データベースで使用するテーブルを表わす使用テーブルデータを記憶する。
上記テーブル定義生成部１４３は、上記処理装置を用いて、上記使用テーブル記憶部１３１が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部１２１が記憶したテーブル設計データに基づいて、上記テーブルを定義するテーブル定義データを生成する。
上記定義記憶部１３４は、上記記憶装置を用いて、上記構築データベースを定義するデータベース定義データとして、上記テーブル定義生成部が生成したテーブル定義データを記憶する。
【０１４８】
この実施の形態におけるデータベース定義生成装置１００によれば、テーブル設計データによって定義されるテーブルのなかから、構築データベースで使用するテーブルを選択して、使用テーブルデータを生成しておけば、データベース定義生成装置１００が、選択したテーブルを含むデータベースを定義するデータベース定義データを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１４９】
この実施の形態におけるデータベース定義生成装置１００は、更に、使用カラム記憶部１４１を有する。
上記テーブル設計記憶部１２１は、上記記憶装置を用いて、上記テーブル設計データとして、上記テーブルが含むカラムを定義するカラム設計データを記憶する。
上記使用カラム記憶部１４１は、上記記憶装置を用いて、上記使用テーブル記憶部１３１が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部１２１が記憶したカラム設計データが定義するカラムのうち、上記構築データベースで使用するカラムを表わす使用カラムデータを記憶する。
上記テーブル定義生成部１４３は、上記処理装置を用いて、上記使用テーブル記憶部１３１が記憶した使用テーブルデータが表わすテーブルについて、上記テーブル設計記憶部１２１が記憶したカラム設計データに基づいて、上記使用カラム記憶部１４１が記憶した使用カラムデータが表わすカラムを含むテーブルを定義するテーブル定義データを生成する。
【０１５０】
この実施の形態におけるデータベース定義生成装置１００によれば、カラム設計データによって定義されるカラムのなかから、構築データベースで使用するカラムを選択して、使用カラムデータを生成しておけば、データベース定義生成装置１００が、選択したカラムを含むテーブルを含むデータベースを定義するデータベース定義データを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１５１】
この実施の形態におけるデータベース定義生成装置１００は、更に、インデックス設計記憶部１２２と、使用インデックス判定部１５２と、インデックス定義生成部１５３とを有する。
上記インデックス設計記憶部１２２は、上記記憶装置を用いて、上記テーブル設計記憶部１２１が記憶したテーブル設計データが定義するテーブルについて、上記テーブルを対象とするインデックスを定義するインデックス設計データを記憶する。
上記使用インデックス判定部１５２は、上記処理装置を用いて、上記インデックス設計記憶部１２２が記憶したインデックス設計データが表わすインデックスのうち、上記構築データベースで使用するインデックスを判定する。
上記インデックス定義生成部１５３は、上記処理装置を用いて、上記構築データベースで使用すると上記使用インデックス判定部１５２が判定したインデックスについて、上記インデックス設計記憶部１２２が記憶したインデックス設計データに基づいて、上記インデックスを定義するインデックス定義データを生成する。
上記定義記憶部１３４は、上記記憶装置を用いて、上記データベース定義データとして、上記インデックス定義生成部１５３が生成したインデックス定義データを記憶する。
【０１５２】
この実施の形態におけるデータベース定義生成装置１００によれば、使用インデックス判定部１５２がデータベースで使用するインデックスを判定し、インデックス定義生成部１５３が、データベースで使用すると判定したインデックスを含むデータベースを定義するデータベース定義データを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１５３】
この実施の形態におけるデータベース定義生成装置１００は、更に、使用インデックス記憶部１５１を有する。
上記使用インデックス記憶部１５１は、上記記憶装置を用いて、上記インデックス設計記憶部１２２が記憶したインデックス設計データが定義するインデックスのうち、上記構築データベースで使用するインデックスを示す使用インデックスデータを記憶する。
上記使用インデックス判定部１５２は、上記処理装置を用いて、上記インデックス設計記憶部１２２が記憶したインデックス設計データに基づいて、上記使用インデックス記憶部１５１が記憶した使用インデックスデータが表わすインデックスのうち、上記使用テーブル記憶部１３１が記憶した使用テーブルデータが表わすテーブルを対象とするインデックスを、上記構築データベースで使用すると判定する。
【０１５４】
この実施の形態におけるデータベース定義生成装置１００によれば、インデックス設計データによって定義されるインデックスのなかから、構築データベースで使用するインデックスを選択して、使用インデックスデータを生成しておけば、データベース定義生成装置１００が、選択したインデックスを含むデータベースを定義するデータベース定義データを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１５５】
この実施の形態におけるデータベース定義生成装置１００において、上記インデックス設計記憶部１２２は、上記記憶装置を用いて、上記インデックス設計データとして、上記インデックスが対象とするテーブルについて、上記テーブル設計記憶部が記憶したカラム設計データが定義するカラムのうち、上記インデックスのキーとなるカラムを表わすキー設計データを記憶し、
上記インデックス定義生成部は、上記処理装置を用いて、上記インデックス設計記憶部が記憶したキー設計データが表わすカラムのうち、上記使用カラム記憶部が記憶した使用カラムデータが表わすカラムをキーとするインデックスを定義するインデックス定義データを生成する。
【０１５６】
この実施の形態におけるデータベース定義生成装置１００によれば、キー設計データによって定義されるインデックスのキーとなるカラムのうち、データベースに含まれるカラムをキーとするインデックスを定義するデータベース定義データを生成するので、専門的な知識の乏しい利用者であても、簡単にデータベースを構築することができる。
【０１５７】
この実施の形態におけるデータベース設計装置２００は、データを記憶する記憶装置（ＨＤＤ９２０、ＲＡＭ９１４など）と、データを処理する処理装置（ＣＰＵ９１１）と、利用者の操作を入力する操作入力装置（キーボード９０２など）と、設計テーブル記憶部２２１と、テーブル選択部２３２と、選択テーブル生成部（テーブル選択部２３２）と、選択テーブル記憶部（テーブル選択部２３２）とを有する。
上記設計テーブル記憶部２２１は、上記記憶装置を用いて、データベースで使用されるテーブルを定義するテーブル設計データを記憶する。
上記テーブル選択部２３２は、上記操作入力装置を用いて、上記設計テーブル記憶部２２１が記憶したテーブル設計データが定義するテーブルのうちから、構築する構築データベースで使用するテーブルを選択する操作を入力する。
上記選択テーブル生成部（テーブル選択部２３２）は、上記処理装置を用いて、上記テーブル選択部２３２が入力した操作に基づいて、上記構築データベースで使用するテーブルとして選択されたテーブルを表わす使用テーブルデータを生成する。
上記選択テーブル記憶部（テーブル選択部２３２）は、上記記憶装置を用いて、上記選択テーブル生成部（テーブル選択部２３２）が生成した使用テーブルデータを記憶する。
【０１５８】
この実施の形態におけるデータベース設計装置２００によれば、テーブル設計データによって定義されるテーブルのなかから、利用者が選択したテーブルを表わす使用テーブルデータを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１５９】
この実施の形態におけるデータベース設計装置２００は、更に、カラム選択部２４２と、選択カラム生成部（カラム選択部２４２）と、選択カラム記憶部（カラム選択部２４２）とを有する。
上記設計テーブル記憶部２２１は、上記テーブル設計データとして、上記テーブルが含むカラムを定義するカラム設計データを記憶する。
上記カラム選択部２４２は、上記操作入力装置を用いて、上記テーブル選択部２３２が入力した操作により上記構築データベースで使用するテーブルとして選択されたテーブルについて、上記設計テーブル記憶部２２１が記憶したカラム設計データが定義するカラムのうちから、上記構築データベースで使用するカラムを選択する操作を入力する。
上記選択カラム生成部（カラム選択部２４２）は、上記処理装置を用いて、上記カラム選択部２４２が入力した操作に基づいて、上記構築データベースで使用するカラムとして選択されたカラムを表わす使用カラムデータを生成する。
上記選択カラム記憶部（カラム選択部２４２）は、上記記憶装置を用いて、上記選択カラム生成部（カラム選択部２４２）が生成した使用カラムデータを記憶する。
【０１６０】
この実施の形態におけるデータベース設計装置２００によれば、カラム設計データによって定義されるカラムのなかから、利用者が選択したカラムを表わす使用カラムデータを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１６１】
この実施の形態におけるデータベース設計装置２００は、更に、追加カラム入力部２４１と、カラム追加部（追加カラム入力部２４１）とを有する。
上記追加カラム入力部２４１は、上記操作入力装置を用いて、上記設計テーブル記憶部２２１が記憶したテーブル設計データが定義するテーブルにカラムを追加する操作を入力する。
上記カラム追加部（追加カラム入力部２４１）は、上記処理装置を用いて、上記追加カラム入力部２４１が入力した操作に基づいて、上記設計テーブル記憶部２２１が記憶したカラム設計データを更新し、上記設計テーブル記憶部２２１が記憶したテーブル設計データが定義するテーブルにカラムを追加する。
【０１６２】
この実施の形態におけるデータベース設計装置２００によれば、カラム設計データによってデータベースで使用するカラムが定義されていない場合、カラム設計データを更新して、使用するカラムの定義を追加することができる。また、その後、別のデータベースを構築する際には、同じカラムの定義を入力する必要はなく、そのカラムを選択するだけでよいので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１６３】
この実施の形態におけるデータベース構築システム８００は、上記データベース設計装置２００と、上記データベース定義生成装置１００とを有する。
上記テーブル設計記憶部１２１は、上記記憶装置を用いて、上記設計テーブル記憶部２２１が記憶したテーブル設計データを記憶する。
上記使用テーブル記憶部１３１は、上記記憶装置を用いて、上記選択テーブル記憶部（テーブル選択部２３２）が記憶した使用テーブルデータを記憶する。
【０１６４】
この実施の形態におけるデータベース構築システム８００によれば、テーブル設計データによって定義されるテーブルのなかから利用者が選択したテーブルを表わす使用テーブルデータをデータベース設計装置２００が生成し、データベース設計装置２００が生成した使用テーブルデータに基づいて、データベースに含まれるテーブルを定義するデータベース定義データをデータベース定義生成装置１００が生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１６５】
この実施の形態におけるデータベース定義生成装置１００、データベース設計装置２００及びデータベース構築システム８００は、データを記憶する記憶装置（ＨＤＤ９２０、ＲＡＭ９１４など）とデータを処理する処理装置（ＣＰＵ９１１）とを有するコンピュータをデータベース定義生成装置１００またはデータベース設計装置２００またはデータベース構築システム８００として機能させるコンピュータプログラムを上記コンピュータが実行することにより、実現することができる。
【０１６６】
この実施の形態におけるコンピュータプログラム（ＳＱＬデータ生成プログラム）によれば、テーブル設計データによって定義されるテーブルのなかから、構築データベースで使用するテーブルを選択するだけで、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１６７】
この実施の形態におけるデータベース定義生成装置１００が、構築する構築データベースを定義するデータベース定義データを生成するデータベース定義生成方法は、以下の工程を有する。
上記処理装置（ＣＰＵ９１１）が、データベースで使用されるテーブルを定義するテーブル設計データと、上記テーブル設計データが定義するテーブルのうち上記構築データベースで使用するテーブルを表わす使用テーブルデータとに基づいて、上記使用テーブルデータが表わすテーブルについて、上記テーブルを定義するテーブル定義データを生成し、生成したテーブル定義データを上記データベース定義データとする。
【０１６８】
この実施の形態におけるデータベース定義生成方法によれば、テーブル設計データによって定義されるテーブルのなかから、構築データベースで使用するテーブルを選択するだけで、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０１６９】
以上説明したデータベース定義生成装置１００は、データベースのテーブルの設計に関する情報を含んだテーブル設計情報（テーブル設計データ）と、テーブル設計情報のうち開発対象データベース（構築データベース）で使用するテーブルを示すサポートテーブル情報（使用テーブルデータ）とから、開発対象データベースで使用するテーブルのみを含む、データベース構築のためのテーブル定義ＳＱＬ（テーブル定義データ）を生成する。
【０１７０】
テーブル設計情報には、テーブルに含まれるカラムの情報（カラム設計データ）が含まれ、サポートテーブル情報には、開発対象データベースで使用するカラムの情報（使用カラムデータ）が含まれ、テーブル定義ＳＱＬには、サポートテーブル情報に含まれたカラムのみが含まれる。
【０１７１】
また、データベース定義生成装置１００は、データベースのインデックスの設計に関する情報を含んだインデックス設計情報（インデックス設計データ）と、インデックス設計情報のうち開発対象データベースで使用するインデックスを示すサポートインデックス情報（使用インデックスデータ）とから、開発対象データベースで使用するインデックスのみを含む、データベース構築のためのインデックス定義ＳＱＬ（インデックス定義データ）を生成する。
【０１７２】
インデックス設計情報には、インデックスに含まれるカラムの情報（キー設計データ）が含まれ、サポートテーブル情報には、開発対象データベースで使用するカラムの情報（使用カラムデータ）が含まれ、インデックス定義ＳＱＬには、サポートテーブル情報に含まれたカラムのみが含まれる。
【０１７３】
なお、使用テーブルデータは、テーブル設計データにより定義されているテーブルのなかで使用するテーブルを表わすのではなく、使用しないテーブルを表わすものであってもよい。使用カラムデータ、使用インデックスデータも同様である。
【０１７４】
以上説明したデータベース定義生成装置１００（ＳＱＬ生成プログラム）は、テーブル設計情報（テーブル設計データ）及びテーブル設計情報内に記載されたテーブルのうち開発対象データベース（構築データベース）で使用するテーブルとそのテーブル内の使用するカラムを記載したサポートテーブル情報（使用テーブルデータ、使用カラムデータ）から、テーブル定義ＳＱＬ（テーブル定義データ）を自動的に生成する。
テーブル設計情報とは別に、サポートテーブル情報を入力するため、テーブル設計情報自体を変更することなく、開発対象データベースで使用するテーブルのみを含むテーブル定義ＳＱＬを生成することができる。
また、テーブル定義ＳＱＬには、開発対象データベースで使用するカラムのみが含まれる。実際に使用するテーブルやカラムのみを含むテーブル定義ＳＱＬを生成して、データベースを作成することにより、データベースが使用するハードディスクの容量が削減されるとともに、動作速度も高速化される。
【０１７５】
また、データベース定義生成装置１００（ＳＱＬ生成プログラム）は、インデックス設計情報（インデックス設計データ）、サポートテーブル情報（使用テーブルデータ、使用カラムデータ）及びサポートインデックス情報（使用インデックスデータ）から、インデックス定義ＳＱＬ（インデックス定義データ）を自動的に生成する。
インデックス設計情報とは別に、サポートテーブル情報とサポートインデックス情報を入力するため、インデックス設計情報自体を変更することなく、開発対象データベースで使用するインデックスとインデックス内のカラムのみを含むインデックス定義ＳＱＬを生成することができる。
実際に使用するインデックスとインデックス内のカラムのみを含むインデックス定義ＳＱＬを用いてデータベースを作成することにより、データベースが使用するハードディスクの容量が削減されるとともに、動作速度も高速化される。
【０１７６】
データベースの開発において不要なテーブル、テーブル内のカラム、インデックスなどがある場合であっても、主となるデータベース設計データからの削除が不要となるので、データベース設計データの再利用性を高めることができる。
データベース設計データは、同様のデータベースを開発する際に再利用することができ、開発者（利用者）によって継続的に追記・改良されていく。
【０１７７】
また、データベース設計データに含まれる機能の一部のみを用いたデーターベース開発する場合には、技術的ノウハウの必要なデータベース設計データの記述を行うことなしに、データベースを開発することができる。
【０１７８】
古いデータベースのデータベース設計データを改良して、新たなデータベースを開発する場合、開発者は、テーブルに関する追加・改良はテーブル設計情報（テーブル設計データ）へ追記し、インデックスに関する追加・改良はインデックス設計情報（インデックス設計データ）へ追記する。
また、テーブル設計情報のうち、使用するテーブルやカラムのみをサポートテーブル情報（使用テーブルデータ、使用カラムデータ）に記述し、使用しないテーブルやカラムは記述しない。同様に、インデックス設計情報のうち、使用するインデックスのみをサポートインデックス情報（使用インデックスデータ）に記述し、使用しないインデックスは記述しない。
【０１７９】
このようにして、古いデータベースのデータベース設計データを流用しながら新たなデータベースを開発していくことにより、過去に設計したテーブル、カラム、インデックスの情報がデータベース設計データに蓄積されていく。
テーブルへのカラム追加などの設計を行うには、性能や機能に関する考慮等の技術的ノウハウが必要であるが、過去に設計したテーブル、カラム、インデックスの情報がデータベース設計データに蓄積されていくことにより、そのような作業の必要性を削減できる。
【０１８０】
また、データベース設計データに含まれるテーブルやインデックスの設計情報が増えても、サポート機能データ（データベース使用データ）に使用するテーブル・カラム・インデックスの情報のみを記述することにより、使用する機能のみを含むＳＱＬデータを得ることができる。
【０１８１】
なお、サポートテーブル情報にはカラムの情報（使用カラムデータ）を記載せず、テーブル設計情報（テーブル設計データ）内のテーブルに含まれる全カラムを含むテーブル定義ＳＱＬ（テーブル定義データ）を生成する構成としてもよい。
インデックス定義ＳＱＬ（インデックス定義データ）の生成においても同様に、サポートテーブル情報（使用カラムデータ）によるカラムの選択を行わず、インデックス設計情報（インデックス設計データ）内のインデックスに含まれる全カラムを含むインデックス生成ＳＱＬ（インデックス定義データ）を生成する構成としてもよい。
【０１８２】
実施の形態２．
実施の形態２について、図１６〜図２０を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１８３】
この実施の形態におけるデータベース構築システム８００の全体構成は、実施の形態１と同様である。
設計データ記憶装置８１０が記憶するデータベース設計データは、実施の形態１で説明したテーブル設計データ及びインデックス設計データに加えて、更に、クエリ設計データを含む。
クエリ設計データは、データベースで使用するクエリを定義するデータである。
【０１８４】
図１６は、この実施の形態におけるデータベース設計装置２００の機能ブロックの構成の一例を示すブロック構成図である。
データベース設計装置２００は、実施の形態１で説明した機能ブロックのうち、インデックス選択部２５２を有さず、その代わり、設計クエリ記憶部２２３、追加クエリ入力部２６１、クエリ選択部２６２を有する。
【０１８５】
設計データ入力部２１１は、ＣＰＵ９１１を用いて、設計データ記憶装置８１０が記憶したデータベース設計データを入力する。設計データ入力部２１１は、ＣＰＵ９１１を用いて、入力したデータベース設計データから、テーブル設計データと、インデックス設計データと、クエリ設計データとを取得する。設計データ入力部２１１は、ＣＰＵ９１１を用いて、取得したテーブル設計データと、インデックス設計データと、クエリ設計データとを出力する。
設計クエリ記憶部２２３は、ＣＰＵ９１１を用いて、設計データ入力部２１１が出力したクエリ設計データを入力する。設計クエリ記憶部２２３は、ＨＤＤ９２０を用いて、入力したクエリ設計データを記憶する。
【０１８６】
クエリ選択部２６２は、ＣＰＵ９１１を用いて、設計クエリ記憶部２２３が記憶したクエリ設計データを入力する。クエリ選択部２６２は、表示装置９０１を用いて、入力したクエリ設計データにより定義されるクエリを表示する。クエリ選択部２６２は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、キーボード９０２を操作して、表示されたクエリのなかから、構築データベースで使いたいクエリを選択する。クエリ選択部２６２は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が選択したクエリを判別する。クエリ選択部２６２は、ＣＰＵ９１１を用いて、判別した結果に基づいて、利用者が選択したクエリの一覧を表わすデータ（以下「使用クエリデータ」と呼ぶ。）を生成する。クエリ選択部２６２は、ＣＰＵ９１１を用いて、生成した使用クエリデータを出力する。
【０１８７】
追加クエリ入力部２６１は、キーボード９０２を用いて、利用者の操作を入力する。利用者は、クエリ選択部２６２が表示したクエリのなかに、構築データベースで使いたいクエリがない場合、キーボード９０２を操作して、使いたいクエリの定義を入力する。追加クエリ入力部２６１は、ＣＰＵ９１１を用いて、入力した操作に基づいて、利用者が使いたいクエリを定義するデータを生成する。追加クエリ入力部２６１は、ＣＰＵ９１１を用いて、生成したデータを出力する。
設計クエリ記憶部２２３は、ＣＰＵ９１１を用いて、追加クエリ入力部２６１が出力したデータを入力する。設計クエリ記憶部２２３は、ＣＰＵ９１１を用いて、記憶したクエリ設計データを更新して、入力したデータにより定義されるクエリを追加する。設計クエリ記憶部２２３は、ＨＤＤ９２０を用いて、更新したクエリ設計データを記憶する。
【０１８８】
設計データ出力部２１２は、ＣＰＵ９１１を用いて、設計テーブル記憶部２２１が記憶したテーブル設計データと、設計インデックス記憶部２２２が記憶したインデックス設計データと、設計クエリ記憶部２２３が記憶したクエリ設計データとを入力する。設計データ出力部２１２は、ＣＰＵ９１１を用いて、入力したテーブル設計データと、入力したインデックス設計データと、入力したクエリ設計データとに基づいて、データベース設計データを生成する。設計データ出力部２１２は、ＣＰＵ９１１を用いて、生成したデータベース設計データを外部に出力する。
【０１８９】
使用データ出力部２１３は、ＣＰＵ９１１を用いて、テーブル選択部２３２が出力した使用テーブルデータと、カラム選択部２４２が出力した使用カラムデータと、クエリ選択部２６２が出力した使用クエリデータとを入力する。使用データ出力部２１３は、ＣＰＵ９１１を用いて、入力した使用テーブルデータと、入力した使用カラムデータと、入力した使用クエリデータとに基づいて、構築データベースで使用するテーブル・カラム・クエリなどを表わすデータベース使用データを生成する。使用データ出力部２１３は、ＣＰＵ９１１を用いて、生成したデータベース使用データを外部に出力する。
【０１９０】
図１７は、この実施の形態におけるクエリ設計データ５５０の一例を示す図である。
クエリ設計データ５５０は、クエリＩＤ５５１・使用インデックスＩＤ５５２・クエリ名５５３・ＳＱＬ文５５４・説明文５５５の組を複数含む。一組のクエリＩＤ５５１・使用インデックスＩＤ５５２・クエリ名５５３・ＳＱＬ文５５４・説明文５５５は、一つのクエリについての定義を表わす。それが複数あることにより、クエリ設計データ５５０は、複数のクエリについての定義を表わす。
【０１９１】
クエリＩＤ５５１は、そのクエリを一意に識別するための文字列データである。クエリＩＤ５５１は、例えば、追加クエリ入力部２６１がそのクエリを追加する際、自動的に生成したものであってもよい。なお、クエリ名５５３によってクエリを識別する場合には、クエリＩＤ５５１はなくてもよい。
使用インデックスＩＤ５５２は、そのクエリが使用するインデックスのインデックスＩＤ５３１を表わす文字列データである。なお、インデックスＩＤ５３１ではなくインデックス名５３３によってクエリを識別する場合には、使用インデックスＩＤ５５２に代えて、使用インデックス名を設ける。使用インデックス名は、そのクエリが使用するインデックスのインデックス名５３３を表わす文字列データである。また、そのクエリがインデックスを使用しない場合、使用インデックスＩＤ５５２は空欄であってもよい。
クエリ名５５３は、そのクエリの名前を表わす文字列データである。
ＳＱＬ文５５４は、そのクエリの内容をＳＱＬ形式で記述した文字列データである。
説明文５５５は、そのクエリがどんなクエリであるかを利用者に教えるための文字列データである。説明文５５５は、例えば、クエリ選択部２６２がクエリ名５５３とともに表示する。利用者は、表示された説明文５５５を読み、構築データベースで使いたいクエリを選択する。
【０１９２】
この例では、３つのクエリ「ＱＲＹ＿ＰＥＲＳＯＮ＿ＢＹ＿ＮＡＭＥ＿ＫＡＮＡ」「ＱＲＹ＿ＰＥＲＳＯＮ＿ＢＹ＿ＴＹＰＥ＿ＣＯＤＥ」「ＱＲＹ＿ＦＡＭＩＬＹ＿ＢＹ＿ＰＥＲＳＯＮ＿ＩＤ」が定義されている。利用者は、この３つのクエリのなかから、構築データベースで使いたいクエリを選択する。利用者は、３つのクエリをすべて選択してもよいし、そのうちいくつかだけを選択してもよいし、１つも選択しなくてもよい。また、選択したテーブルを対象とするクエリ以外は選択できないなどの条件を設けてもよい。その場合、クエリ選択部２６２は、選択していないテーブルを対象とするクエリを表示しないなど、利用者が条件に反する選択をできない構成であってもよい。
【０１９３】
図１８は、この実施の形態における使用データ出力部２１３が生成するデータベース使用データ５６０の一例を示す図である。
データベース使用データ５６０は、選択インデックスリスト５６３を含まず、その代わり、選択クエリリスト５６４を含む。
選択クエリリスト５６４（サポートクエリ情報）は、利用者が選択したクエリの一覧である。選択クエリリスト５６４は、使用クエリデータの一例である。選択クエリリスト５６４は、利用者が選択した各クエリのクエリＩＤ５５１を表わす文字列データを含む。
この例におけるデータベース使用データ５６０は、利用者が、１つのテーブル「ＴＢＬ＿ＰＥＲＳＯＮ」を選択し、７つのカラム「ＰＥＲＳＯＮ＿ＩＤ」「ＮＡＭＥ」「ＮＡＭＥ＿ＫＡＮＡ」「ＴＹＰＥ＿ＣＯＤＥ」「ＨＯＭＥ＿ＡＤＤＲＥＳＳ」「ＨＯＭＥ＿ＰＨＯＮＥ」「ＢＩＲＴＨＤＡＹ」を選択し、１つのクエリ「ＱＲＹ＿ＰＥＲＳＯＮ＿ＢＹ＿ＮＡＭＥ＿ＫＡＮＡ」を選択したことを表わす。
【０１９４】
図１９は、この実施の形態におけるデータベース定義生成装置１００の機能ブロックの構成の一例を示すブロック構成図である。
データベース定義生成装置１００は、実施の形態１で説明した機能ブロックのうち、使用インデックス記憶部１５１を有さず、その代わり、クエリ設計記憶部１２３、使用クエリ記憶部１６１を有する。
【０１９５】
設計データ入力部１１１は、ＣＰＵ９１１を用いて、設計データ記憶装置８１０が記憶したデータベース設計データを入力する。設計データ入力部１１１は、ＣＰＵ９１１を用いて、入力したデータベース設計データから、テーブル設計データと、インデックス設計データと、クエリ設計データとを取得する。設計データ入力部１１１は、ＣＰＵ９１１を用いて、取得したテーブル設計データと、インデックス設計データと、クエリ設計データとを出力する。
クエリ設計記憶部１２３は、ＣＰＵ９１１を用いて、設計データ入力部１１１が出力したクエリ設計データを入力する。クエリ設計記憶部１２３は、ＨＤＤ９２０を用いて、入力したクエリ設計データを記憶する。
【０１９６】
使用データ入力部１１２は、ＣＰＵ９１１を用いて、使用データ記憶装置８２０が記憶したデータベース使用データを入力する。使用データ入力部１１２は、ＣＰＵ９１１を用いて、入力したデータベース使用データから、使用テーブルデータと、使用カラムデータと、使用クエリデータとを取得する。使用データ入力部１１２は、ＣＰＵ９１１を用いて、取得した使用テーブルデータと、使用カラムデータと、使用クエリデータとを出力する。
使用クエリ記憶部１６１は、ＣＰＵ９１１を用いて、使用データ入力部１１２が出力した使用クエリデータを入力する。使用クエリ記憶部１６１は、ＨＤＤ９２０を用いて、入力した使用クエリデータを記憶する。
【０１９７】
使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データと、クエリ設計記憶部１２３が記憶したクエリ設計データと、使用クエリ記憶部１６１が記憶した使用クエリデータと、使用テーブル記憶部１３１が記憶した使用テーブルデータとを入力する。使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、入力したインデックス設計データと、クエリ設計データと、使用クエリデータと、使用テーブルデータとに基づいて、構築データベースで使用するインデックスを判別する。使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、判別した結果を表わすデータを出力する。
構築データベースでインデックスを使用するか否かの判定基準は、例えば、以下のとおりである。
第一に、使用テーブルデータに基づいて、構築データベースで使用しないとされているテーブルを対象とするインデックスは、使用しないと判定する。
第二に、使用テーブルデータに基づいて構築データベースで使用するとされているテーブルを対象とするインデックスのうち、使用クエリデータに基づいて、構築データベースで使用するとされているクエリが使用するインデックスは、使用すると判定する。
第三に、以上２つの条件のいずれも満足しないインデックス、すなわち、使用テーブルデータに基づいて構築データベースで使用するとされているテーブルを対象とするインデックスであるが、使用クエリデータに基づいて構築データベースで使用するとされているいずれのクエリでも使用しないインデックスは、使用しないと判定する。
【０１９８】
図２０は、この実施の形態におけるインデックス判定工程Ｓ７４２の流れの一例を示すフローチャート図である。
データベース定義生成処理Ｓ７００全体の流れは、実施の形態１と同様である。
インデックス判定工程Ｓ７４２は、対象テーブル判定工程Ｓ７６１、クエリ選択工程Ｓ７６２、クエリ判定工程Ｓ７６３、インデックス一致判定工程Ｓ７６４を有する。
【０１９９】
対象テーブル判定工程Ｓ７６１において、使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、インデックス設計記憶部１２２が記憶したインデックス設計データに基づいて、インデックス選択工程Ｓ７４１で選択したインデックスが対象とするテーブルを判別する。使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、使用テーブル記憶部１３１が記憶した使用テーブルデータに基づいて、判別したテーブルが構築データベースで使用するとされているか否かを判定する。
そのテーブルが使用しないとされていると判定した場合、インデックス選択工程Ｓ７４１に戻り、次のインデックスを選択する。すなわち、使用インデックス判定部１５２は、インデックス選択工程Ｓ７４１で選択したインデックスを構築データベースで使用しないと判定する。
そのテーブルが使用するとされていると判定した場合、クエリ選択工程Ｓ７６２へ進む。
【０２００】
クエリ選択工程Ｓ７６２において、使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、クエリ設計記憶部１２３が記憶したクエリ設計データに基づいて、定義されているすべてのクエリのなかから、未処理のクエリを１つずつ選択する。
未処理のクエリがあり、使用インデックス判定部１５２がクエリを選択した場合、クエリ判定工程Ｓ７６３へ進む。
選択すべきクエリがすべて処理済であり、使用インデックス判定部１５２がクエリを選択しなかった場合、インデックス選択工程Ｓ７４１に戻って、次のインデックスを選択する。すなわち、使用インデックス判定部１５２は、インデックス選択工程Ｓ７４１で選択したインデックスを構築データベースで使用しないと判定する。
【０２０１】
クエリ判定工程Ｓ７６３において、使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、使用クエリ記憶部１６１が記憶した使用クエリデータに基づいて、クエリ選択工程Ｓ７６２で選択したクエリが、構築データベースで使用するとされているか否かを判定する。
そのクエリが使用するとされていると判定した場合、インデックス一致判定工程Ｓ７６４へ進む。
そのクエリが使用しないとされていると判定した場合、クエリ選択工程Ｓ７６２に戻り、次のクエリを選択する。
【０２０２】
インデックス一致判定工程Ｓ７６４において、使用インデックス判定部１５２は、ＣＰＵ９１１を用いて、クエリ設計記憶部１２３が記憶したクエリ設計データに基づいて、クエリ選択工程Ｓ７６２で選択したクエリが使用するインデックスを判別し、判別したインデックスが、インデックス選択工程Ｓ７４１で選択したインデックスと一致するか否かを判定する。
インデックスが一致しないと判定した場合、クエリ選択工程Ｓ７６２に戻り、次のクエリを選択する。
インデックスが一致すると判定した場合、インデックス定義開始生成工程Ｓ７４３へ進む。すんわち、使用インデックス判定部１５２は、そのインデックスを構築データベースで使用すると判定する。
【０２０３】
次に、図５〜図８及び図１７及び図１８に示したテーブル基本データ５１０、カラム設計データ５２０、インデックス基本データ５３０、キー設計データ５４０、クエリ設計データ５５０及びデータベース使用データ５６０に基づいて、使用インデックス判定部１５２による判定動作を見ていく。
【０２０４】
インデックス選択工程Ｓ７４１において、使用インデックス判定部１５２は、最初のインデックスを選択する。使用インデックス判定部１５２は、インデックスＩＤ５３１「Ｉ０５」、対象テーブルＩＤ５３２「Ｔ０１」、インデックス名５３３「ＩＤＸ＿ＰＥＲＳＯＮ＿ＮＡＭＥ＿ＫＡＮＡ」を取得する。
【０２０５】
対象テーブル判定工程Ｓ７６１において、使用インデックス判定部１５２は、データベース使用データ５６０に含まれる選択テーブルリスト５６１に、インデックス選択工程Ｓ７４１で取得した対象テーブルＩＤ５３２「Ｔ０１」が含まれるか否かを判定する。
この例では、選択テーブルリスト５６１にテーブルＩＤ「Ｔ０１」が含まれているので、使用インデックス判定部１５２は、クエリ選択工程Ｓ７６２へ進む。
【０２０６】
クエリ選択工程Ｓ７６２において、使用インデックス判定部１５２は、クエリ設計データ５５０のなかから、クエリＩＤ５５１・使用インデックスＩＤ５５２・クエリ名５５３・ＳＱＬ文５５４・説明文５５５の組を先頭から順に１つずつ取得することにより、クエリを１つずつ選択する。なお、クエリ名５５３・ＳＱＬ文５５４・説明文５５５は、このあとの処理で使わないので、使用インデックス判定部１５２は、クエリ名５５３・ＳＱＬ文５５４・説明文５５５を取得しない構成であってもよい。
この例では、使用インデックス判定部１５２は、最初に、クエリＩＤ５５１「Ｑ９１」、使用インデックスＩＤ５５２「Ｉ０５」を取得する。
【０２０７】
クエリ判定工程Ｓ７６３において、使用インデックス判定部１５２は、データベース使用データ５６０に含まれる選択クエリリスト５６４に、クエリ選択工程Ｓ７６２で取得したクエリＩＤ５５１「Ｑ９１」が含まれるか否かを判定する。
この例では、選択クエリリスト５６４にクエリＩＤ「Ｑ９１」が含まれているので、使用インデックス判定部１５２は、インデックス一致判定工程Ｓ７６４へ進む。
【０２０８】
インデックス一致判定工程Ｓ７６４において、使用インデックス判定部１５２は、インデックス選択工程Ｓ７４１で取得したインデックスＩＤ５３１「Ｉ０５」と、クエリ選択工程Ｓ７６２で取得した使用インデックスＩＤ５５２「Ｉ０５」とが一致するか否かを判定する。
この例では、インデックスＩＤ５３１と使用インデックスＩＤ５５２とが一致しているので、使用インデックス判定部１５２は、構築データベースでそのインデックスを使用すると判定し、インデックス定義開始生成工程Ｓ７４３へ進む。
【０２０９】
その後、インデックス選択工程Ｓ７４１に戻り、使用インデックス判定部１５２は、次のインデックスを選択する。使用インデックス判定部１５２は、インデックスＩＤ５３１「Ｉ０６」、対象テーブルＩＤ５３２「Ｔ０１」、インデックス名５３３「ＩＤＸ＿ＰＥＲＳＯＮ＿ＴＹＰＥ＿ＣＯＤＥ」を取得する。
対象テーブル判定工程Ｓ７６１において、使用インデックス判定部１５２は、選択テーブルリスト５６１に対象テーブルＩＤ５３２「Ｔ０１」が含まれると判定し、クエリ選択工程Ｓ７６２へ進む。
【０２１０】
クエリ選択工程Ｓ７６２において、使用インデックス判定部１５２は、最初のクエリを選択する。使用インデックス判定部１５２は、クエリＩＤ５５１「Ｑ９１」、使用インデックスＩＤ５５２「Ｉ０５」を取得する。
クエリ判定工程Ｓ７６３において、使用インデックス判定部１５２は、選択クエリリスト５６４にクエリＩＤ５５１「Ｑ９１」が含まれていると判定し、インデックス一致判定工程Ｓ７６４へ進む。
インデックス一致判定工程Ｓ７６４において、使用インデックス判定部１５２は、インデックスＩＤ５３１「Ｉ０６」と使用インデックスＩＤ５５２「Ｉ０５」とが一致しないと判定し、クエリ選択工程Ｓ７６２に戻る。
【０２１１】
クエリ選択工程Ｓ７６２において、使用インデックス判定部１５２は、次のクエリを選択する。使用インデックス判定部１５２は、クエリＩＤ５５１「Ｑ９２」、使用インデックスＩＤ５５２「Ｉ０６」を取得する。
クエリ判定工程Ｓ７６３において、使用インデックス判定部１５２は、選択クエリリスト５６４にクエリＩＤ５５１「Ｑ９２」が含まれていないと判定し、クエリ選択工程Ｓ７６２に戻る。
【０２１２】
クエリ選択工程Ｓ７６２において、使用インデックス判定部１５２は、次のクエリを選択する。使用インデックス判定部１５２は、クエリＩＤ５５１「Ｑ９３」、使用インデックスＩＤ５５２「Ｉ０７」を取得する。
クエリ判定工程Ｓ７６３において、使用インデックス判定部１５２は、選択クエリリスト５６４にクエリＩＤ５５１「Ｑ９３」が含まれていないと判定し、クエリ選択工程Ｓ７６２に戻る。
【０２１３】
クエリ選択工程Ｓ７６２において、使用インデックス判定部１５２は、すべてのクエリを選択し終わったと判定し、構築データベースでそのインデックスを使用しないと判定して、インデックス選択工程Ｓ７４１に戻る。
【０２１４】
インデックス選択工程Ｓ７４１において、使用インデックス判定部１５２は、次のインデックスを選択する。使用インデックス判定部１５２は、インデックスＩＤ５３１「Ｉ０７」、対象テーブルＩＤ５３２「Ｔ０２」、インデックス名５３３「ＩＤＸ＿ＦＡＭＩＬＹ＿ＰＥＲＳＯＮ＿ＩＤ」を取得する。
対象テーブル判定工程Ｓ７６１において、使用インデックス判定部１５２は、選択テーブルリスト５６１に対象テーブルＩＤ５３２「Ｔ０２」が含まれていないと判定し、構築データベースでそのインデックスを使用しないと判定して、インデックス選択工程Ｓ７４１に戻る。
【０２１５】
このように、クエリ設計データに、そのクエリが使用するインデックスを表わすデータを含めることにより、構築データベースで使用するクエリから、構築データベースで使用するインデックスを判定することができる。したがって、利用者は、構築データベースで使用するクエリを選択するだけよく、構築データベースでどのインデックスを使用するかを判断する必要がない。
【０２１６】
この実施の形態におけるデータベース定義生成装置１００は、更に、クエリ設計記憶部１２３と、使用クエリ記憶部１６１とを有する。
上記クエリ設計記憶部１２３は、上記記憶装置を用いて、上記インデックス設計記憶部１２２が記憶したインデックス設計データが定義するインデックスについて、上記インデックスを使用するクエリを定義するクエリ設計データを記憶する。
上記使用クエリ記憶部１６１は、上記記憶装置を用いて、上記クエリ設計記憶部１２３が記憶したクエリ設計データが定義するクエリのうち、上記構築データベースで使用するクエリを表わす使用クエリデータを記憶する。
上記使用インデックス判定部１５２は、上記処理装置を用いて、上記クエリ設計記憶部１２３が記憶したクエリ設計データに基づいて、上記使用クエリ記憶部１６１が記憶した使用クエリデータが示すクエリが使用するインデックスを、上記構築データベースで使用すると判定する。
【０２１７】
この実施の形態におけるデータベース定義生成装置１００によれば、クエリ設計データによって定義されるクエリのなかから、構築データベースで使用するクエリを選択して、使用クエリデータを生成しておけば、データベース定義生成装置１００が、選択したクエリが使用するインデックスを含むデータベースを定義するデータベース定義データを生成するので、専門的な知識の乏しい利用者であっても、簡単にデータベースを構築することができる。
【０２１８】
以上説明したデータベース定義生成装置１００は、データベースのインデックスの設計に関する情報を含んだインデックス設計情報（インデックス設計データ）と、データベースのクエリの設計に関する情報を含んだクエリ設計情報（クエリ設計データ）と、クエリ設計情報のうち開発対象データベース（構築データベース）で使用するクエリを示すサポートクエリ情報（使用クエリデータ）とから、開発対象データベースで使用するインデックスのみを含む、データベース構築のためのインデックス定義ＳＱＬ（インデックス定義データ）を生成する。
【０２１９】
インデックス設計情報には、インデックスに含まれるカラムの情報（キー設計データ）が含まれ、サポートテーブル情報には、開発対象データベースで使用するカラムの情報（使用カラムデータ）が含まれ、インデックス定義ＳＱＬには、サポートテーブル情報に含まれたカラムのみが含まれる。
【０２２０】
なお、使用クエリデータは、クエリ設計データにより定義されるクエリのなかで使用するクエリを表わすのではなく、使用しないクエリを表わすものであってもよい。
【０２２１】
以上説明したデータベース定義生成装置１００（ＳＱＬ生成プログラム）は、インデックス設計情報（インデックス設計データ）、クエリ設計情報（クエリ設計データ）、サポートテーブル情報（使用テーブルデータ）とサポートクエリ情報（使用クエリデータ）とから、インデックス定義ＳＱＬ（インデックス定義データ）を自動的に生成する。
【０２２２】
インデックスは、データベースを検索するために用いられるものであるため、検索するクエリによってインデックスの必要有無が異なる。以上説明したデータベース定義生成装置１００によれば、使用する検索クエリを指定することにより、使用するインデックスを選択することができる。
【０２２３】
インデックス設計情報（インデックス設計データ）とクエリ設計情報（クエリ設計データ）とは別に、サポートテーブル情報（使用テーブルデータ）とサポートクエリ情報（使用クエリデータ）とを入力する構成となっているため、インデックス設計情報やクエリ設計情報自体を変更することなく、開発対象データベース（構築データベース）で使用するインデックスとインデックス内のカラムのみが記載されたインデックス定義ＳＱＬ（インデックス定義データ）を生成することができる。
実際に使用するインデックスとインデックス内のカラムのみを含むインデックス定義ＳＱＬを用いてデータベースを作成することにより、データベース管理システムが使用するハードディスクの容量が削減されるとともに、動作速度も高速化されるという利点がある。
【０２２４】
また、開発者がサポート機能データ（データベース使用データ）を記述する際、どのインデックスを使用すべきかを判断するには技術的ノウハウが必要であり、判断を誤る可能性がある。以上説明したデータベース構築システム８００では、どのクエリを使用するかを判断してサポートクエリ情報（使用クエリデータ）を記述すればよいため、容易にサポート機能データ（データベース使用データ）を作成できる。
【符号の説明】
【０２２５】
１００  データベース定義生成装置、１１１，２１１  設計データ入力部、１１２  使用データ入力部、１１３  定義データ出力部、１２１  テーブル設計記憶部、１２２  インデックス設計記憶部、１２３  クエリ設計記憶部、１３１  使用テーブル記憶部、１３４  定義記憶部、１４１  使用カラム記憶部、１４３  テーブル定義生成部、１４４  テーブル定義記憶部、１５１  使用インデックス記憶部、１５２  使用インデックス判定部、１５３  インデックス定義生成部、１５４  インデックス定義記憶部、１６１  使用クエリ記憶部、２００  データベース設計装置、２１２  設計データ出力部、２１３  使用データ出力部、２２１  設計テーブル記憶部、２２２  設計インデックス記憶部、２２３  設計クエリ記憶部、２３１  追加テーブル入力部、２３２  テーブル選択部、２４１  追加カラム入力部、２４２  カラム選択部、２５１  追加インデックス入力部、２５２  インデックス選択部、２６１  追加クエリ入力部、２６２  クエリ選択部、４１０  テーブル定義開始データ、４１１  テーブル定義開始文字列、４１２  テーブル名、４１３  カラム定義開始文字列、４２０  カラム定義区切りデータ、４２１，４７１  区切り文字、４３０  カラム基本定義データ、４３１，４８１  カラム名、４３２，４４１  空白文字、４３３  データ型、４４０  カラム制約定義データ、４４２  制約、４５０  テーブル定義終了データ、４５１  テーブル定義終了文字列、４６０  インデックス定義開始データ、４６１  インデックス定義開始文字列、４６２  インデックス名、４６３  区切り文字列、４６４  テーブル名、４６５  キー定義開始文字列、４７０  キー定義区切りデータ、４８０  キー定義データ、４９０  インデックス定義終了データ、４９１  インデックス定義終了文字列、５１０  テーブル基本データ、５１１  テーブルＩＤ、５１２  テーブル名、５１３，５２６，５３４，５５５  説明文、５２０  カラム設計データ、５２１  カラムＩＤ、５２２  所属テーブルＩＤ、５２３  カラム名、５２４  データ型、５２５  制約、５３０  インデックス基本データ、５３１  インデックスＩＤ、５３２  対象テーブルＩＤ、５３３  インデックス名、５４０  キー設計データ、５４１  キーＩＤ、５４２  所属インデックスＩＤ、５４３  対象カラムＩＤ、５４４  優先順位、５５０  クエリ設計データ、５５１  クエリＩＤ、５５２  使用インデックスＩＤ、５５３  クエリ名、５５４  ＳＱＬ文、５６０  データベース使用データ、５６１  選択テーブルリスト、５６２  選択カラムリスト、５６３  選択インデックスリスト、５６４  選択クエリリスト、８００  データベース構築システム、８１０  設計データ記憶装置、８２０  使用データ記憶装置、８５０  定義データ記憶装置、８６０  データベース管理装置、８７０  データベース記憶装置、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信装置、９２０  ＨＤＤ、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機��９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2011008443.tif 000003
【図２】
2011008443.tif 000004
【図３】
2011008443.tif 000005
【図４】
2011008443.tif 000006
【図５】
2011008443.tif 000007
【図６】
2011008443.tif 000008
【図７】
2011008443.tif 000009
【図８】
2011008443.tif 000010
【図９】
2011008443.tif 000011
【図１０】
2011008443.tif 000012
【図１１】
2011008443.tif 000013
【図１２】
2011008443.tif 000014
【図１３】
2011008443.tif 000015
【図１４】
2011008443.tif 000016
【図１５】
2011008443.tif 000017
【図１６】
2011008443.tif 000018
【図１７】
2011008443.tif 000019
【図１８】
2011008443.tif 000020
【図１９】
2011008443.tif 000021
【図２０】
2011008443.tif 000022