(57)【特許請求の範囲】
【請求項１】
データ記憶媒体に複数のレコードをレコードの属性毎にグループ化して格納するデータベース構築方法であって、
レコードの格納に際し、当該レコードの属性と同じ属性を有するレコードが前記データ記憶媒体に既に格納されているか否かを判定し、
同じ属性を有するレコードが格納されていない場合には、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値を設定し、この予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域を前記データ記憶媒体内に確保し、更に、この連続未記憶領域内に前記予想値分のダミーレコードを設定した後、該連続未記憶領域内に設定された最初のダミーレコードに前記格納対象となっているレコードを格納して実レコードとする一方、
この時点で格納対象となっているレコードと同じ属性を有するレコードが前記データ記憶媒体に既に格納されている場合には、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に位置するダミーレコードに前記格納対象となっているレコードを格納して実レコードとすることを特徴としたデータベース構築方法。
【請求項２】
データ記憶媒体に複数のレコードをレコードの属性毎にグループ化して格納するデータベース構築方法であって、
レコードの格納に際し、当該レコードの属性と同じ属性を有するレコードが前記データ記憶媒体に既に格納されているか否かを判定し、
同じ属性を有するレコードが格納されていない場合には、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値を設定し、この予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域を前記データ記憶媒体内に確保し、更に、この連続未記憶領域内に前記予想値分のダミーレコードを設定した後、該連続未記憶領域内に設定された最初のダミーレコードに前記格納対象となっているレコードを格納して実レコードとする一方、
この時点で格納対象となっているレコードと同じ属性を有するレコードが前記データ記憶媒体に既に格納されている場合には、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在するか否かを判定し、
同じ属性を有するダミーレコードが存在する場合には、このダミーレコードに前記格納対象となっているレコードを格納して実レコードとする一方、
この時点で格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在しない場合には、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域を前記データ記憶媒体内に改めて確保し、更に、この連続未記憶領域内に前記予想値分のダミーレコードを設定した後、該連続未記憶領域内に設定された最初のダミーレコードに前記格納対象となっているレコードを格納して実レコードとすることを特徴としたデータベース構築方法。
【請求項３】
複数のレコードをレコードの属性毎にグループ化して格納するデータベース構築システムであって、
レコードを記憶するためのデータ記憶媒体と、レコードおよび要求を入力するための入力部と、前記入力部から渡されたレコードおよび要求を処理するための主制御部と、該主制御部からの指令を受けて前記データ記憶媒体にアクセスして内部のデータを操作するデータベース管理部とを備え、
前記主制御部には、前記入力部から渡されたレコードと格納要求を受けて、当該レコードの属性と同じ属性を有するレコードが前記データ記憶媒体に既に格納されているか否かを判定する属性登録状態判定手段と、
前記属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されていない場合に作動して、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値を前記入力部を介して読み込み、この予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域を前記データ記憶媒体内に確保し、この連続未記憶領域内に前記予想値分のダミーレコードを設定して該連続未記憶領域内の最初のダミーレコードに前記格納対象となっているレコードを格納して実レコードとする初期格納手段と、
前記属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されている場合に作動して、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に位置するダミーレコードに前記格納対象となっているレコードを格納して実レコードとする追加格納手段とが設けられていることを特徴としたデータベース構築システム。
【請求項４】
複数のレコードをレコードの属性毎にグループ化して格納するデータベース構築システムであって、
レコードを記憶するためのデータ記憶媒体と、レコードおよび要求を入力するための入力部と、前記入力部から渡されたレコードおよび要求を処理するための主制御部と、該主制御部からの指令を受けて前記データ記憶媒体にアクセスして内部のデータを操作するデータベース管理部とを備え、
前記主制御部には、前記入力部から渡されたレコードと格納要求を受けて、当該レコードの属性と同じ属性を有するレコードが前記データ記憶媒体に既に格納されているか否かを判定する属性登録状態判定手段と、
前記属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されていない場合に作動して、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値を前記入力部を介して読み込み、この予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域を前記データ記憶媒体内に確保し、この連続未記憶領域内に前記予想値分のダミーレコードを設定して該連続未記憶領域内の最初のダミーレコードに前記格納対象となっているレコードを格納して実レコードとする初期格納手段と、
前記属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されている場合に作動して、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在するか否かを判定する追加格納可否判定手段と、
追加格納可否判定手段の判定結果に基き、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在する場合に作動して、このダミーレコードに前記格納対象となっているレコードを格納して実レコードとする追加格納手段と、
追加格納可否判定手段の判定結果に基き、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在しない場合に作動して、前記属性登録状態判定手段の判定結果に関わりなく前記初期格納手段を強制的に起動させる強制起動手段とが設けられていることを特徴としたデータベース構築システム。
【請求項５】
前記レコードは複数のデータの集合体によって形成され、その内の少なくとも一つがレコードの属性を表すグループキーによって構成されていることを特徴とした請求項３または請求項４記載のデータベース構築システム。
【請求項６】
前記レコードは複数のデータの集合体によって形成され、その内の少なくとも一つがレコードの属性を表すグループキーによって構成され、
前記主制御部には、前記属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されていない場合に作動して、この時点で格納対象となっているレコードのグループキーと最大レコード長とレコード内のデータ区切りを対応させて記憶するレコード構成条件記憶手段が併設され、
前記初期格納手段には、該初期格納手段が前記強制起動手段によって起動された場合に限り、この時点で格納対象となっているレコードのグループキーに基いて前記レコード構成条件記憶手段を参照して前記最大レコード長とレコード内のデータ区切りに従ってダミーレコードを設定するダミーレコード再構築機能が設けられていることを特徴とした請求項４記載のデータベース構築システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベース構築方法およびデータベース構築システムの改良、特に、データ記憶媒体に複数のレコードをグループ化して格納する際に、レコードの断片化（連鎖行）の発生を防止し、かつ、データ記憶媒体にアクセスする際の入出力効率を向上させるための改良に関する。
【０００２】
【従来の技術】
データ記憶媒体に複数のレコードを属性毎にグループ化して格納するデータベース構築方法およびデータベース構築システムが既に公知である。
【０００３】
図１３は従来のデータベース構築システムの構成の概略について示した機能ブロック図である。
【０００４】
従来のデータベース構築システムは、概略において、レコードを記憶するためのデータ記憶媒体１００と、このデータ記憶媒体１００にアクセスして内部のデータを操作するためのデータベース管理部１０１、および、格納対象となるレコードの入力やレコードの格納，削除，更新，検索等に関わる要求を入力するための入力部１０２によって構成される。
【０００５】
入力部１０２は広い意味ではキーボードやマウスあるいはデジタイザ等のハードウェア資源を含むが、ここでいう入力部１０２は、実質的には、コンピュータにインストールされたデータベース管理用のアプリケーションプログラムである。
また、データベース管理部１０１は、コンピュータのＣＰＵの機能の一部を時分割等で利用するドライバプログラム等によって構成されてコンピュータ本体と一体化されている場合もある。
データ記憶媒体１００は書き替え可能なデータ記憶媒体であり、一般に、コンピュータ内外のハードディスクドライブやＭＯドライブあるいはＺＩＰドライブ等によって構成される。
【０００６】
従来のデータベース構築システムでは、図１３に示されるように、レコードの格納，削除，更新，検索等に際しては、入力部１０２が処理内容に応じたデータベースコマンド１０３を生成してデータベース管理部１０１に処理を要求し、この要求に応えるかたちでデータベース管理部１０１がデータ記憶媒体１００にアクセスして、データ記憶媒体１００内部のデータを操作するようになっていた。つまり、レコードの格納，削除，更新，検索等に関する処理は、全て完全な時系列で行われることになる。
【０００７】
【発明が解決しようとする課題】
この結果、データ記憶媒体１００に複数のレコードを属性毎にグループ化して格納することは可能であっても、レコードの物理的な格納位置は、レコードの属性に関わりなくデータ記憶媒体１００上でバラバラになってしまうといった問題が生じる場合がある。
【０００８】
図１４は、銀行の口座番号を属性として、口座番号に従属する一連のデータの集合体からなるレコードを取り扱うデータベースを構築する際に発生する問題の一例を簡略化して示した概念図である。
【０００９】
本来、口座番号をレコードの主たる属性として取り扱う以上、データの削除，更新，検索等で必要とされるアクセスの入出力効率を向上させるためには、同一の口座番号を有するレコードを物理的に近い位置に格納することが望ましいが、既に述べた通り、この種の従来技術では、レコードの格納処理が口座番号に関わりなく単純な時系列処理として行われるので、例えば、口座番号１２３に関連する取引が行われた後、口座番号４５６に関連する取引、および、口座番号７８９に関連する取引が行われたとすると、データ記憶媒体１００上でのレコードの並びも、口座番号１２３，口座番号４５６，口座番号７８９の順となってしまう。
【００１０】
無論、口座番号をキーとしてデータ記憶媒体１００上の全てのレコードを検索して特定の口座番号を有するレコードを抽出することは可能であるし、また、レコードのモニタ表示やプリントアウトを行う際に、レコードが記憶された時刻に基いて同一属性のレコードのみを抽出してソートすることも可能であるが、そうした場合、同一属性のレコードがデータ記憶媒体１００上でバラバラに散在しているため、データベース管理部１０１とデータ記憶媒体１００との間のアクセス所要時間が増大するといった弊害が発生する。
【００１１】
特に、一連のデータの集合体からなるレコードを取り扱うような場合においては、レコードを一旦格納した後で、改めて特定のレコードの一部のデータに対してのみデータの更新操作が行われるといったことも有り得る。例えば、銀行取引における名字の書き替え等がその一例である。
【００１２】
こうした場合、データを構成する数値の桁数や文字の文字数が増加すると、元の格納位置のブロックのみでデータの更新操作を行うことができなくなり、それまでとは全く無関係な別の記憶領域のブロックに更新データあるいは其の一部が格納されるといった問題が発生することがある。時間を置いてから以前のレコードのデータを更新しようとすると、データの更新の対象となるレコードの後に既に幾つものレコードが格納されており、元の格納位置の近傍の記憶領域に更新データを格納することができなくなってしまうからである。
【００１３】
レコードの一部にデータの更新を施してレコードが分割格納された例を図１４の口座番号２３４で示す。このようにしてレコードの断片化（連鎖行）が発生してしまうと、やはり、前記と同様の理由により、データ記憶媒体のアクセス所要時間が増大するといった弊害が発生する。
【００１４】
データの断片化（連鎖行）の発生を予防するための技術としては、特開平７−５６７８２号公報に開示されるように、直前のレコードを記憶したブロックの残り容量を計算し、１レコードが残り容量の範囲内であれば直前のレコードに続けて新たなレコードを記憶し、また、１レコードが残り容量の範囲を越えている場合には改めて次のブロックに新たなレコードを記憶することによってデータの断片化（連鎖行）の発生を防止するようにしたものが提案されているが、この技術はレコードの新規の格納に際して適用されるものであって、後日のデータ更新によるレコードの増長化に対処してデータの断片化（連鎖行）の発生を解消できるものではない。
【００１５】
【発明の目的】
そこで、本発明の目的は、前記従来技術の欠点を解消し、データ記憶媒体に複数のレコードを属性毎にグループ化して格納する際に、属性毎にグループ化されたレコードをデータ記憶媒体上で物理的にも近接する位置に格納することができ、しかも、一旦格納されたレコードに後からデータ更新の操作を行うような場合であっても、レコードの断片化（連鎖行）の発生を確実に防止することができるデータベース構築方法およびデータベース構築システムを提供することにある。
【００１６】
【課題を解決するための手段】
本発明のデータベース構築方法は、データ記憶媒体に複数のレコードをレコードの属性毎にグループ化して格納するデータベース構築方法であり、前記目的を達成するため、特に、
レコードの格納に際し、当該レコードの属性と同じ属性を有するレコードがデータ記憶媒体に既に格納されているか否かを判定し、
同じ属性を有するレコードが格納されていない場合には、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値を設定し、この予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域をデータ記憶媒体内に確保し、更に、この連続未記憶領域内に予想値分のダミーレコードを設定した後、該連続未記憶領域内に設定された最初のダミーレコードに格納対象となっているレコードを格納して実レコードとする一方、
この時点で格納対象となっているレコードと同じ属性を有するレコードがデータ記憶媒体に既に格納されている場合には、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に位置するダミーレコードに格納対象となっているレコードを格納して実レコードとすることを特徴とした構成を有する。
【００１７】
以上の構成によれば、まず、属性が確認されていないレコードが格納される段階で、この新たな属性を有するレコードを格納するための連続未記憶領域がデータ記憶媒体内に確保される。
この連続未記憶領域の大きさは、仮に、当該属性を有するレコードの最大レコード長をｍバイト、また、このレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースを構築する際に必要とされるレコード数の予想値がｎ個であるとすれば、ｍ×ｎバイトによって表される。つまり、この連続未記憶領域には、現時点で格納対象となっているレコードと同じ属性を有するレコードを格納するためのダミーレコードがｎ個分設定されることになる。
そして、連続未記憶領域の最初のダミーレコードに、この時点で格納対象となっているレコードの内容、つまり、新たな属性を有するレコードの内容が格納され、このダミーレコードが最初の実レコードとされる。
一方、格納対象となっているレコードと同じ属性を有するレコードがデータ記憶媒体に既に格納されている場合には、格納対象のレコードと同じ属性を有する最後の実レコードの次に位置するダミーレコードに、この時点で格納対象となっているレコードの内容が格納され、このダミーレコードが新たな実レコードとなる。
このように、属性が確認されていないレコードが検出される度に、その属性のレコードを格納するための記憶領域となる連続未記憶領域が新たに定義され、その後、各記憶領域に同一属性のレコードのみが格納されることになるので、様々な属性のレコードが時系列に沿って順不同で入力された場合であっても、同じ属性を有する複数のレコードを予想値の数だけ一連続の記憶領域内で時系列に沿った順序で格納することができるようになる。つまり、属性によってグループ化されたレコードをデータ記憶媒体上で物理的にも近い位置に格納することができるようになり、これにより、レコード検索等に必要とされるアクセス所要時間が大幅に軽減されて、データ記憶媒体にアクセスする際の入出力効率が改善される。
しかも、レコードを格納するためのダミーレコードの大きさは最大レコード長に合わせて設定されているので、レコードを一旦格納した後で改めて特定のレコードの一部のデータに対してのみデータの更新操作を行ったような場合であっても、更新後のデータが元の格納位置に収まり切らなくなるといった問題は発生しない。従って、レコードの断片化（連鎖行）の発生は確実に防止され、全ての処理操作において、データ記憶媒体のアクセス所要時間が軽減される。同時に、レコードの断片化（連鎖行）に対処するために必要とされるハードウェアの無駄な動きもなくなるため、ハードウェアの耐久性、例えば、ハードディスクドライブのアーム等の耐久性が実質的に向上する。
【００１８】
更に、前記構成に加え、格納対象となっているレコードと同じ属性を有するレコードがデータ記憶媒体に既に格納されている場合において、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在するか否かを判定し、
同じ属性を有するダミーレコードが存在する場合には、前記と同様、このダミーレコードに格納対象となっているレコードを格納して実レコードとする一方、
この時点で格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在しない場合には、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域をデータ記憶媒体内に改めて確保し、更に、この連続未記憶領域内に予想値分のダミーレコードを設定した後、該連続未記憶領域内に設定された最初のダミーレコードに格納対象となっているレコードを格納して実レコードとするように構成してもよい。
【００１９】
このような構成を適用すると、レコードの属性に応じて設定された連続未記憶領域内のダミーレコードの全てにレコードが格納されたときに、改めて、これと同様の連続未記憶領域が追加的に設定されることになるので、データベースの構築に必要とされるレコード数の予想値を越えて同じ属性のレコードが入力された場合であっても、継続して同じ属性のレコードの格納作業を行うことができる。
【００２０】
本発明のデータベース構築システムは、複数のレコードをレコードの属性毎にグループ化して格納するデータベース構築システムであり、前記と同様の目的を達成するため、特に、
レコードを記憶するためのデータ記憶媒体と、レコードおよび要求を入力するための入力部と、入力部から渡されたレコードおよび要求を処理するための主制御部と、主制御部からの指令を受けて前記データ記憶媒体にアクセスして内部のデータを操作するデータベース管理部とを備え、
主制御部には、入力部から渡されたレコードと格納要求を受けて、当該レコードの属性と同じ属性を有するレコードがデータ記憶媒体に既に格納されているか否かを判定する属性登録状態判定手段と、
属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されていない場合に作動して、この時点で格納対象となっているレコードの属性と同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値を前記入力部を介して読み込み、この予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域をデータ記憶媒体内に確保し、この連続未記憶領域内に予想値分のダミーレコードを設定して該連続未記憶領域内の最初のダミーレコードに格納対象となっているレコードを格納して実レコードとする初期格納手段と、
属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されている場合に作動して、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に位置するダミーレコードに格納対象となっているレコードを格納して実レコードとする追加格納手段とが設けられていることを特徴とした構成を有する。
【００２１】
以上の構成において、格納対象となるレコードと格納要求とが入力部から主制御部に渡されると、まず、主制御部の属性登録状態判定手段が、このレコードの属性と同じ属性を有するレコードがデータ記憶媒体に格納されているか否かを判定する。
そして、属性登録状態判定手段により同じ属性を有するレコードが格納されていないと判定された場合には、初期格納手段が作動する。初期格納手段は、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値を前記入力部を介して読み込み、この予想値に、当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域をデータ記憶媒体内に確保し、この連続未記憶領域内に予想値分のダミーレコードを設定した後、該連続未記憶領域内の最初のダミーレコードに格納対象となっているレコードを格納して実レコードとする。
一方、属性登録状態判定手段により同じ属性を有するレコードが既に格納されていると判定された場合には、追加格納手段が作動し、この追加格納手段が、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に位置するダミーレコードに格納対象となっているレコードを格納して実レコードとする。
このように、属性が確認されていないレコードが検出される度に、その属性のレコードを格納するための記憶領域となる連続未記憶領域が新たに定義され、その後、各記憶領域に同一属性のレコードのみが格納されることになるので、様々な属性のレコードが時系列に沿って順不同で入力された場合であっても、同じ属性を有する複数のレコードを予想値の数だけ一連続の記憶領域内で時系列に沿った順序で格納することができるようになる。つまり、属性よってグループ化されたレコードをデータ記憶媒体上で物理的にも近い位置に格納することができるようになり、これにより、レコード検索等に必要とされるアクセス所要時間が大幅に軽減されて、データ記憶媒体にアクセスする際の入出力効率が改善される。
しかも、レコードを格納するためのダミーレコードの大きさは最大レコード長に合わせて設定されているので、レコードを一旦格納した後で改めて特定のレコードの一部のデータに対してのみデータの更新操作を行ったような場合であっても、更新後のデータが元の格納位置に収まり切らなくなるといった問題は発生しない。従って、レコードの断片化（連鎖行）の発生は確実に防止され、全ての処理操作において、データ記憶媒体のアクセス所要時間が軽減される。同時に、レコードの断片化（連鎖行）に対処するために必要とされるハードウェアの無駄な動きもなくなるため、ハードウェアの耐久性、例えば、データベース管理部として機能するハードディスクドライブのアーム等の耐久性が実質的に向上する。
【００２２】
更に、前述の属性登録状態判定手段と初期格納手段と追加格納手段とに加え、属性登録状態判定手段により同じ属性を有するレコードが既に格納されていると判定された場合に作動して格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在するか否かを判定する追加格納可否判定手段と、
追加格納可否判定手段により格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在しないと判定された場合に作動して前記属性登録状態判定手段の判定結果に関わりなく前記初期格納手段を強制的に起動させる強制起動手段とを設け、
前記追加格納手段を、前記追加格納可否判定手段により格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在すると判定された場合にのみ作動させるように構成してもよい。
【００２３】
このような構成を適用した場合、格納対象となるレコードと格納要求とが入力部から主制御部に渡されると、まず、主制御部の属性登録状態判定手段が、このレコードの属性と同じ属性を有するレコードがデータ記憶媒体に格納されているか否かを判定する。
そして、属性登録状態判定手段により同じ属性を有するレコードが格納されていないと判定された場合には、前記と同様に初期格納手段が作動して、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値に当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域をデータ記憶媒体内に確保し、この連続未記憶領域内に予想値分のダミーレコードを設定した後、該連続未記憶領域内の最初のダミーレコードに格納対象となっているレコードを格納して実レコードとする。
一方、属性登録状態判定手段により同じ属性を有するレコードが既に格納されていると判定された場合には、更に、追加格納可否判定手段が作動して、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在するか否かを判定する。
ここで、追加格納可否判定手段により格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在すると判定された場合には、前記と同様、追加格納手段が作動して、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に位置するダミーレコードに格納対象となっているレコードを格納して実レコードとする。
また、追加格納可否判定手段により格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在しないと判定された場合には、当該属性を有する連続未記憶領域に設定されたダミーレコードが全て実レコードとされていること、つまり、この記憶領域に同一属性を有する次のレコードを格納できないことを意味するので、強制起動手段が作動して、初期格納手段を強制的に起動させる。
初期格納手段が再び作動する結果、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされるレコード数の予想値に当該属性を有するレコードの最大レコード長を乗じた大きさの連続未記憶領域が改めてデータ記憶媒体内に確保され、この連続未記憶領域内に前記と同様にして予想値分のダミーレコードが設定され、該連続未記憶領域内の最初のダミーレコードに格納対象となっているレコードが格納されて実レコードとされる。これにより、同じ属性を有するレコードの追加格納が許容されることになる。
【００２４】
複数のデータの集合体によって形成されるレコードの場合、その内の少なくとも一つのデータをレコードの属性を表すグループキーによって構成することが望ましい。
【００２５】
属性を表すグループキーをレコード内に記憶させることによりレコードの格納位置を適切に制御することができる。
【００２６】
更に、前記主制御部には、属性登録状態判定手段の判定結果に基き、同じ属性を有するレコードが格納されていない場合に作動して、この時点で格納対象となっているレコードのグループキーと最大レコード長とレコード内のデータ区切りを対応させて記憶するレコード構成条件記憶手段を併設し、
前記初期格納手段には、該初期格納手段が強制起動手段によって起動された場合に限り、この時点で格納対象となっているレコードのグループキーに基いて前記レコード構成条件記憶手段を参照して最大レコード長とレコード内のデータ区切りに従ってダミーレコードを設定するダミーレコード再構築機能を設けることができる。
【００２７】
同一属性を有するレコードの記憶領域の確保とダミーレコードの設定処理に必要とされる情報の取得が２回目以降の領域確保の時点から内部的に自動化されるので、システムの運用の簡略化が可能である。
【００２８】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態の作用原理について説明する。図１は本発明のデータベース構築方法を適用した一実施形態のデータベース構築システムの構成の概略について示した機能ブロック図である。この実施形態のデータベース構築システム１は、図１に示される通り、概略において、レコードを記憶するためのデータ記憶媒体２、このデータ記憶媒体２にアクセスして内部のデータを操作するためのデータベース管理部３、および、格納対象となるレコードの入力やレコードの格納，削除，更新，検索等に関わる要求を入力するための入力部４と、入力部４から渡されたレコードおよび要求を処理するための主制御部５によって構成され、主制御部５には、新たな属性を有するレコードが格納される度に当該レコードの属性を表すグループキーと最大レコード長およびレコード内のデータ区切りを対応させて記憶するレコード構成条件記憶手段６が併設されている。このレコード構成条件記憶手段６は、独立した記憶手段であってもよいし、また、データ記憶媒体２の一部を利用して構成するようにしてもよい。
【００２９】
入力部４は広い意味ではキーボードやマウスあるいはデジタイザ等のハードウェア資源を含むが、ここでいう入力部４は、実質的には、データベース構築システム１の主要部を成すコンピュータにインストールされたデータベース管理用のアプリケーションプログラムである。
また、データベース管理部３は、コンピュータのＣＰＵの機能の一部を時分割等で利用するドライバプログラム等によって構成されてコンピュータ本体と一体化されている場合もある。このデータベース管理部３は、主制御部５からの指令を受けてデータ記憶媒体２にアクセスし、データ記憶媒体２のデータを操作する。
データ記憶媒体２は書き替え可能なデータ記憶媒体であり、一般に、コンピュータ内外のハードディスクドライブやＭＯドライブあるいはＺＩＰドライブ等によって構成される。
主制御部５は、実質的には、データベース構築システム１の主要部を成すコンピュータのＣＰＵ（以下単にＣＰＵという）と、このコンピュータにインストールされたデータベース制御用のシステムプログラムとで構成されるもので、本実施形態に固有の構成要素である。
【００３０】
但し、データベース管理用のアプリケーションプログラムやデータベース制御用のシステムプログラムをネットワーク上のサーバマシン等にインストールして他のクライアントマシンから利用するようにしてもよく、各種プログラムの設置先を限定するものではない。
【００３１】
主制御部５には、入力部４から渡されたレコードと格納要求とを受けて当該レコードの属性と同じ属性を有するレコードがデータ記憶媒体２に既に格納されているか否かを判定する属性登録状態判定手段７と、属性登録状態判定手段７の判定結果に基き同じ属性を有するレコードが格納されていない場合に作動して、この時点で格納対象となっているレコードと同じ属性を有するレコードをグループ化して格納するためのデータベースの構築に必要とされる連続未記憶領域をデータ記憶媒体２内に確保し、この連続未記憶領域内にダミーレコードを設定して最初のダミーレコードに格納対象となっているレコードを格納して実レコードとする初期格納手段８と、属性登録状態判定手段７の判定結果に基き同じ属性を有するレコードが格納されている場合に作動して、格納対象となっているレコードと同じ属性を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在するか否かを判定する追加格納可否判定手段９と、追加格納可否判定手段９の判定結果に基き格納対象となっているレコードと同じ属性を有するダミーレコードが存在する場合に作動して、このダミーレコードに格納対象となっているレコードを格納して実レコードとする追加格納手段１０と、追加格納可否判定手段９の判定結果に基き格納対象となっているレコードと同じ属性を有するダミーレコードが存在しない場合に作動して、属性登録状態判定手段７の判定結果に関わりなく初期格納手段８を強制的に起動させる強制起動手段１１とが設けられ、更に、初期格納手段８には、この初期格納手段８が強制起動手段１１によって起動された場合に限って、この時点で格納対象となっているレコードのグループキーに基いてレコード構成条件記憶手段６を参照して最大レコード長とレコード内のデータ区切りに従ってダミーレコードを設定するダミーレコード再構築機能１２が配備されている。
【００３２】
これらの属性登録状態判定手段７，初期格納手段８，追加格納可否判定手段９，追加格納手段１０，強制起動手段１１とダミーレコード再構築機能１２の実質的な機能実現手段は、前述したＣＰＵとデータベース制御用のシステムプログラムである。
【００３３】
次に、この実施形態のデータベース構築システム１において使用されるレコードの構成の概略について、図２を参照して簡単に説明する。
【００３４】
このレコードは、図２に示されるように、複数のデータの集合体によって形成され、その先頭部分にはレコードの属性を表すグループキー１３のデータが記憶される。また、明細キー１４は同一属性内でのレコード検索等を行うときに使用されるデータであり、データ本体１５は、格納すべきデータの主用部分である。更に、削除フラグ１６はレコードの使用状況を記憶するフラグであって、当該レコードがダミーレコードの状態もしくは実レコードとして使用されている状態にあるときにはリセット状態に保持され、また、当該レコードに物理的なデータを存続させたまま論理的な削除処理を行ったときにセットされるようになっている。
【００３５】
仮に、銀行取引で使用されるデータベースを例にとって言えば、例えば、レコードの属性を表すグループキー１３は顧客の口座番号（最大データ長：数値６桁）であり、同一属性内でのレコード検索等に用いられる明細キー１４は明細通番（最大データ長：数値４桁）であって、格納すべきデータの主用部分であるデータ本体１５は入出金の金額（最大データ長：数値６桁）といったものである。
【００３６】
実際には、明細キーとして利用可能なデータとしては、この他にも入出金の日付等があり、また、データ本体１５としては入金／出金の区別等があって、複数種の明細キーやデータ本体を単一レコード内に並列的に記憶することも可能であるが、ここでは、システム全体の作用原理を平易に説明する必要上、グループキー１３，明細キー１４，データ本体１５の内容を銀行取引における口座番号，明細通番，入出金の金額に限定して説明するものとする。
【００３７】
図３および図４は、主制御部５が入力部４からのアクセス要求を検出した場合に実行する処理の概略について示したフローチャートである。
【００３８】
次に、図３および図４を参照して前述の各手段および機能の実際的な動作のあらましについて説明する。
【００３９】
図３におけるステップＳ１の判定処理で入力部４からのアクセス要求を検出した主制御部５は、まず、このアクセス要求がレコードの格納に関わるものであるのか（ステップＳ２）、レコードの削除に関わるものであるのか（ステップＳ１７）、レコード内のデータの更新に関わるものであるのか、あるいは、レコードの検索に関わるものであるのかを判定する（ステップＳ２１）。
【００４０】
ステップＳ２の判定結果が真となった場合には、入力部４からレコードを格納するための要求と格納対象のレコードとが入力されていることを意味するので、主制御部５の属性登録状態判定手段７（ＣＰＵ）は、まず、レコード構成条件記憶手段６を参照して（ステップＳ３）、この時点で格納対象となっているレコードのグループキー（口座番号）と同じグループキーが既にレコード構成条件記憶手段６に記憶されているか否かを判定する（ステップＳ４）。
【００４１】
ステップＳ４の判定結果が偽となった場合、つまり、属性登録状態判定手段７によって同じグループキーがレコード構成条件記憶手段６に記憶されていないと判定された場合には、格納の対象となっているレコードの属性に対応した一連の連続未記憶領域が現時点では未だデータ記憶媒体２の内部に確保されていないことを意味するので、主制御部５は、データベース構築システム１のモニタ画面に、この属性を有するレコードを格納するために必要とされる最大レコード長と当該属性のデータベースの構築に必要とされるレコード数の予想値とを入力する旨のメッセージを表示し、オペレータによって入力された最大レコード長とレコード数の予想値とを読み込んで、これらの最大レコード長とレコード数の予想値とを現時点で入力されているレコードのグループキー（口座番号）に対応させてレコード構成条件記憶手段６に記憶する（ステップＳ５）。
【００４２】
但し、最大レコード長は、グループキー（口座番号）の最大データ長と、明細キー（明細通番）の最大データ長と、データ本体（入出金の金額）の最大データ長との総和であり、各データの最大データ長も個別に記憶するものとする。
【００４３】
次いで、主制御部５は、ステップＳ５の処理で読み込んだ最大レコード長とレコード数の予想値とを乗じて当該属性に関連するデータベースを構築するために必要とされる一連の連続未記憶領域の大きさを求め、必要とされる大きさの連続未記憶領域がデータ記憶媒体２の内部に存在するか否かを判定する（ステップＳ６）。
【００４４】
必要とされる大きさの連続未記憶領域が検出されてステップＳ６の判定結果が真となった場合には、主制御部５の初期格納手段８は、検出された単数または複数の連続未記憶領域の内から最もアドレスの若い連続未記憶領域を１つ選択して、この連続未記憶領域を当該属性を有するレコードの格納場所として定める（ステップＳ８）。
【００４５】
次いで、主制御部５の初期格納手段８は、必要レコード数記憶レジスタｎにステップＳ５の処理で読み込んだレコード数の予想値をセットし（ステップＳ９）、ダミーレコード生成数記憶カウンタｉの値を０に初期化する（ステップＳ１０）。そして、ステップＳ８の処理で選択した連続未記憶領域に、ステップＳ５の処理で読み込んだ最大レコード長と各構成データの最大データ長とに基いて１つのダミーレコードを生成した後（ステップＳ１１）、ダミーレコード生成数記憶カウンタｉの値を１インクリメントし（ステップＳ１２）、該カウンタｉの現在値が必要レコード数記憶レジスタｎの値に達しているか否かを判定する（ステップＳ１３）。
【００４６】
ここで、ステップＳ１３の判定結果が真となった場合、つまり、データベースの構築に必要とされるレコード数の予想値ｎに相当する数のダミーレコードの生成が完了していないと判定された場合には、主制御部５の初期格納手段８は、前記と同様にしてステップＳ１１〜ステップＳ１３の処理を繰り返し実行し、ステップＳ８の処理で選択した一連の連続未記憶領域に、レコード数の予想値ｎに相当する数のダミーレコードを続けて生成する。
【００４７】
この例では、グループキー（口座番号）の最大データ長が数値６桁，明細キー（明細通番）の最大データ長が数値４桁，データ本体（入出金の金額）の最大データ長が数値６桁であるから、最大レコード長は数値１６桁となり、６桁，４桁，６桁，１桁の並びで数値１７桁を格納することが可能なダミーレコードが必要レコード数ｎ個分だけ生成されることになる。但し、最後の数値１桁は、削除フラグをセットするための記憶領域である。
【００４８】
次いで、主制御部５の初期格納手段８は、ステップＳ１の処理で読み込んだ格納対象のレコードに記憶されているグループキー（口座番号）と同じグループキーを有するダミーレコードの中から最も若いアドレスを有するダミーレコードを選択し、このダミーレコードにステップＳ１の処理で読み込んだ格納対象のレコードの内容、つまり、グループキー（口座番号）と明細キー（明細通番）とデータ本体（入出金の金額）の内容を格納する（ステップＳ１４）。
【００４９】
この場合は、新たな属性を有するレコードの格納のために新たな連続未記憶領域が確保された直後の処理であるから、結果的に、前述のステップＳ８の処理で選択された連続未記憶領域の最初のダミーレコードに、ステップＳ１の処理で読み込んだ格納対象のレコードの内容が格納され、この最初のダミーレコードが内容を得て実レコードに変化することになる。
【００５０】
一方、ステップＳ２の判定結果およびステップＳ４の判定結果が共に真となった場合、つまり、属性登録状態判定手段７によって同じグループキーがレコード構成条件記憶手段６に記憶されていると判定された場合には、この時点で格納の対象となっているレコードの属性に対応した属性を有する一連の連続未記憶領域が既にデータ記憶媒体２の内部に確保されていることを意味する。
【００５１】
この場合は、更に、制御部５の追加格納可否判定手段９が、格納対象となっているレコードと同じグループキー（口座番号）を有する最後の実レコードの次に同じ属性を有するダミーレコードが存在するか否か、つまり、既に確保されている連続未記憶領域をそのまま利用して新たなレコードの格納が可能であるか否かを判定することになる（ステップＳ１５）。
【００５２】
例えば、この属性に対応した連続未記憶領域に前述のようにしてｎ個のダミーレコードが生成されているとした場合、ｎ個のダミーレコードの全てが既に使用されて実レコードになっていたとすると、この連続未記憶領域の最後の実レコードはｎ番目のものであるので、ｎ＋１番目の未使用ダミーレコードは存在せず、ステップＳ１５の判定結果は偽、つまり、既に確保されている連続未記憶領域をそのまま利用して新たなレコードを格納することは不可能となる。
また、１個目ないしｎ−１個目までのダミーレコードが既に使用されて実レコードになっている場合では、この実レコードの次にも未使用ダミーレコードが存在するので、ステップＳ１５の判定結果は真、つまり、既に確保されている連続未記憶領域をそのまま利用して新たなレコードを格納することが可能であることが分かる。
【００５３】
そこで、ステップＳ１５の判定結果が真、要するに、追加格納可否判定手段９によって、既に確保されている連続未記憶領域をそのまま利用して新たなレコードを格納することが可能であると判定された場合には、制御部５の追加格納手段１０が、前記と同様にして、ステップＳ１の処理で読み込んだ格納対象のレコードを、これと同じグループキー（口座番号）を有する最後の実レコードの次に位置するダミーレコード、言い換えれば、同じグループキー（口座番号）を有するダミーレコードのうち最も若いアドレスを有するダミーレコードに格納し、このダミーレコードを実レコードに変化させる（ステップＳ１４）。
【００５４】
一方、ステップＳ１５の判定結果が偽、つまり、既に確保されている連続未記憶領域をそのまま利用して新たなレコードを格納することが不可能であると判定された場合には、主制御部５の強制起動手段１１が、改めて初期格納手段８を作動させる。そして、この初期格納手段８に設けられたダミーレコード再構築機能１２が、レコード構成条件記憶手段６を参照して格納対象のレコードのグループキー（口座番号）に対応する最大レコード長（各データの最大データ長を含む）とレコード数の予想値とを読み込んで（ステップＳ１６）、これらの情報に基いて前記と同様にしてステップＳ６〜ステップＳ１３の処理を実行し、改めて当該属性のレコードを格納するための連続未記憶領域を確保し、この連続未記憶領域にｎ個のダミーレコードを生成する。
【００５５】
この場合、連続未記憶領域およびダミーレコードの生成に必要とされる情報は既にレコード構成条件記憶手段６に登録されているので、ステップＳ５に示されるようなオペレータ側の入力処理は不要である。
【００５６】
次に、主制御部５の初期格納手段８は、格納対象のレコードに記憶されているグループキー（口座番号）と同じグループキーを有するダミーレコードの中から最も若いアドレスを有するダミーレコードを選択し、このダミーレコードにステップＳ１の処理で読み込んだ格納対象のレコードの内容、つまり、グループキー（口座番号）と明細キー（明細通番）とデータ本体（入出金の金額）の内容を格納する（ステップＳ１４）。
【００５７】
この場合は、既に登録されている属性を有するレコードの格納のために新たなに連続未記憶領域とダミーレコードが生成された直後の段階であるから、この連続未記憶領域の最初のダミーレコードに、ステップＳ１の処理で読み込んだ格納対象のレコードの内容が格納され、この連続未記憶領域における最初のダミーレコードが内容を得て実レコードに変化することになる。
【００５８】
従って、初期に予想されたレコード数ｎを越えて同種の属性を有するレコードが入力された場合であっても、オペレータによる条件の再入力作業（ステップＳ５参照）等を行うことなく、続けてレコードの格納作業を継続することができる。
【００５９】
なお、ステップＳ７のデフラグ処理は、必要とされる大きさの連続未記憶領域がデータ記憶媒体２の内部に検出されなかった場合にのみ実行される処理であり、内部のデータの順位を維持したままデータをシフトすることで、分割状態にある未記憶領域を一体化して連続未記憶領域を生成するために利用される。
【００６０】
以上が、レコードの格納に関連した処理のあらましである。
【００６１】
一方、ステップＳ２の判定結果が偽、かつ、ステップＳ１７の判定結果が真となった場合には、入力部４からレコードを削除するための要求と削除対象のレコードを特定するための情報が入力されていることを意味するので、主制御部５は、まず、削除対象のレコードを特定するための情報が、特定の属性のグループ内のレコードの一括削除を示すグループキー（口座番号）であるのか、あるいは、グループを特定するためのグループキーとグループ内の特定レコードの単体削除を示す明細キー（明細通番）の組み合わせであるのかを判定する（ステップＳ１８）。
【００６２】
ここで、ステップＳ１８の判定結果が真となった場合、つまり、削除対象のレコードを特定するための情報としてグループキーのみが検出された場合には、グループ内のレコードを一括削除する必要があることを意味するので、主制御部５は、ステップＳ１の処理で入力された削除対象のグループキーを有する全てのレコードを検索し、それらのレコードの内容全てを物理的に削除（ワイプ）する（ステップＳ１９）。この場合、未使用のダミーレコードと実レコードとの区別はなく、同じグループキーを有する全てのレコードが一括して削除され、併せて、レコード構成条件記憶手段６の関連情報も削除されるので、レコードの削除によって初期化された一連の連続未記憶領域は、別の属性のレコードを格納するための連続未記憶領域として前述のステップＳ６の処理で改めて検出することが可能である。前述したように、強制起動手段１１および初期格納手段８が何度か作動して同じ属性を有する複数の連続未記憶領域が生成されていた場合には、これらが全て削除されることになる。
【００６３】
一方、ステップＳ１８の判定結果が偽となった場合、つまり、削除対象のレコードを特定するための情報として、グループを特定するためのグループキーとグループ内の特定レコードの単体削除を示す明細キーの組み合わせが検出された場合には、グループ内の特定のレコードを一つのみ削除すればよいことを意味するので、主制御部５は、ステップＳ１の処理で入力されたグループキーと明細キーの組み合わせに基いて、この指定に対応した一つのレコードを検索し、このレコードの内容のみを削除することになる（ステップＳ２０）。この場合の削除処理は物理的な削除（ワイプ）ではなく、当該レコードに削除フラグ１６をセットすることによって論理的に達成される。これにより、このレコードはソフトウェア上では恰も実在しないようにして扱われるが、データ記憶媒体２の内部には当該レコードの情報は依然として存在するので、この削除フラグを強制的にリセットすれば当該レコードのデータを復旧させることが可能である。削除フラグ１６がセットされたレコード、あるいは、削除フラグ１６がセットされたレコードの集合体が連続未記憶領域として検出されることはない。
【００６４】
以上が、レコードの削除に関連した処理のあらましである。
【００６５】
また、ステップＳ２およびステップＳ１７の判定結果が共に偽、かつ、ステップＳ２１の判定結果が真となった場合には、入力部４からレコードの内容を更新するための要求と更新すべき実質的な数値または文字列ならびに更新対象のレコードを特定するための情報が入力されていることを意味する。
【００６６】
この場合、主制御部５は、グループを特定するためのグループキー（口座番号）とグループ内のレコードを特定するための明細キー（明細通番）の組み合わせに基いて、更新の対象として指定された一つのレコードを検索し、このレコードの主用部分であるデータ本体１５（入出金の金額）の内容を、ステップＳ１で入力された更新データに書き替える（ステップＳ２２）。
【００６７】
既に述べた通り、データ記憶媒体２における各レコードの大きさは、レコードの構成要素となる各データの最大データ長を基準として設定されているので、桁数の大きな数値や文字列を格納済みのレコードに上書きして再格納するような場合であっても、本来当該データがあるべき領域に確実に内容を保存することができる。従って、レコードの断片化（連鎖行）の発生といった問題はない。
【００６８】
以上が、レコードの更新に関連した処理のあらましである。
【００６９】
これに対し、ステップＳ２，ステップＳ１７，ステップＳ２１の判定結果が全て偽となった場合には、入力部４からレコード検索するための要求と検索すべきレコードを特定するための情報が入力されていることを意味する。
【００７０】
この場合、主制御部５は、グループを特定するためのグループキー（口座番号）とグループ内のレコードを特定するための明細キー（明細通番）の組み合わせに基いて、検索の対象として指定された一つのレコードを検索する（ステップＳ２３）。但し、レコードの検索対象となるのは削除フラグ１６がセットされていない実レコードの部分のみである。そして、主制御部５は、検索して得たレコードの内容をデータベース構築システム１のモニタ画面に表示し、あるいは、プリントして出力する等の処理を実行する（ステップＳ２４）。
【００７１】
同じ属性（口座番号）を有するレコードは全てデータ記憶媒体２の内部で一連続の記憶領域内に連続して格納されており、また、レコード毎の断片化（連鎖行）の発生といった問題もないので、データ記憶媒体２に物理的にアクセスしてデータの入出力処理を行うデータベース管理部３が過剰に稼動されることはなく、レコードの検索に必要とされる所要時間（シークタイム）が短縮化され、また、データベース管理部３自体の実質的な耐久性も向上する。
【００７２】
これが、レコードの検索に関連した処理のあらましである。
【００７３】
以上の例では、属性登録状態判定手段７，初期格納手段８，追加格納可否判定手段９，追加格納手段１０，強制起動手段１１およびダミーレコード再構築機能１２の作用原理を平易に説明する必要上、単一レコード内にグループキー１３，明細キー１４，データ本体１５が一つずつ存在する場合について説明した。
【００７４】
次に、実際の銀行取引を考慮して、これらのキーやデータを複数化したレコードを取り扱う場合の他の実施形態について図５〜図１２を参照してコマンドを交えながら具体的に説明する。
【００７５】
図５はこの実施形態のデータベース構築システムの構成の概略について示した機能ブロック図である。この実施形態のデータベース構築システム１７は、図５に示される通り、レコードを記憶するためのデータ記憶媒体１８、このデータ記憶媒体１８にアクセスして内部のデータを操作するためのデータベース管理部１９、および、格納対象となるレコードの入力やレコードの格納，削除，更新，検索等に関わる要求を入力するための入力部２０と、入力部２０から渡されたレコードおよび要求を処理するための主制御部２１によって構成され、主制御部２１には、データベースのテーブル名やダミーレコードの生成に必要とされる各種の情報を記憶したレコード構成条件記憶手段２２が併設されている。
【００７６】
入力部２０は、実質的には、データベース構築システム１７の主要部を成すコンピュータにインストールされたデータベース管理用のアプリケーションプログラムであり、また、主制御部２１は、データベース構築システム１７の主要部を成すコンピュータにインストールされたデータベース制御用のシステムプログラムである。また、この実施形態では最大レコード長とレコード内のデータ区切り（各種キーやデータ本体の桁数）とレコード数の予想値、つまり、ダミーレコードの生成に必要とされる各種の情報を予めレコード構成条件記憶手段２２に記憶させておく。具体的には、レコード数の予想値は１から８９８までの範囲の値とする。また、レコードの内容は列名と数値・文字または日付の属性と、桁数の属性と、グループキー，明細キー，明細副キーまたはデータ本体の種別属性を含んでいる。
【００７７】
まず、各部の機能について簡単に説明する。
入力部２０は、レコードのグループを識別するグループキーやグループ内でのレコードの属性を細分化するための明細キー、および、単数または複数のデータ本体によって構成されるレコードをデータ記憶媒体１８に格納するとき、データベースへのアクセスを要求するデータベースコマンド２３で主制御部２１の機能を呼び出す。この実施形態においては、レコードの属性を更に細分化して識別するため、前述の明細キーに加えて明細副キーが設けられている。明細副キーは概念的には明細キーの下位に位置する明細キーであり、基本的な作用に関しては明細キーと同様である。
【００７８】
主制御部２１は、データ記憶媒体１８に存在しない新グループキーの入力を検出した場合、新グループのレコード領域確保のために、レコード構成条件記憶手段２２に記憶されている各種条件を基にダミーレコードを挿入するデータベース操作文２４を組み立てる。なお、ダミーレコードの各列は最大桁数を持つように構成する。
【００７９】
次に、組み立てたデータベース操作文２４をレコード構成条件記憶手段２２のレコード数の予想値だけ繰り返す。これにより、新グループ用に物理的に連続するレコード領域が確保される。
【００８０】
次に、入力部２０が要求したレコード値（データ内容）で、ダミーレコードを実レコードに置換するデータベース操作文２４を組み立てて実行する。なお、置換するダミーレコードは確保した領域の内で、物理的に最も若いアドレスのレコードとする。置換される実レコードは、ダミーレコードの各列が最大桁数で構成され十分な領域サイズのため、置換後の実レコードが分離して格納されることはない。従って、レコードの断片化（連鎖行）は発生しない。
【００８１】
入力部２０が格納を要求したレコードのクループキーがデータ記憶媒体１８に存在し、当グループのレコード領域にダミーレコードがある場合には、新たなレコード領域の確保は必要なく、前述と同様のダミーレコード置換のみを行う。
【００８２】
また、ダミーレコードがない場合は、新グループキーの場合と同様のレコード領域の確保とダミーレコードの置換を行う。
【００８３】
入力部２０のレコード削除要求には２つのタイプがある。１つはグループキーを指定してグループ内の全レコードの削除を要求するためのものである。この場合、主制御部２１は指定のグループキーに該当するダミーレコードおよび実レコードをすべて物理的に削除する。２つ目は、グループキーと明細キーを特定して単一の実レコードの削除を依頼する要求である。この場合、主制御部２１は該当する実レコードの列に削除フラグを設定して論理的に削除された状態とする。
【００８４】
入力部２０は、グループキー，明細キー，データ本体を指定してレコードの更新を要求する。これを受けた主制御部２１は該当する実レコードの置換処理を行う。この場合も、格納要求の際の置換の場合と同様、予め十分な領域が確保されているため、レコードの断片化（連鎖行）は発生しない。
【００８５】
入力部２０がレコードの検索を要求すると、主制御部２１は削除フラグが未設定の実レコードのみを対象に検索を実行し、検索されたレコードを入力部２０へ返却する。モニタ画面に対する表示制御等は入力部２０の側で行われる。
【００８６】
このようにして、関連するレコード同士を物理的に近傍な位置に配置することを可能にする。
【００８７】
図６では、データ記憶媒体１８のデータベーステーブル２５（取引履歴表）に口座番号のグループ毎に連続したレコード領域が確保され、この領域内に使用済み実レコード２６と未使用のダミーレコード２７が格納された状態を表している。
【００８８】
図７では使用済みの実レコード２８，２９と未使用のダミーレコード３０，３１の格納状態を詳細に表している。各レコードは口座番号のグループキー２８ａと、日付および明細通番の２種の明細キー２８ｂと、使用済みか否かおよび論理的に削除状態か否かを表す明細副通番の明細副キー２８ｃと、入出金および金額の２種のデータ本体２８ｄの列から構成されている。なお、明細副キー２８ｃは値が１００のときに使用済み、また、９９９のときに削除状態、更に、１０１から９９８までは未使用のダミーレコードを表す。つまり、この明細副キー２８ｃは実質的に削除フラグとしての機能を備えていることになる。
【００８９】
次に、図８〜図１２を参照して本実施形態の全体の動作について詳細に説明する。
【００９０】
１番目にレコードの格納について説明する。
まず、入力部２０が図８のデータベースコマンド２３で主制御部２１を呼び出す。
主制御部２１はデータベースコマンド２３を受けて構文を解析する。その結果、「格納」コマンドを認識し、「取引履歴表」のテーブル名と列名および夫々の列名の値を抽出する。
次に、主制御部２１は、格納可能なダミーレコード領域が存在するかどうかを検索するデータベース操作文２４ａを組み立てる。この時、抽出したテーブル名とレコード構成条件記憶手段２２を用いる。列名はダミーレコードの物理アドレスを返却する「ＲＯＷＩＤ」とする。検索条件はグループキーの「口座番号」が指定値「１２３４５６」で、明細副キーの明細副通番が削除済みの実レコードでなく（９９９以外の値）、かつ、未使用のダミーレコード（＞１０１）の内で、最小の物理アドレスのレコードである。
次に、主制御部２１がデータベース操作文２４ａを実行する。
実行の結果、対象ダミーレコードが見つからないときは、ダミーレコードを挿入するためのデータベース操作文２４ｂを組み立てる。列名はレコード構成条件記憶手段２２に記憶された全列名であり、列名の値にはグループキーの「口座番号」に指定値「１２３４５６」を用い、明細副キーの「明細副通番」にはホスト変数名「：Ｖ３」を用い、また、他の列は最大桁数（最大データ長）となる値を指定する。例えば「金額」は６桁であるため、６桁の値「１０００００」とする。
次に、主制御部２１は、データベース操作文２４ｂで支持される処理をレコード構成条件記憶手段２２に記憶された予想値の数だけ繰り返し実行する。但し、「明細副通番」のホスト変数は初期値を「１０１」とし、処理を繰り返す毎に「＋１」だけ増加させる。
次に、改めてデータベース操作文２４ａを実行し、「ＲＯＷＩＤ」が示すダミーレコードの最小の物理アドレスを取得する。
これ以降は最初のデータベース操作文２４ａの実行で対象ダミーレコードが見つかったときと同じ処理となる。
つまり、何れの場合においても、置換処理のためのデータベース操作文２４ｃを組み立てることになる。ここでは、データベースコマンド２３から抽出した列名とその値および明細副キーの「明細副通番」を使用済みの値「１００」とし、置換条件として「ＲＯＷＩＤ」とホスト変数「：Ｖ１」の等号条件とする。
次に、最小の物理アドレスをホスト変数「：Ｖ１」に設定し、データベース操作文２４ｃを実行する。
そして、最終的に、実行結果と制御をデータベース制御用のシステムプログラムである主制御部２１からデータベース管理用のアプリケーションプログラムである入力部２０の側へ返す。確認のための表示処理等に関しては、前述した通り、入力部２０の側が受け持つ。
【００９１】
２番目に現在位置付け済みのレコードの削除（単一レコードの削除）について説明する。
現在位置付け済みのレコードは、更新用の検索データベースコマンドに従って実レコードが検索された後にレコード取得データベースコマンドが実行された状態の実レコードであり、データベース管理部１９が記憶している。
この場合、まず、入力部２０が図９のデータベースコマンド３２で主制御部２１を呼び出す。
主制御部２１はデータベースコマンド３２を受けて構文を解析する。その結果、「現在位置付け済みのレコード削除」コマンドを認識し、「取引履歴表」テーブル名を抽出する。
次に、主制御部２１が、論理的に削除状態の実レコードに置換するためのデータベース操作文３３を組み立てる。この時、抽出したテーブル名「取引履歴表」を用いる。列名はレコード構成条件記憶手段２２の明細副キーの「明細副通番」とし、削除実レコードを表す値「９９９」を設定する。本実施形態においては、「９９９」の値を有する「明細副通番」が実質的な削除フラグとして機能するのである。
そして、主制御部２１は、更に、データベース操作文３３を実行し、実行結果と制御を入力部２０へ返す。
【００９２】
３番目にグループ内の全レコードに亘る物理的な削除について説明する。
まず、入力部２０が図１０のデータベースコマンド３４で主制御部２１を呼び出す。
主制御部２１はデータベースコマンド３４を受けて構文を解析する。解析では、「物理レコード削除」コマンドを認識し、検索条件にはレコード構成条件記憶手段２２のグループキー「口座番号」が記述されていることをチェックする。そして、「取引履歴表」テーブル名と検索条件を抽出する。
次に、グループの全レコードを物理削除するデータベース操作文３５を組み立てる。この時、抽出したテーブル名「取引履歴表」と検索条件を用いる。
次に、データベース操作文３５を実行して、実行結果と制御を入力部２０へ返す。
【００９３】
４番目に現在位置付け済みのレコードの更新について説明する。
まず、入力部２０が図１１のデータベースコマンド３６で主制御部２１を呼び出す。
主制御部２１はデータベースコマンド３６を受けて構文を解析する。その結果、「現在位置付け済みのレコード更新」コマンドを認識し、「取引履歴表」テーブル名と列名と列名の値を抽出する。
次に、実レコードを更新するデータベース操作文３７を組み立てる。この時、抽出したテーブル名「取引履歴表」と列名と値を用いる。
そして、データベース操作文３７を実行し、実行結果と制御を入力部２０へ返す。
【００９４】
５番目にレコードの検索について説明する。
まず、入力部２０が図１２のデータベースコマンド３８で主制御部２１を呼び出す。
主制御部２１はデータベースコマンド３８を受けて構文を解析する。その結果、「検索」コマンドを認識し、「取引履歴表」テーブル名と列名とそれぞれの列名の値と検索条件を抽出する。
次に、主制御部２１は、実レコードを検索するデータベース操作文３９を組み立てる。この時、抽出したテーブル名，列名，列名の値，検索条件とレコード構成条件記憶手段２２を用いる。検索条件はＡＮＤ条件として、明細副キーの「明細副通番」が使用済み（＝１００）の条件を追加する。
次に、データベース操作文３９を実行し、実行結果と制御を入力部２０へ返す。
【００９５】
６番目にレコードの取得について説明する。
この場合、入力部２０がレコード取得する前に、前述のデータベースコマンド３８でレコード検索を実行しておくことが前提条件である。
次に、入力部２０がレコード取得データベースコマンドで主制御部２１を呼び出す。
主制御部２１はレコード取得データベースコマンドを受けて構文を解析する。
その結果、「レコード取得」コマンドを認識する。
次に、主制御部２１が、検索済みの実レコード郡から１レコードを取得するデータベース操作文を組み立てる。
次に、このデータベース操作文を実行し、実行結果と制御を入力部２０へ返す。
この際、レコード取得コマンドを実行する度にレコード検索後の最初から最終レコードまで１レコードづつが返却される。
【００９６】
【発明の効果】
本発明のデータベース構築方法およびデータベース構築システムによれば、属性が確認されていないレコードの入力が検出される度に、その属性のレコードを格納するための記憶領域となる連続未記憶領域が新たに定義され、その後、各記憶領域に同一属性のレコードのみが格納されるので、様々な属性のレコードが時系列に沿って順不同で入力された場合であっても、同じ属性を有する複数のレコードを一連続の記憶領域内で時系列に沿った順序で格納することができる。つまり、属性によってグループ化されたレコードをデータ記憶媒体上で物理的にも近い位置に格納することができるようになり、これにより、レコード検索等に必要とされるアクセス所要時間が大幅に軽減されて、データ記憶媒体にアクセスする際の入出力効率が改善される。
しかも、レコードを格納するためのダミーレコードの大きさは最大レコード長に合わせて設定されているので、レコードを一旦格納した後で改めて特定のレコードの一部のデータに対してのみデータの更新操作を行ったような場合であっても、更新後のデータが元の格納位置に収まり切らなくなるといった問題は発生せず、レコードの断片化（連鎖行）の発生は確実に防止され、全ての処理操作において、データ記憶媒体のアクセス所要時間が軽減される。
同時に、レコードの断片化（連鎖行）に対処するために必要とされるハードウェアの無駄な動きもなくなるため、ハードウェアの耐久性、例えば、ハードディスクドライブのアーム等の耐久性も実質的に向上することになる。
【００９７】
更に、同じ属性を有するレコードをグループ化して格納するために設定された連続未記憶領域内のダミーレコードの全てにレコードが格納されたときには、改めて、これと同様の連続未記憶領域が追加的に設定されるようになっているので、レコード数の予想値を越えて同じ属性のレコードが入力された場合であっても、継続して同じ属性のレコードの格納作業を行うことが可能である。
【図面の簡単な説明】
【図１】本発明のデータベース構築方法を適用した一実施形態のデータベース構築システムの概略について示した機能ブロック図である。
【図２】同実施形態のデータベース構築システムにおいて使用されるレコードの構成の概略について示した概念図である。
【図３】同実施形態のデータベース構築システムに設けられた主制御部が実行する処理の概略について示したフローチャートである。
【図４】同実施形態のデータベース構築システムに設けられた主制御部が実行する処理の概略について示したフローチャートの続きである。
【図５】本発明のデータベース構築方法を適用した他の一実施形態のデータベース構築システムの概略について示した機能ブロック図である。
【図６】レコード格納領域とレコードの格納状態の一例を示した概念図である。
【図７】レコードの内容の一例を示した概念図である。
【図８】レコードの格納に際して使用されるデータベースコマンドとデータベース操作文の一例である。
【図９】単一のレコードの削除に際して使用されるデータベースコマンドとデータベース操作文の一例である。
【図１０】グループ内の全レコードの削除に際して使用されるデータベースコマンドとデータベース操作文の一例である。
【図１１】レコードの更新に際して使用されるデータベースコマンドとデータベース操作文の一例である。
【図１２】レコードの検索に際して使用されるデータベースコマンドとデータベース操作文の一例である。
【図１３】従来のデータベース構築システムの構成の概略について示した機能ブロック図である。
【図１４】従来のデータベース構築システムの問題点を簡略化して示した概念図である。
【符号の説明】
１  データベース構築システム
２  データ記憶媒体
３  データベース管理部
４  入力部（データベース管理用のアプリケーションプログラム）
５  主制御部（データベース制御用のシステムプログラム）
６  レコード構成条件記憶手段
７  属性登録状態判定手段
８  初期格納手段
９  追加格納可否判定手段
１０  追加格納手段
１１  強制起動手段
１２  ダミーレコード再構築機能
１３  グループキー
１４  明細キー
１５  データ本体
１６  削除フラグ
１７  データベース構築システム
１８  データ記憶媒体
１９  データベース管理部
２０  入力部（データベース管理用のアプリケーションプログラム）
２１  主制御部（データベース制御用のシステムプログラム）
２２  レコード構成条件記憶手段
２３  データベースコマンド
２４  データベース操作文
２５  データベーステーブル
２６  使用済み実レコード
２７  未使用のダミーレコード
２８，２９  使用済み実レコード
３０，３１  未使用のダミーレコード
３２  データベースコマンド
３３  データベース操作文
３４  データベースコマンド
３５  データベース操作文
３６  データベースコマンド
３７  データベース操作文
３８  データベースコマンド
３９  データベース操作文
１００  データ記憶媒体
１０１  データベース管理部
１０２  入力部（データベース管理用のアプリケーションプログラム）
１０３  データベースコマンド
【図１】
0004623917.tif 000002
【図２】
0004623917.tif 000003
【図３】
0004623917.tif 000004
【図４】
0004623917.tif 000005
【図５】
0004623917.tif 000006
【図６】
0004623917.tif 000007
【図７】
0004623917.tif 000008
【図８】
0004623917.tif 000009
【図９】
0004623917.tif 000010
【図１０】
0004623917.tif 000011
【図１１】
0004623917.tif 000012
【図１２】
0004623917.tif 000013
【図１３】
0004623917.tif 000014
【図１４】
0004623917.tif 000015