ところで、データベース(の編成やデータベースにアクセスするデータベース管理プログラムの処理内容等)は、一般に、当該データベースを利用する利用者の利用目的等に応じて設計・構築されるが、既に稼働しているデータベースに対し、当初は想定していなかった或る条件に合致するデータの有無を確認する必要が突発的に生ずることがある。
具体的には、例えば金融機関は個々の顧客に関する情報(例えば氏名又は名称や住所、電話番号等)を、個々の顧客を識別するための顧客IDと共にデータベース(顧客データベース)に登録・管理しており、通常の業務で顧客データベースにアクセスする際には、顧客ID等をキーとしてアクセス対象のデータを検索する処理が行われる。しかし、セグメント別の顧客データ処理・分析や、マーケティング、顧客宛のアンケートの実施、各種サービスの提案等の業務を行うにあたり、例えば「電話番号が同一で氏名又は名称が相違している」等の新たな条件に合致するデータの有無を確認する必要が生ずることがある。しかし、顧客データベースと共に設計・開発された管理プログラムには、上記の新たな条件に合致するデータを検索する機能は設けられていない。
このように、データベースに対して「第1のデータ項目の情報(の一部又は全体)が同一かつ第2のデータ項目の情報(の一部又は全体)が相違している」という条件に合致するデータの有無を確認する必要が生じたものの、既存のデータベース管理プログラムに、上記の新たな条件に合致するデータを検索する機能が設けられていない場合には、上記の新たな条件に合致するデータを検索するプログラムを開発した後に、開発したプログラムを用いて該当するデータの検索を行うことになる。
しかし、上記の検索を実現するプログラムは、一般に、データベースから順にデータを読み出してワークメモリに貯えながら、読み出したデータをワークメモリに既に貯えられているデータと各々比較することを繰り返すことで、該当するデータを探す等のアルゴリズムが採用されるが、このようなアルゴリズムで動作するプログラムは規模が大きく、デバッグを含めて開発に時間が掛るので、特に結果を迅速に得たい場合に適していない。
なお、前述した特許文献1,2に記載の技術は、データベースに登録されているデータの重複の有無を確認する技術であり、また特許文献3に記載の技術は、表計算処理における処理対象のセルを切り替える技術であり、何れも、「第1のデータ項目の情報(の一部又は全体)が同一かつ第2のデータ項目の情報(の一部又は全体)が相違している」という条件に合致するデータの有無を確認したい場合には適用できない。
本発明は上記事実を考慮して成されたもので、複数のデータ項目について各々情報が設定されて成る複数のデータの中に、第1のデータ項目の情報の一部又は全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが存在しているか否かを判断することを、簡易な処理の組み合わせで実現できるデータ管理装置及びデータ管理プログラムを得ることが目的である。
上記目的を達成するために請求項1記載の発明に係るデータ管理装置は、複数のデータ項目について各々情報が設定されて成る複数のデータを、前記複数のデータ項目のうちの第1のデータ項目の情報全体又は第1のデータ項目の情報のうちその先頭から一定位置迄の一部の情報に基づいてソートすることで、前記複数のデータを、前記第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一のデータで各々構成された複数のグループ毎に配列する第1ソート手段と、前記第1ソート手段によるソートを経た前記複数のデータの各々に対し、前記複数のデータ項目のうちの第2のデータ項目の情報の一部又は全体が、同一のグループに属する特定データと相違している場合はフラグとして第1の値を設定し、前記第2のデータ項目の情報の一部又は全体が前記特定データと同一の場合はフラグとして第2の値を設定するフラグ設定手段と、前記フラグ設定手段によって個々のデータに設定されたフラグの値に基づいて、個々のグループを構成するデータを個々のグループ内でソートする第2ソート手段と、前記第2ソート手段によるソートを経た前記個々のグループのうち、先頭又は末尾のデータにフラグとして前記第1の値が設定されているグループは、前記第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ前記第2のデータ項目の情報の一部又は全体が相違しているデータが有ると判断し、先頭又は末尾のデータにフラグとして前記第2の値が設定されているグループは、前記第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ前記第2のデータ項目の情報の一部又は全体が相違しているデータが無いと判断する判断手段と、を含んで構成されている。
請求項1記載の発明に係るデータ管理装置は、複数のデータ項目について各々情報が設定されて成る複数のデータを処理対象としており、第1ソート手段は、複数のデータ項目のうちの第1のデータ項目の情報全体又は第1のデータ項目の情報のうちその先頭から一定位置迄の一部の情報に基づいて複数のデータをソートすることで、複数のデータを、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一のデータで各々構成された複数のグループ毎に配列する。また、フラグ設定手段は、第1ソート手段によるソートを経た複数のデータの各々に対し、複数のデータ項目のうちの第2のデータ項目の情報の一部又は全体が、同一のグループに属する特定データと相違している場合はフラグとして第1の値を設定し、第2のデータ項目の情報の一部又は全体が特定データと同一の場合はフラグとして第2の値を設定し、第2ソート手段は、フラグ設定手段によって個々のデータに設定されたフラグの値に基づいて、個々のグループを構成するデータを個々のグループ内でソートする。
これにより、個々のグループ内に、複数のデータ項目のうちの第2のデータ項目の情報の一部又は全体が、同一のグループに属する特定データと相違しているデータが存在していれば、当該データは、第2ソート手段によるソートによって個々のグループ内の先頭又は末尾へ移動する。このため、判断手段は、第2ソート手段によるソートを経た個々のグループのうち、先頭又は末尾のデータにフラグとして第1の値が設定されているグループは、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが有ると判断し、先頭又は末尾のデータにフラグとして第2の値が設定されているグループは、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが無いと判断する。
上記の第1ソート手段及び第2ソート手段によるソート、フラグ設定手段によるフラグ設定、判断手段による判断は、何れもごく簡単な処理であり、請求項1記載の発明によれば、複数のデータ項目について各々情報が設定されて成る複数のデータの中に、第1のデータ項目の情報の一部又は全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが存在しているか否かを判断することを、簡易な処理の組み合わせで実現することができる。そして、前述のように第1ソート手段及び第2ソート手段によるソート、フラグ設定手段によるフラグ設定、判断手段による判断が何れもごく簡単な処理であることから、第1ソート手段、フラグ設定手段、第2ソート手段及び判断手段を、各々コンピュータによって実行されるプログラムとして開発する場合にも、非常に短い期間で開発を完了させることができ、第1のデータ項目の情報の一部又は全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータの有無を確認する必要が突発的に生じた等の場合にも、該当するデータの有無を迅速に確認することが可能となる。
なお、請求項1記載の発明において、判断手段が有無を判断するデータは、第1のデータ項目の情報のうちその先頭から一定位置迄の一部の情報が同一の情報であってもよいし、第1のデータ項目の情報全体が同一の情報であってもよいが、判断手段が、第1のデータ項目の情報全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータの有無を判断する場合には、第1ソート手段を、例えば請求項2に記載したように、第1のデータ項目の情報全体に基づいて複数のデータをソートすることで、複数のデータを、第1のデータ項目の情報全体が同一のデータで各々構成された複数のグループ毎に配列するように構成すればよい。これにより、個々のグループが、第1のデータ項目の情報全体が同一のデータによって各々構成されることになり、フラグ設定手段によって設定されたフラグの値に基づいて、第2ソート手段が個々のグループを構成するデータを個々のグループ内でソートすることで、個々のグループの先頭又は末尾のデータに設定されているフラグの値が、第1のデータ項目の情報全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータの有無を表す値となるので、第1のデータ項目の情報全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータの有無を判断手段が判断することが可能となる。
また、請求項1記載の発明において、判断手段が、第1のデータ項目のうちその先頭から一定位置迄の一部の情報が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータの有無を判断する場合には、第1ソート手段を、例えば請求項3に記載したように、第1のデータ項目の情報のうち前記一部の情報に基づいて複数のデータをソートすることで、複数のデータを、第1のデータ項目の情報のうちの前記一部の情報が同一のデータで各々構成された複数のグループ毎に配列するように構成すればよい。これにより、個々のグループが、第1のデータ項目のうち前記一部の情報が同一のデータによって各々構成されることになり、フラグ設定手段によって設定されたフラグの値に基づいて、第2ソート手段が個々のグループを構成するデータを個々のグループ内でソートすることで、個々のグループの先頭又は末尾のデータに設定されているフラグの値が、第1のデータ項目の情報のうち前記一部の情報が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータの有無を表す値となるので、第1のデータ項目のうち前記一部の情報が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータの有無を判断手段が判断することが可能となる。
また、請求項1記載の発明において、第1ソート手段は、例えば請求項4に記載したように、複数のデータを複数のグループ毎に配列した後に、単一のデータから成るグループに属するデータを後段の処理対象(フラグ設定手段や第2ソート手段、判断手段の処理対象)から除外する処理を行うように構成することが好ましい。単一のデータから成るグループが存在していた場合、当該グループに属するデータは、第1のデータ項目の情報の一部又は全体が同一の他のデータが存在していない、すなわち、第1のデータ項目の情報の一部又は全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータに該当しないと判断できるので、このデータを後段の処理対象から除外することで、後段の処理対象のデータの数が絞り込まれることになり、後段の処理の高速化を実現することができる。
更に、請求項1記載の発明において、判断手段が有無を判断するデータは、第2のデータ項目の情報の一部が同一の情報であってもよいし、第2のデータ項目の情報全体が同一の情報であってもよいが、判断手段が、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報全体が相違しているデータの有無を判断する場合には、フラグ設定手段を、例えば請求項5に記載したように、複数のデータの各々に対し、第2のデータ項目の情報全体を特定データと比較し、比較結果に応じてフラグを設定するように構成すればよい。これにより、フラグ設定手段によって設定されたフラグの値に基づいて、第2ソート手段が個々のグループを構成するデータを個々のグループ内でソートすることにより、個々のグループの先頭又は末尾のデータに設定されているフラグの値が、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報全体が相違しているデータの有無を表す値となるので、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報全体が相違しているデータの有無を判断手段が判断することが可能となる。
また、請求項1記載の発明において、判断手段が、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報の一部が相違しているデータの有無を判断する場合には、フラグ設定手段は、例えば請求項6にも記載したように、複数のデータの各々に対し、第2のデータ項目の情報のうち一定位置に位置している一部の情報を特定データと比較し、比較結果に応じてフラグを設定するように構成すればよい。これにより、フラグ設定手段によって設定されたフラグの値に基づいて、第2ソート手段が個々のグループを構成するデータを個々のグループ内でソートすることにより、個々のグループの先頭又は末尾のデータに設定されているフラグの値が、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報の一部が相違しているデータの有無を表す値となるので、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報の一部が相違しているデータの有無を判断手段が判断することが可能となる。
また、請求項1記載の発明において、フラグ設定手段は、例えば請求項7に記載したように、個々のグループの特定データに対しては、フラグとして第2の値を無条件に設定するように構成することができる。
請求項8記載の発明に係るデータ管理プログラムは、コンピュータを、複数のデータ項目について各々情報が設定されて成る複数のデータを、前記複数のデータ項目のうちの第1のデータ項目の情報全体又は第1のデータ項目の情報のうちその先頭から一定位置迄の一部の情報に基づいてソートすることで、前記複数のデータを、前記第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一のデータで各々構成された複数のグループ毎に配列する第1ソート手段、前記第1ソート手段によるソートを経た前記複数のデータの各々に対し、前記複数のデータ項目のうちの第2のデータ項目の情報の一部又は全体が、同一のグループに属する特定データと相違している場合はフラグとして第1の値を設定し、前記第2のデータ項目の情報の一部又は全体が前記特定データと同一の場合はフラグとして第2の値を設定するフラグ設定手段、前記フラグ設定手段によって個々のデータに設定されたフラグの値に基づいて、個々のグループを構成するデータを個々のグループ内でソートする第2ソート手段、及び、前記第2ソート手段によるソートを経た前記個々のグループのうち、先頭又は末尾のデータにフラグとして前記第1の値が設定されているグループは、前記第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ前記第2のデータ項目の情報の一部又は全体が相違しているデータが有ると判断し、先頭又は末尾のデータにフラグとして前記第2の値が設定されているグループは、前記第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ前記第2のデータ項目の情報の一部又は全体が相違しているデータが無いと判断する判断手段として機能させる。
請求項8記載の発明に係るデータ管理プログラムは、コンピュータを、上記の第1ソート手段、フラグ設定手段、第2ソート手段及び判断手段として機能させるためのプログラムであるので、コンピュータが請求項8記載の発明に係るデータ管理プログラムを実行することで、コンピュータが請求項1に記載のデータ管理装置として機能することになり、請求項1記載の発明と同様に、複数のデータ項目について各々情報が設定されて成る複数のデータの中に、第1のデータ項目の情報の一部又は全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが存在しているか否かを判断することを、簡易な処理の組み合わせで実現することができる。
以上説明したように本発明は、複数のデータ項目について各々情報が設定されて成る複数のデータを、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちその先頭から一定位置迄の一部の情報に基づいてソートすることで、複数のデータを、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一のデータで各々構成された複数のグループ毎に配列し、複数のデータの各々に対し、第2のデータ項目の情報の一部又は全体が、同一のグループに属する特定データと相違している場合はフラグとして第1の値を設定し、第2のデータ項目の情報の一部又は全体が特定データと同一の場合はフラグとして第2の値を設定し、個々のデータに設定されたフラグの値に基づいて、個々のグループを構成するデータを個々のグループ内でソートし、前記個々のグループのうち、先頭又は末尾のデータにフラグとして第1の値が設定されているグループは、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが有ると判断し、先頭又は末尾のデータにフラグとして第2の値が設定されているグループは、第1のデータ項目の情報全体又は第1のデータ項目の情報のうちの前記一部の情報が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが無いと判断するので、複数のデータ項目について各々情報が設定されて成る複数のデータの中に、第1のデータ項目の情報の一部又は全体が同一かつ第2のデータ項目の情報の一部又は全体が相違しているデータが存在しているか否かを判断することを、簡易な処理の組み合わせで実現できる、という優れた効果を有する。
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には本実施形態に係る、特定金融機関に設けられたコンピュータ・システム10が示されている。コンピュータ・システム10は、特定金融機関の情報センタ等に設置されたホスト・コンピュータ12と、特定金融機関内に構築されたコンピュータ・ネットワーク18を含んで構成されている。なお、ホスト・コンピュータ12は請求項8に記載のコンピュータに対応しており、後述するストレージ14と共に本発明に係るデータ管理装置に対応している。
ホスト・コンピュータ12は汎用の大型コンピュータから成り、CPU12A、RAM等から成るメモリ12B、磁気ディスク等から成る不揮発性の記憶部12C、ネットワークインタフェース(I/F)部12Dを備えている。ホスト・コンピュータ12は、ネットワークI/F部12Dに接続された通信回線を介してコンピュータ・ネットワーク18(詳しくはネットワーク18内のブランチ・サーバ20)に接続されている。また、ホスト・コンピュータ12には、大容量の磁気ディスク等から成り顧客情報データベース(顧客情報DB)を記憶するための記憶領域が設けられたストレージ14と、セットされたMT(磁気テープ)15に対して情報の読み出しや書き込みを行うMT装置16が各々接続されている。また、ホスト・コンピュータ12の記憶部12Cには、ホスト・コンピュータ12のCPU12Aによって顧客情報DB操作処理を行うための顧客情報DB操作プログラムと、ホスト・コンピュータ12のCPU12Aによってデータ抽出処理を行うためのデータ抽出プログラムが各々記憶されている。なお、上記各プログラムのうち、データ抽出プログラムは請求項8に記載のデータ管理プログラムに対応している。
一方、コンピュータ・ネットワーク18は、特定金融機関の各支店に各々設置されたブランチ・サーバ20(PC、ワークステーション、大型コンピュータの何れでもよい)が通信回線20を介して互いに接続されて構成されており、個々のブランチ・サーバ20には、個々のブランチ・サーバ20と同一の支店に設置された複数台のATM(Automatic Teller Machine:現金自動預け払い機)22及び複数台の営業店端末(金融機関の従業員が操作するための端末)24が各々接続されている。ATM22には、特定金融機関に口座を開設している顧客が所持しているキャッシュカードを装填可能で、装填されたキャッシュカードに磁気的に記録された情報を読み取り可能なカードリーダが取り付けられており、営業店端末24には、特定金融機関に口座を開設している顧客が所持している通帳を装填可能で、装填された通帳に磁気的に記録された情報を読み取り可能で、且つ任意の情報を通帳に記録することも可能な記帳機が取り付けられている。
次に本実施形態の作用を説明する。本実施形態に係る顧客情報DBは、特定金融機関の個々の顧客に関する情報を登録・管理するためのデータベースであり、単一の顧客の顧客情報として、顧客名や電話番号、住所、顧客が特定金融機関に開設している全ての口座の種別、支店番号、口座番号等の情報が顧客IDと対応付けられて単一のレコードに各々登録される。本実施形態に係る特定金融機関では、通常の業務の遂行に伴い、顧客情報DBに対して顧客情報の登録、読み出し、更新等のアクセスを行う必要が生ずるが、通常業務での顧客情報DBに対するアクセスは、ホスト・コンピュータ12によって顧客情報DB操作プログラムが実行されることで実現される。
具体的には、例えば新規顧客によって特定金融機関の口座開設が指示されたり、特定金融機関に既に口座を開設している顧客によって別口座の開設が指示されたり、顧客から住所や電話番号等の変更が通知された場合、顧客情報DBへのアクセスを要求する電文がATM22又は営業店端末24から送信される。この電文がコンピュータ・ネットワーク18やブランチ・サーバ20を経由してホスト・コンピュータ12で受信されると、顧客情報DB操作プログラムがCPU12Aによって実行され、顧客情報DBに対して要求されたアクセスを行う(顧客情報DB操作処理)。なお、要求されたアクセスが顧客情報DBに対する顧客情報の新規登録以外(読み出しや更新等)であれば、ATM22や営業店端末24から受信する電文にアクセス対象の顧客IDが設定されているので、顧客情報DB操作処理では、電文に設定されている顧客IDをキーとして顧客情報DBを検索することで、アクセス対象の顧客情報を顧客情報DBから抽出した後に、要求されたアクセスを行う。そして、要求されたアクセスが完了すると、要求元のATM22又は営業店端末24へ応答(電文)を送信する。
ところで、特定金融機関では、セグメント別の顧客データ処理・分析や、マーケティング、顧客宛のアンケートの実施、各種サービスの提案等の業務を行うにあたって急遽、顧客情報DBから「電話番号が同一で顧客名が相違している顧客情報」を抽出する必要が生じた。しかし、特定金融機関における通常業務では上記の条件に合致する顧客情報を顧客情報DBから抽出する必要はなく、顧客情報DB及び顧客情報DB操作プログラムの設計開発時には、顧客情報DBに対して上記の条件に合致する顧客情報を検索・抽出することを想定していなかったため、顧客情報DB操作プログラムには、上記の条件に合致する顧客情報を検索する機能は設けられていない。このため、特定金融機関では、顧客情報DBに対して上記の条件に合致する顧客情報を検索・抽出するために顧客情報抽出プログラムを開発した。以下、ホスト・コンピュータ12のCPU12Aによって顧客情報抽出プログラムが実行されることで実現される顧客情報抽出処理について、図2を参照して説明する。
顧客情報抽出処理では、まずステップ50において、顧客情報DBの全てのレコードをストレージ14からメモリ12Bに順次読み出すと共に、読み出した各レコードを電話番号(第1キー:本発明に係る第1のデータ項目に相当)及び顧客名(第2キー:本発明に係る第2のデータ項目に相当)に基づいてソートすることで、各レコードを電話番号(の全体)が同一のレコードから成るグループにグループ化し、処理結果を第1中間データとして記憶部12Cに書き込む。図3(A)にも示すように、顧客情報DB内には複数の顧客情報(複数のレコード)が電話番号TELNO及び顧客名NAMEに関してランダムに配列されており、図3(A)に示す9個の顧客情報(9個のレコード)に対し、ステップ50で電話番号TELNOの昇順かつ顧客名NAMEの昇順にソートを行った場合、9個のレコードは、図3(B)に示すように、各々電話番号TELNO="1111","2222","3333","4444"のレコードから成る4個のグループにグループ化されることになる(図3では各グループの境界を太線で示している)。
なお、上記のステップ50は本発明に係る第1ソート手段(詳しくは請求項2に記載の第1ソート手段)に対応している。また、電話番号TELNOは本発明に係る第1の項目の情報に、顧客名NAMEは本発明に係る第2の項目の情報に各々対応している。また、ステップ50では電話番号(第1のデータ項目)及び顧客名(第2のデータ項目)に基づいてソートしているが、電話番号(第1のデータ項目)のみに基づいてソートするようにしてもよい。また、図3では図面を簡単にするために、各レコードの情報として電話番号TELNO及び顧客名NAME以外の図示を省略しているが、実際には各レコードに住所等の他の情報も付加されていることは言うまでもない。
次のステップ52では、ステップ50で記憶部12Cに書き込んだ第1中間データを記憶部12Cからメモリ12Bに順次読み出し、ステップ50の処理によって読み出した第1中間データ内に形成されている複数のグループのうち単一のレコードから成るグループを検索し、この検索によって抽出されたグループに属するレコードを除去する。そして、処理結果を第2中間データとして記憶部12Cに書き込む。
例として、記憶手段12Cから読み出した第1中間データが、図3(B)に示すように、各々電話番号TELNO="1111","2222","3333","4444"のレコードから成る4個のグループが形成されたデータであった場合、これらのグループのうち単一のレコードから成るグループは電話番号TELNO="4444"のレコードから成るグループであるので、図3(C)にも示すように、当該グループに属するレコード(電話番号TELNO="4444"、顧客名NAME="かかかか"のレコード)が除去される(図3(C)では該当するレコードの出力対象情報O/P="×"となっているが、これは該当するレコードを第2中間データとして出力しないことを意味し、図3(D)にも示すように該当するレコードは中間データ上から除去されている)。
ステップ52で除去されたレコードは次のステップ54以降の処理の対象から除外されるので、ステップ52は請求項4に記載の第1ソート手段に対応している。また、レコードそのものを中間データから除去することに代えて、単一のレコードから成るグループに属するレコードに所定の情報を付加して中間データとして出力し、次のステップ54以降の処理において、中間データのうち所定の情報が付加されているレコードを処理対象から除外するようにしてもよい。
次のステップ54では、ステップ52で記憶部12Cに書き込んだ第2中間データを記憶部12Cからメモリ12Bに順次読み出し、読み出した第2中間データの各レコードに各々フラグを設定する。このフラグの設定は、個々のグループ毎に以下のようにして行われる。すなわち、第2中間データ内の個々のグループの先頭レコードに対してはフラグとして無条件に"1"を設定し、第2中間データ内の個々のグループの2番目以降の各レコードに対しては、同一グループの先頭レコードと顧客名NAME(の全体)を比較し、同一グループの先頭レコードと顧客名NAME(の全体)が同一であればフラグとして"1"を、同一グループの先頭レコードと顧客名NAME(の全体)が相違していればフラグとして"0"を各々設定する。そして、処理結果を第3中間データとして記憶部12Cに書き込む。
例として、記憶手段12Cから読み出した第2中間データが、図3(D)に示すように、各々電話番号TELNO="1111","2222","3333"のレコードから成る3個のグループが形成されたデータであった場合、電話番号TELNO="1111"のグループについては、当該グループの先頭レコード(顧客名NAME="ああああ")にフラグFLGとして無条件に"1"が設定され、2番目のレコード(顧客名NAME="いいいい")は顧客名NAME(の全体)が先頭レコードと相違しているので、フラグFLGとして"0"が設定される。また、電話番号TELNO="2222"のグループについては、当該グループの先頭レコード(顧客名NAME="うううう")にフラグFLGとして無条件に"1"が設定され、2番目のレコード(顧客名NAME="うううう")は顧客名NAME(の全体)が先頭レコードと同一であるのでフラグFLGとして"1"が設定される。更に、電話番号TELNO="3333"のグループについては、当該グループの先頭レコード(顧客名NAME="ええええ")にフラグFLGとして無条件に"1"が設定され、2番目のレコード(顧客名NAME="ええええ")は顧客名NAME(の全体)が先頭レコードと同一であるのでフラグFLGとして"1"が設定され、3,4番目のレコード(何れも顧客名NAME="おおおお")は顧客名NAME(の全体)が先頭レコードと相違しているのでフラグFLGとして"0"が各々設定される。
上記のステップ54は本発明に係るフラグ設定手段(詳しくは請求項5及び請求項7に記載のフラグ設定手段)に対応している。なお、上記では個々のグループの先頭レコード、及び、個々のグループの2番目以降のレコードのうち同一グループの先頭レコードと顧客名NAME(の全体)が同一のレコードに対してはフラグとして"1"を設定し、個々のグループの2番目以降のレコードのうち同一グループの先頭レコードと顧客名NAME(の全体)が相違しているレコードに対してはフラグとして"0"を設定しているが、設定するフラグの値は上記で別の値を設定したレコードを区別可能な値であればよく、例えば値を逆に設定してもよいし、"0","1"以外の別の値を用いてもよい。
次のステップ56では、ステップ54で記憶部12Cに書き込んだ第3中間データを記憶部12Cからメモリ12Bに順次読み出し、読み出した第3中間データの個々のグループ内を、ステップ54で設定したフラグの値の昇順にソートする。そして、処理結果を第4中間データとして記憶部12Cに書き込む。例えば、記憶手段12Cから読み出した第3中間データが図3(D)に示すような内容であった場合、個々のグループ内をフラグの値の昇順にソートすることで、図3(E)に示すように、電話番号TELNO="1111"のグループについては、フラグFLGとして"0"が設定された顧客名NAME="いいいい"のレコード(図3(D)において、当該グループの2番目に位置しているレコード)が先頭レコードとなり、電話番号TELNO="3333"のグループについては、フラグFLGとして"0"が設定された顧客名NAME="おおおお"の2個のレコード(図3(D)において、当該グループの3番目及び4番目に位置しているレコード)が各々先頭レコード、2番目のレコードとなる。
上記のステップ56は本発明に係る第2ソート手段に対応している。なお、上記では個々のグループ内をフラグの値の昇順にソートしているが、個々のグループ内をフラグの値の降順にソートするようにしてもよい(この場合、次のステップ58において、個々のグループの末尾のレコードに設定されているフラグの値に基づいて、個々のグループを出力対象とするか否かを判断するようにすればよい)。
また、ステップ58では、ステップ56で記憶部12Cに書き込んだ第4中間データを記憶部12Cからメモリ12Bに順次読み出し、読み出した第4中間データにおいて、個々のグループの先頭レコードに設定されているフラグの値に基づいて、個々のグループを出力対象とするか否かを判断する。すなわち、或るグループの先頭レコードに設定されているフラグの値が"1"の場合、このグループ内には、フラグの値が"0"のレコード、すなわち同一グループ内の他のレコードと顧客名NAMEが相違しているレコードが存在していないと判断できるので、このグループに属する各レコードを非出力対象に設定する。一方、或るグループの先頭レコードに設定されているフラグの値が"0"の場合、このグループ内には、同一グループ内の他のレコードと顧客名NAMEが相違しているレコードが混在していると判断できるので、このグループに属する各レコードを出力対象に設定する。そして、第4中間データのうち、出力対象に設定したグループのレコードのみを出力データとして、MT装置16を介してMT15に書き込み、顧客情報抽出処理を終了する。
例えば、記憶手段12Cから読み出した第4中間データが図3(E)に示すような内容であった場合、電話番号TELNO="1111"のグループについては先頭レコードにフラグFLGとして"0"が設定されていることで、図3(F)に示すように、当該グループに属する全レコード(2個のレコード)が出力対象に設定され(出力対象情報O/P="○"に設定され)、電話番号TELNO="2222"のグループについては先頭レコードにフラグFLGとして"1"が設定されていることで、当該グループに属する全レコード(2個のレコード)が非出力対象に設定され(出力対象情報O/P="×"に設定され)、電話番号TELNO="3333"のグループについては先頭レコードにフラグFLGとして"0"が設定されていることで、当該グループに属する全レコード(4個のレコード)が出力対象に設定される(出力対象情報O/P="○"に設定される)。そして、出力対象に設定された(出力対象情報O/P="○"に設定された)レコードのみが出力データとしてMT15に書き込まれる。なお、出力データはMT15以外の他の媒体へ出力するようにしてもよいことは言うまでもない。
これにより、顧客情報DBに登録されている各レコード(各顧客情報)のうち、顧客情報抽出処理における抽出対象である、「電話番号TELNOが同一で顧客名NAMEが相違している顧客情報(レコード)」が混在しているグループのレコードのみが、出力データとしてMT15に書き込まれることになる。上述した顧客情報抽出処理の各ステップは何れもごく簡単な処理であり、特にステップ50,56におけるソートはデータ処理で多用される定型処理であるので、既存のプログラムを流用できる可能性が非常に高く、顧客情報抽出処理を実現する顧客情報抽出プログラムは、非常に短い期間で開発を完了させることができる。従って、上記で説明したように「電話番号TELNOが同一で顧客名NAMEが相違している顧客情報(レコード)」を抽出する場合のみならず、本発明に係るアルゴリズム(顧客情報抽出処理のアルゴリズム)を利用可能な条件に合致するデータを抽出する場合にも、該当するデータの有無を迅速に確認したり、該当するデータを抽出することができる。
なお、上記では本発明に係る第1のデータ項目として電話番号TELNOを、第2のデータ項目として顧客名NAMEを適用した態様を説明したが、これに限定されるものではなく、例えば第1のデータ項目として住所を、第2のデータ項目として支店番号を適用する等のように、第1及び第2のデータ項目としては任意の情報を適用可能である。また、上記では処理対象のデータとして顧客情報DBに登録されている顧客情報を例に説明したが、これに限定されるものでもなく、任意のデータを処理対象とすることが可能である。また、上記では特定の条件に合致するデータの抽出を行う契機として、セグメント別の顧客データ処理・分析や、マーケティング、顧客宛のアンケートの実施、各種サービスの提案等の業務を例に説明したが、本発明の用途がこれに限定されるものでもないことは言うまでもない。
また、上記では第1のデータ項目としての電話番号TELNO全体が同一かつ第2のデータ項目としての顧客名NAME全体が相違しているデータ(顧客情報)の有無の確認・抽出を例に説明したが、本発明はこれに限定されるものではなく、第1のデータ項目の情報の一部が同一のデータを対象としてもよい。これは、第1の項目の情報に基づくソート(図2におけるステップ50)において、第1の項目の情報のうちの一部の情報のみを比較してソート(及びグループ化)を行うことで実現できる。具体的には、例えば第1のデータ項目として住所を適用した態様において、住所のうち町名までの情報を比較して(番地等の情報を比較対象から除外して)ソート(及びグループ化)を行う。この場合、住所のうち少なくとも町名迄が同一のデータ毎にグループを形成することができる。上記態様は請求項3記載の発明に対応している。また、第2のデータ項目の情報の一部が相違するデータを対象としてもよい。これは、第2のデータ項目の情報に基づくフラグ設定(図2におけるステップ54)において、第2の項目の情報のうちの一部の情報のみを比較し、比較結果に応じてフラグを設定することで実現できる。具体的には、例えば第2のデータ項目として顧客名を適用した態様において、顧客名のうち苗字のみを比較して(名前を比較対象から除外して)フラグを設定する。この場合、個々のグループ内でフラグの値に基づいてデータをソートした後に、個々のグループ内の先頭又は末尾のデータに設定されているフラグの値を参照することで、各グループ内に顧客名のうちの少なくとも苗字が相違するデータが混在しているか否かを判断することができる。上記態様は請求項6記載の発明に対応している。
また、上記では顧客情報DBから読み出した各レコードに対し、ステップ50で電話番号TELNO及び顧客名NAMEに基づいてソートすることでグループ化した後に、ステップ52において、単一のレコードから成るグループを検索し、該当するグループ(に属するレコード)を除去する態様を説明したが、これに限定されるものではなく、例えば該当するグループ(レコード)の数が比較的少数であることが予想される等の場合には、単一のレコードから成るグループの検索及び該当するグループ(に属するレコード)の除去を省略するようにしてもよい。
更に、上記では顧客情報DBから全レコードを読み出し、第1のデータ項目の情報に基づくソート(グループ化)やフラグFLGの設定、フラグFLGの値に基づく個々のグループ内のソート等の処理を経て、第1のデータ項目の情報が同一かつ第2のデータ項目の情報が相違しているレコードが混在しているグループに属する全レコードを出力データとして出力する態様を説明したが、この処理方式では、図3での図示は省略しているものの、各レコードに第1のデータ項目の情報及び第2のデータ項目の情報以外の他の情報(例えば住所等)も付加された状態で各処理を行っているので、各中間データのサイズが大きく、各処理を行う毎に中間データを記憶部12Cに書き込む必要が生ずる(なお、中間データを記憶部12Cに書き込む必要が有るか否かは、個々のレコードのサイズや数(処理対象のデータの規模)、メモリ12B等のリソースのサイズにも左右されるので、上記処理方式でも中間データを記憶部12Cに書き込まずに済む可能性もある)。
このため、リソースとして使用可能な記憶部12Cのサイズに制限がある等の場合には、顧客情報DBの各レコードから第1のデータ項目の情報及び第2のデータ項目の情報のみを抽出することで各レコードのインデックスを作成し、このインデックスに対して第1のデータ項目の情報に基づくソート(グループ化)、フラグFLGの設定、フラグFLGの値に基づく個々のグループ内のソート、第1のデータ項目の情報が同一かつ第2のデータ項目の情報が相違しているレコードの判断、の各処理を順に行った後に、前記判断の結果に基づいて第1のデータ項目の情報が同一かつ第2のデータ項目の情報が相違しているレコードの実データを顧客情報DBから順に読み出し、出力データとして出力するようにしてもよい。
また、上記では第1のデータ項目及び第2のデータ項目として各々単一のデータ項目を適用した態様を説明したが、本発明はこれに限定されるものでもなく、第1のデータ項目及び第2のデータ項目の少なくとも一方が複数のデータ項目から構成されていてもよい。第1のデータ項目が複数のデータ項目から構成されている場合には、第1の項目の情報に基づくソート(図2におけるステップ50)において、第1のデータ項目を構成する複数のデータ項目に基づいてソートを行い、処理対象の複数のデータを、第1のデータ項目を構成する複数のデータ項目が各々同一のデータで構成された複数のグループに分けるようにすればよい。また、第2のデータ項目が複数のデータ項目から構成されている場合は、第2のデータ項目の情報に基づくフラグの設定(図2におけるステップ54)において、第2のデータ項目を構成する複数のデータ項目の情報を各々比較し、第2のデータ項目を構成する複数のデータ項目の情報が各々相違しているか否か(或いは、第2のデータ項目を構成する複数のデータ項目の情報のうちの少なくとも1つが相違しているか否か)に応じて値の異なるフラグを設定するようにすればよい。
また、上記では本発明に係るデータ管理プログラムに対応する顧客情報抽出プログラムが記憶部12Cに予め記憶されている態様を説明したが、本発明に係るデータ管理プログラムは、CD−ROMやDVD−ROM、或いはMT等の記録媒体に記録されている形態で提供することも可能である。