(57)【特許請求の範囲】
【請求項１】
各レコードをグループ番号で管理するデータレコードテーブルと、このデータレコードテーブルと二項関係を有するレコードを有する関連レコードテーブルとをデータベース上に備え、上記データレコードテーブルのグループ番号を設定するグループ番号設定装置であって、
少なくとも１つ以上の関連レコードを有する関連レコードテーブルから順次関連レコードに格納された関連名を読み出す関連名読出手段と、
上記データレコードテーブルにて読み出された関連名を含む二つのレコードを特定する特定手段と、
上記特定されたデータレコードのグループ番号を上記関連レコードの読み出し順に従って新しく生成したグループ番号によって設定する設定手段とを具備することを特徴とするグループ番号設定装置。
【請求項２】
上記請求項１に記載のグループ番号設定装置において、
上記設定手段は、上記特定手段にて特定された二つのレコードのグループ番号が未設定の場合、この二つのグループ番号に、上記設定手段にて生成した同一のグループ番号を設定することを特徴とするグループ番号設定装置。
【請求項３】
上記請求項１または請求項２のいずれかに記載のグループ番号設定装置において、
上記設定手段は、上記特定手段にて特定された二つのレコードのグループ番号について、一方のレコードのグループ番号のみが設定されている場合、当該レコードのグループ番号を設定されていない他方のグループ番号に設定することを特徴とするグループ番号設定装置。
【請求項４】
上記請求項１〜請求項３のいずれかに記載のグループ番号設定装置において、
上記設定手段は、上記特定手段にて特定された二つのレコードのグループ番号について、既に両方のレコードのグループ番号が設定されている場合、これらの既に設定されているグループ番号どうしを比較し、小さい値のグループ番号を大きい値のグループ番号を有するレコードのグループ番号として設定することを特徴とするグループ番号設定装置。
【請求項５】
上記請求項１〜請求項４のいずれかに記載のグループ番号設定装置において、
上記関連レコードテーブルは、上記データレコードテーブルと所定の整数Ｎにて形成されるＮ項関係を有することを特徴とするグループ番号設定装置。
【請求項６】
各レコードをグループ番号にて管理するデータレコードテーブルとこのデータレコードテーブルと二項関係を有するレコードを有する関連レコードテーブルとをデータベース上に備え、上記データレコードテーブルのグループ番号を設定するグループ番号設定方法であって、
少なくとも１つ以上の関連レコードを有する関連レコードテーブルから順次関連レコードに格納された関連名を読み出す関連名読出工程と、
上記データレコードテーブルにて読み出された関連名を含む二つのレコードを特定する特定工程と、
上記特定されたデータレコードのグループ番号を上記関連レコードの読み出し順に従って新しく生成したグループ番号によって設定する設定工程とを具備することを特徴とするグループ番号設定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、グループ番号設定装置およびグループ番号設定方法に関し、特に、データレコードおよび関連レコードを備え、新規に追加された関連レコードの内容に基づいて、データレコードにグループ番号を設定するグループ番号設定装置およびグループ番号設定方法に関する。
【０００２】
【従来の技術】
従来、この種のグループ番号設定装置として、特開平２−２３４２６９号公報に開示された技術がある。
本技術は、１レコード毎にデータを入力するデータ入力手段と、入力したレコードが１つ前に入力したレコードと同一のグループに属するか否かをグルーピング項目の項目値をもとに判定するグループ識別手段と、連続した２レコードが同一のグループに属すると判定されたときに連続した２レコードの項目値をペアにして出力する２項関係生成手段と、生成された項目値のペアをもとに全てのグループについて矛盾のない項目値の出現順序を表現する統合出現順序情報を随時に作成・実行する統合出現順序更新手段と、全てのデータの入力終了後に前記統合出現順序情報をもとに項目名順序情報を出力する項目名順序出力手段とを備えている。かかる構成において、概略、項目名について全グループ内の項目値の出現順に矛盾しない一貫した順序の並びを実現している。
また、同様のグループ番号設定装置としては、特開平８−２４１２２８号公報に開示された技術が知られている。
【０００３】
【発明が解決しようとする課題】
上述した従来のグループ番号設定装置においては、大量のデータレコード、および、関連レコードがある場合に、処理速度が低速になってしまうといった課題があった。さらに、このようなグループ番号設定装置においては、所定のデータレコードを削除する際に、当該データレコードが削除対象外であると判断された場合、このデータレコードに関連づいている全データレコードを削除対象外とする処理が必要である。
【０００４】
本発明は、上記課題にかんがみてなされたもので、上記必要とされる所定のデータレコードを削除する際の処理を実現可能とするとともに、データベースに付与されたインデックスを利用することにより処理速度の高速化を実現することが可能なグループ番号設定装置およびグループ番号設定方法の提供を目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、各レコードをグループ番号にて管理するデータレコードテーブルとこのデータレコードテーブルと二項関係を有するレコードを有する関連レコードテーブルとをデータベース上に備え、上記データレコードテーブルのグループ番号を設定するグループ番号設定装置であって、少なくとも１つ以上の関連レコードを有する関連レコードテーブルから順次関連レコードに格納された関連名を読み出す関連名読出手段と、上記データレコードテーブルにて読み出された関連名を含む二つのレコードを特定する特定手段と、上記特定されたデータレコードのグループ番号を上記関連レコードの読み出し順に従って新しく生成したグループ番号によって設定する設定手段とを具備する構成としてある。
【０００６】
上記のように構成した請求項１にかかる発明においては、データレコード、および、その関連レコード（二項関係）からなるシステムにおいて、新規に追加された関連レコードの内容に基づき、データレコードにグループ番号を設定する方法を実現するものである。本発明にかかるグループ番号設定装置は、各レコードをグループ番号にて管理するデータレコードテーブルと、このデータレコードテーブルと二項関係を有するレコードを有する関連レコードテーブルとを備え、このデータレコードテーブルのグループ番号を設定する。
【０００７】
かかる設定において、関連名読出手段は、少なくとも１つ以上の関連レコードを有する関連レコードテーブルから順次関連レコードに格納された関連名を読み出すとともに、特定手段にて、データレコードテーブルから読み出された関連名を含む二つのレコードを特定する。そして、設定手段が、特定されたデータレコードのグループ番号を関連レコードの読み出し順に従って新しく生成したグループ番号に設定する。
【０００８】
また、請求項２にかかる発明は、請求項１に記載のグループ番号設定装置において、上記設定手段は、上記特定手段にて特定された二つのレコードのグループ番号が未設定の場合、この二つのグループ番号に、上記設定手段にて生成した同一のグループ番号を設定する構成としてある。
上記のように構成した請求項２にかかる発明においては、特定手段にて特定された二つのレコードのグループ番号が未設定の場合、設定手段は、この二つのグループ番号に、設定手段にて生成した同一のグループ番号を設定する。
【０００９】
さらに、請求項３にかかる発明は、請求項１または請求項２のいずれかに記載のグループ番号設定装置において、上記設定手段は、上記特定手段にて特定された二つのレコードのグループ番号について、一方のレコードのグループ番号のみが設定されている場合、当該レコードのグループ番号を設定されていない他方のグループ番号に設定する構成としてある。
【００１０】
上記のように構成した請求項３にかかる発明においては、特定手段にて特定された二つのレコードのグループ番号について、一方のレコードのグループ番号のみが設定されている場合、設定手段は、このレコードのグループ番号を設定されていない他方のグループ番号に設定する。
【００１１】
さらに、請求項４にかかる発明は、請求項１〜請求項３のいずれかに記載のグループ番号設定装置において、上記設定手段は、上記特定手段にて特定された二つのレコードのグループ番号について、既に両方のレコードのグループ番号が設定されている場合、これらの既に設定されているグループ番号どうしを比較し、小さい値のグループ番号を大きい値のグループ番号を有するレコードのグループ番号として設定する構成としてある。
【００１２】
上記のように構成した請求項４にかかる発明においては、特定手段にて特定された二つのレコードのグループ番号について、既に両方のレコードのグループ番号が設定されている場合、設定手段は、これらの既に設定されているグループ番号どうしを比較し、小さい値のグループ番号を決定する。そして、比較にて大きい値とされたグループ番号と一致するレコード番号を有するレコードの当該レコード番号を上述した小さいレコード番号に更新し設定する。
【００１３】
さらに、請求項５にかかる発明は、請求項１〜請求項４のいずれかに記載のグループ番号設定装置において、上記関連レコードテーブルは、上記データレコードテーブルと所定の整数Ｎにて形成されるＮ項関係を有する構成としてある。
上記のように構成した請求項５にかかる発明においては、関連レコードテーブルとデータレコードテーブルとを所定の整数ＮにてＮ項関係を有するように形成する。
【００１４】
このように、各レコードをグループ番号にて管理するデータレコードテーブルとこのデータレコードテーブルと二項関係を有するレコードを有する関連レコードテーブルとを備え、上記データレコードテーブルのグループ番号を設定する手法は必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。
【００１５】
このため、請求項６にかかる発明は、各レコードをグループ番号にて管理するデータレコードテーブルとこのデータレコードテーブルと二項関係を有するレコードを有する関連レコードテーブルとをデータベース上に備え、上記データレコードテーブルのグループ番号を設定するグループ番号設定方法であって、少なくとも１つ以上の関連レコードを有する関連レコードテーブルから順次関連レコードに格納された関連名を読み出す関連名読出工程と、上記データレコードテーブルにて読み出された関連名を含む二つのレコードを特定する特定工程と、上記特定されたデータレコードのグループ番号を上記関連レコードの読み出し順に従って新しく生成したグループ番号によって設定する設定工程とを具備する構成としてある。
すなわち、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。
【００１６】
【発明の実施の形態】
以下、図面にもとづいて本発明の実施形態を説明する。
図１は、本発明の一実施形態にかかるグループ番号設定装置をブロック図により示している。
ここで、本実施形態にかかるグループ番号設定装置はデータレコードテーブルおよびその関連レコードテーブル（二項関係）からなるシステムにおいて、新規に追加された関連レコードの内容に基づき、データレコードテーブルにグループ番号を設定する方法を実現するものである。
【００１７】
図１に示すように、本実施形態のグループ番号設定装置は、記憶装置（データベース）１０とデータ処理装置２０を有しており、また、記憶装置１０はデータレコードテーブル１１と関連レコードテーブル１２を有し、データ処理装置２０はグループ番号生成処理部２２とグループ更新処理部２３とを有している。
【００１８】
ここで、グループ設定処理部２１は関連レコードテーブル１２の内容に基づいて、対応するデータレコードテーブル１１にグループ番号を設定する。但し、関連レコードテーブル内で直接関連づけられているデータレコード同士でない場合でも、他の関連レコードを通して間接的に関連づけられていることがあり、その場合には間接的に関連づけられているデータレコードも含めて同じグループ番号を設定する必要がある。
【００１９】
また、既に異なるグループ番号が設定されている場合に、グループ番号のマージが必要になる。ここでは、これらの関連付け処理を（１）直接関連づけられている場合の処理、および（２）既に関連づけられており、グループ番号のマージを行う場合の処理に分解し、間接的に関連づけられている場合でも、（１）および（２）の組み合わせで処理を実行する。
【００２０】
グループ番号のマージ処理では、二つの異なるグループ番号を一つのグループ番号にマージすることになるが、この場合、一方のグループ番号をもつ全データレコードのグループ番号を他方のグループ番号に変更することになる。データレコード内のグループ番号列にはデータベース・インデックスを置いているため、指定されたグループ番号を持つデータレコードを高速に検索する。
【００２１】
例えば、データレコード１〜４について、関連レコード１でデータレコード１とデータレコード２が、関連レコード２でデータレコード３とデータレコード４が、関連レコード３でデータレコード２とデータレコード３が関連づいているとする。この場合、データレコード１〜４のすべてに同じグループ番号を設定する必要がある。関連レコード１、および、関連レコード２では、（１）直接関連づけられている場合の処理、を行い、関連レコード３では、グループ番号のマージを行う場合の処理、を行うことで、すべてのデータレコードに同じグループ番号を設定することができる。
【００２２】
このようにして、たとえ直接関連づけられていない場合でも、関連づいているすべてのデータレコードに同じグループ番号を設定することが可能になる。
ここでは、以下の前提に基づいている。
（１）全く関連づいていないデータレコードはグループ番号を保持する必要はない。
（２）関連レコードが削除されることはない。
【００２３】
図１において、グループ設定処理部２１は関連レコードテーブル１２から新規に追加された関連レコードを取り出し、対応するデータレコードをデータレコードテーブル１１から取り出す。関連レコードはデータレコードに関する二項関係を保持しているため、対応するデータレコードは二件取り出される。
【００２４】
取り出された二件のデータレコードにグループ番号が設定されているかどうかで、この後の処理は以下の三通りに別れる。
（１）どちらのデータレコードにもグループ番号が設定されていない場合には、グループ番号生成処理部２２から新しい番号を取り出し、両方のデータレコードにこのグループ番号を設定し、データレコードテーブル１１に保存する。グループ番号生成処理部２２では、次のグループ番号を保持し、一つ返す毎にインクリメントする。
【００２５】
（２）片方のデータレコードにグループ番号が設定されている場合には、設定されていないデータレコードにこの番号を設定し、データレコードテーブル１１に保存する。
【００２６】
（３）どちらのデータレコードにもグループ番号が設定されている場合には、二つのグループ番号を、大きい方、小さい方に分類し、グループ更新処理部２３に移る。グループ更新処理部２３では、まず、データレコードテーブル１１から大きい方の番号をグループ番号として持つ全データレコードを取り出し、小さい方の番号を新しいグループ番号として設定する。
ここで、上述したように、本実施形態においては、グループ設定処理部２１が本発明にかかる関連名読出手段および特定手段を構成し、グループ更新処理部２３、グループ番号生成処理部２２およびグループ設定処理部２１が設定手段を構成する。
【００２７】
次に、図１のブロック図および図２のフローチャートを参照して本実施例の全体の動作について詳細に説明する。
まず最初に、未処理の関連レコードを取り出す。次に、関連レコードで関連づけられている二個のデータレコード１，２を取り出す（ステップＡ２）。ここで、データレコード１，２のグループ番号が設定されていない場合には（ステップＡ３，Ａ４）、新しい番号を取り出し（ステップＡ６）、その番号をデータレコード１，２のグループ番号として設定する（ステップＡ７）。
【００２８】
また、データレコード１はグループ番号が設定されていないが（ステップＡ３）、データレコード２はグループ番号が設定されている場合には（ステップＡ４）、データレコード１にデータレコード２のグループ番号を設定する（ステップＡ８）。
【００２９】
一方、データレコード１はグループ番号が設定されているが（ステップＡ３）、データレコード２がグループ番号が設定されていない場合には（ステップＡ５）、データレコード２にデータレコード１のグループ番号を設定する（ステップＡ９）。最後に、データレコード１，２ともにグループ番号が設定されている場合には（ステップＡ３，Ａ５）、小さい方のグループ番号を決定し（ステップＡ１０）、二個のグループ番号のうち大きい方のグループ番号を持つ全データレコードを取り出し（ステップＡ１１）、小さい方のグループ番号に基づいて、これらのデータレコードのグループ番号を更新する（ステップＡ１２）。
【００３０】
次に、ステップＡ１１にて取り出した全データレコードについて、番号の更新が完了したか否かを判定し（ステップＡ１３）、完了していなければ、ステップＳ１２に戻り番号を更新する処理を繰り返す。このように、ステップＡ７，Ａ８，Ａ９，Ａ１２の設定および更新が完了した場合は、関連レコードデータベースを検索し、上記各グループ番号の設定および更新の処理について未処理の関連レコードが残っているか否かを判定する、すなわち、全関連レコードについての処理が終了したか否かを判定する（ステップＡ１４）。そして、残っている場合はステップＡ１に戻り上述した処理を繰り返す。
【００３１】
次に、具体例を用いて説明する。
図３、４、５に示す例では、図３において処理前のデータレコード、および、関連レコードの内容を示している。最初の関連レコードでは、どちらのデータレコードもグループ番号を持たないため、新しいグループ番号１を生成し、このグループ番号をデータレコード１，２に設定している。２番目、および、３番目の関連レコードも、最初の関連レコード同様、どちらのデータレコードもグループ番号を持たないため、新しいグループ番号２，３を生成し、これらのグループ番号をそれぞれ、データレコード３，４、および、データレコード６，８に設定している。
【００３２】
４番目の関連レコードでは、片方のデータレコード４のみがグループ番号２を持っているため、他方のデータレコード１０にも同じグループ番号２を設定している。５番目の関連レコードでは、１〜３番目の関連レコードと同様、どちらのデータレコードもグループ番号を持たないため、新しいグループ番号４を生成し、このグループ番号をデータレコード５，９に設定している。ここまでの結果は図４に示されている。最後に、６番目の関連レコードでは、どちらのデータレコードもグループ番号を持つため、大きい方の番号２を持つデータレコード３，４，１０に、小さい方のグループ番号１を設定している。最終結果は図５に示されている。
【００３３】
次に、本発明の他の実施例について図面を参照して詳細に説明する。
本実施例は、関連レコードが、Ｎ個のデータレコード間の関連を保持している点で異なる。実施例の構成は図１と変わらないため、図１をそのまま利用して説明する。
ここでは、以下の前提に基づいている。
（１）全く関連づいていないデータレコードはグループ番号を保持する必要はない。
（２）関連レコードが削除されることはない。
（３）各関連レコードでは、常に同じ数の関連を保持する必要はなく、例えば、あるものが三個のデータレコード間の関連を、他のものが五個のデータレコード間の関連を保持することが可能である。
【００３４】
図１において、グループ設定処理部２１は関連レコードテーブル１２から新規に追加された関連レコードを取り出し、対応するデータレコードをデータレコードテーブル１１から取り出す。ここで、関連レコードはデータレコードに関するＮ項関係を保持しているため、対応するデータレコードはＮ件取り出される。取り出されたＮ件のデータレコードにグループ番号が設定されているかどうかで、この後の処理は以下の３通りに別れる。
【００３５】
（１）どのデータレコードにもグループ番号が設定されていない場合には、グループ番号生成処理部２２から新しい番号を取り出し、Ｎ件のデータレコード全てにこのグループ番号を設定し、データレコードテーブル１１に保存する。グループ番号生成処理部２２では、次のグループ番号を保持し、一つ返す毎にインクリメントする。
【００３６】
（２）グループ番号が設定されている全データレコードに同じグループ番号が設定されている場合には、設定されていないデータレコードにこの番号を設定し、データレコードテーブル１１に保存する。
【００３７】
（３）上記以外の場合には、小さい方の番号を決定後、グループ更新処理部２３に移る。グループ更新処理部２３では、まず、データレコードテーブル１１から決定した小さい方の番号以外の番号をグループ番号としてもつ全データレコードを取り出し、決定した小さい方の番号を新しいグループ番号として設定する。
【００３８】
次に、図１および図６のフローチャートを参照して本実施例の全体の動作について詳細に説明する。
まず最初に、未処理の関連レコードを取り出す。次に、関連レコードで関連づけられているＮ個のデータレコード１〜Ｎを取り出す（ステップＡ２）。ここで、全てのデータレコード１〜Ｎのグループ番号が設定されていない場合には（ステップＡ３）、新しい番号を取り出し（ステップＡ５）、その番号をデータレコード１〜Ｎのグループ番号として設定する（ステップＡ６）。グループ番号が設定されているデータレコードに全て同じグループ番号が設定されている場合には（ステップＡ４）、グループ番号が設定されていないデータレコードにこのグループ番号を設定する（ステップＡ７）。
【００３９】
最後に、グループ番号が設定されているデータレコードに異なるグループ番号が設定されている場合には（ステップＡ４）、もっとも小さいグループ番号を決定し（ステップＡ８）、グループ番号が設定されていないデータレコードにこのグループ番号を設定する（ステップＡ９）。
次に、このもっとも小さいグループ番号以外のグループ番号を持つ全データレコードを取り出し（ステップＡ１０）、このもっとも小さいグループ番号に基づいて、これらのデータレコードのグループ番号を更新する（ステップ１１）。
【００４０】
次に、ステップＡ１０にて取り出した全データレコードについて、番号の更新が完了したか否かを判定し（ステップＡ１２）、完了していなければ、ステップＡ１１に戻り番号を更新する処理を繰り返す。このように、ステップＡ６，Ａ７，Ａ１１の設定および更新が完了した場合は、関連レコードデータベースを検索し上記各グループ番号の設定および更新の処理について未処理の関連レコードが残っているか否かを判定する。すなわち、全関連レコードについての処理が終了したか否かを判定する（ステップＡ１３）。そして、残っている場合はステップＡ１に戻り上述した処理を繰り返す。
【００４１】
次に、具体例について説明する。
図７、８、９に示す例では、図７において処理前のデータレコード、および、関連レコードの内容を示している。最初の関連レコードでは、どちらのデータレコードもグループ番号を持たないため、新しいグループ番号１を生成し、このグループ番号をデータレコード１，２に設定している。２番目、および、３番目の関連レコードも、最初の関連レコード同様、どちらのデータレコードもグループ番号を持たないため、新しいグループ番号２，３を生成し、これらのグループ番号をそれぞれ、データレコード３，４および、データレコード６，８に設定している。
【００４２】
４番目の関連レコードでは、一つのデータレコード４のみがグループ番号２を持っているため、その他のデータレコード９，１０にも同じグループ番号２を設定している。ここまでの結果は図８に示されている。最後に、５番目の関連レコードでは、三つのデータレコードともグループ番号を持つため、もっとも小さいグループ番号１以外のグループ番号２，３を持つデータレコード３，４，６，８，９，１０に、もっとも小さいグループ番号１を設定している。最終結果は図９に示されている。
【００４３】
【発明の効果】
第１の効果は、無限に続く可能性がある関連レコードによる関連パスを走査することなしに、また、これらを効率的に行うために、主記憶装置内に関連する全データレコードを取り出すことなしに、処理できることにある。その理由は、データレコード上のグループ番号を直接更新しているためであり、また、（１）直接関連づけられている場合の処理、および（２）既に関連づけられており、グループ番号のマージを行う場合の処理、に分解し、間接的に関連づけられている場合でも、（１）および（２）の組み合わせで処理しているためである。
【００４４】
第２の効果は、大量のデータレコード、および、関連レコードがある場合でも、高速にグループ番号の設定ができることになる。その理由は、グループ番号をデータレコードの一部として格納しているため、データベース・インデックスを置くことで、指定されたグループ番号を持つデータレコードを高速に検索できるためである。
【図面の簡単な説明】
【図１】本発明の一実施形態にかかるグループ番号設定装置のブロック図である。
【図２】第一の実施例の全体の動作を処理内容を示したフローチャートである。
【図３】第一の実施例における処理前のデータレコードテーブルおよび関連レコードテーブルの内容を示した図である。
【図４】第一の実施例における処理中のデータレコードテーブルおよび関連レコードテーブルの内容を示した図である。
【図５】第一の実施例における処理後のデータレコードテーブルおよび関連レコードテーブルの内容を示した図である。
【図６】第二の実施例の全体の動作を処理内容を示したフローチャートである。
【図７】第二の実施例における処理前のデータレコードテーブルおよび関連レコードテーブルの内容を示した図である。
【図８】第二の実施例における処理中のデータレコードテーブルおよび関連レコードテーブルの内容を示した図である。
【図９】第二の実施例における処理後のデータレコードテーブルおよび関連レコードテーブルの内容を示した図である。
【符号の説明】
１  記憶装置（データベース）
２  データ処理装置
１１  データレコードテーブル
１２  関連レコードテーブル
２１  グループ設定処理部
２２  グループ番号生成処理部
２３  グループ更新処理部
【図１】
0003555542.tif 000002
【図２】
0003555542.tif 000003
【図３】
0003555542.tif 000004
【図４】
0003555542.tif 000005
【図５】
0003555542.tif 000006
【図６】
0003555542.tif 000007
【図７】
0003555542.tif 000008
【図８】
0003555542.tif 000009
【図９】
0003555542.tif 000010