(57)【特許請求の範囲】
【請求項１】
ＣＰＵ及びメモリと、
実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されるデータベースに接続するインタフェースと、
前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出すインタフェースと、
前記対応表へのアクセス可否を判定する状態判定部と、
前記対応表を記憶する対応表記憶部と、
前記データベースに対して実行されるクエリーを受信するクエリー受信部と、
受信した前記クエリーの実行に際し、前記実名データと前記偽名データとの対応づけが必要であるかどうかを判定するクエリー判定部と、
前記対応づけが必要であると判定され、かつ、前記対応表にアクセス可能な状態である場合に、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換するクエリー変換部と、
変換後の新たな前記クエリーを前記データベースに送信するインタフェースと、
前記対応づけが必要であると判定され、かつ、前記対応表にアクセス不可能な状態である場合に、前記受信したクエリーの送信元に、前記送信元ごとに用意された応答を送信するインタフェースと、
を有し、
前記クエリー変換部は、前記対応表を、前記第１のデータベース又は前記第２のデータベースにテーブル化して格納し、
前記実名テーブルが格納される第１のデータベースと前記偽名テーブルが格納される前記第２のデータベースとを１つのデータベースとして提供する、分散データベース管理部を有し、
前記クエリー変換部によって生成される前記新たなクエリーには、前記実名データによる前記実名テーブルへの第１のアクセスと、前記偽名データによる前記偽名テーブルへの第２のアクセスと、テーブル化された前記対応表への、前記実名データ又は前記偽名データによるアクセスと、前記第１のアクセスにより得られる第１のレコード集合と前記第２のアクセスにより得られる第２のレコード集合との直積を求めることにより前記第１のレコードと前記第２のレコードを１つのレコード集合とする処理と、を実行するように記述されたクエリーが含まれていること、
を特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記状態判定部は、前記記録媒体と通信可能になった場合に生じる割込信号の発生に応じて前記記録媒体に対する認証処理を行い、前記認証処理に成功した場合には、前記記録媒体から前記対応表の複製を記憶するための処理を行い、さらに、前記クエリーの変換中は前記対応表の前記複製に対する排他制御を行うこと
を特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記状態判定部は、前記記録媒体と通信不能になった場合に生じる割込信号の発生に応じて記憶している前記対応表の前記複製に対するアクセスが存在するかどうかを判定し、アクセスが行われていない場合は前記複製の内容を消去すること
を特徴とする情報処理装置。
【請求項４】
請求項１に記載の情報処理装置であって、
前記記録媒体に記録されているＩＤ対応表の偽名ＩＤを、新たに生成した偽名ＩＤによって置換し、前記偽名テーブルに格納されている置換前の前記偽名ＩＤを、前記置換後の偽名ＩＤに変更すること
を特徴とする情報処理装置。
【請求項５】
ＣＰＵ及びメモリと、
実名データを含む実名テーブルと、偽名データを含む偽名テーブルとが格納されるデータベースに接続するインタフェースと、
秘密鍵が記録されている記録媒体から前記秘密鍵を読み出すインタフェースと、
前記秘密鍵で暗号化された、前記実名データと前記偽名データとの対応表を記憶する対応表記憶部と、
前記秘密鍵へのアクセス可否を判定するとともに、前記記録媒体から読み出した前記秘密鍵によって前記対応表を復号する状態判定部と、
前記データベースに対して実行されるクエリーを受信するクエリー受信部と、
受信した前記クエリーの実行に際し、前記実名データと前記偽名データとを対応づける必要があるかどうかを判定するクエリー判定部と、
前記対応づけが必要であると判定され、かつ、前記対応表にアクセス可能な状態である場合に、受信した前記クエリーを、復号された前記対応表に基づいて新たなクエリーに変換するクエリー変換部と、
変換後の新たな前記クエリーを前記データベースに送信するインタフェースと、
前記対応づけが必要であると判定され、かつ、前記対応表にアクセス不可能な状態である場合に、前記受信したクエリーの送信元に、前記送信元ごとに用意された応答を送信するインタフェースと、
を有し、  
前記クエリー変換部は、前記対応表を、前記第１のデータベース又は前記第２のデータベースにテーブル化して格納し、
前記実名テーブルが格納される第１のデータベースと前記偽名テーブルが格納される前記第２のデータベースとを１つのデータベースとして提供する、分散データベース管理部を有し、
前記クエリー変換部によって生成される前記新たなクエリーには、前記実名データによる前記実名テーブルへの第１のアクセスと、前記偽名データによる前記偽名テーブルへの第２のアクセスと、テーブル化された前記対応表への、前記実名データ又は前記偽名データによるアクセスと、前記第１のアクセスにより得られる第１のレコード集合と前記第２のアクセスにより得られる第２のレコード集合との直積を求めることにより前記第１のレコードと前記第２のレコードを１つのレコード集合とする処理と、を実行するように記述されたクエリーが含まれていること、
を特徴とする情報処理装置。
【請求項６】
請求項５に記載の情報処理装置であって、
前記状態判定部は、前記記録媒体と通信不能になった場合に生じる割込信号の発生に応じて、復号された状態で記憶している前記対応表及び記憶している前記秘密鍵を消去する処理を実行すること
を特徴とする情報処理装置。
【請求項７】
ＣＰＵ及びメモリと、実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されるデータベースに接続するインタフェースとを有する情報処理装置の制御方法であって、
前記情報処理装置が、
前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出すステップと、
前記対応表へのアクセス可否を判定するステップと、
前記対応表を記憶するステップと、
前記データベースに対して実行されるクエリーを受信するステップと、
受信した前記クエリーの実行に際し、前記実名データと前記偽名データとを対応づける必要があるかどうかを判定するステップと、
前記対応づけが必要であると判定し、かつ、前記対応表にアクセス可能な状態である場合に、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換するステップと、
変換後の新たな前記クエリーを前記データベースに送信するステップと、
前記対応づけが必要であると判定され、かつ、前記対応表にアクセス不可能な状態である場合に、前記受信したクエリーの送信元に、前記送信元ごとに用意された応答を送信するステップと、
前記対応表を、前記第１のデータベース又は前記第２のデータベースにテーブル化して格納するステップと、
前記実名テーブルが格納される第１のデータベースと前記偽名テーブルが格納される前記第２のデータベースとを１つのデータベースとして提供するステップと
を実行し、
前記クエリー変換部によって生成される前記新たなクエリーには、前記実名データによる前記実名テーブルへの第１のアクセスと、前記偽名データによる前記偽名テーブルへの第２のアクセスと、テーブル化された前記対応表への、前記実名データ又は前記偽名データによるアクセスと、前記第１のアクセスにより得られる第１のレコード集合と前記第２のアクセスにより得られる第２のレコード集合との直積を求めることにより前記第１のレコードと前記第２のレコードを１つのレコード集合とする処理と、を実行するように記述されたクエリーが含まれていること、
を特徴とする情報処理装置の制御方法。
【請求項８】
ＣＰＵとメモリとを有してなる情報処理装置に、
実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されたデータベースに接続する機能と、
前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出す機能と、
前記対応表へのアクセス可否を判定する機能と、
前記対応表を記憶する機能と、
前記データベースに対して実行されるクエリーを受信する機能と、
受信した前記クエリーの実行に際し、前記実名データと前記偽名データとを対応づける必要があるかどうかを判定する機能と、
前記対応づけが必要であると判定し、かつ、前記対応表にアクセス可能な状態である場合に、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換する機能と、
変換後の新たな前記クエリーを前記データベースに送信する機能と、
前記対応づけが必要であると判定され、かつ、前記対応表にアクセス不可能な状態である場合に、前記受信したクエリーの送信元に、前記送信元ごとに用意された応答を送信する機能と、
前記対応表を、前記第１のデータベース又は前記第２のデータベースにテーブル化して格納する機能と、
前記実名テーブルが格納される第１のデータベースと前記偽名テーブルが格納される前記第２のデータベースとを１つのデータベースとして提供する機能と
を実現させるためのプログラムであって、
前記クエリー変換部によって生成される前記新たなクエリーには、前記実名データによる前記実名テーブルへの第１のアクセスと、前記偽名データによる前記偽名テーブルへの第２のアクセスと、テーブル化された前記対応表への、前記実名データ又は前記偽名データによるアクセスと、前記第１のアクセスにより得られる第１のレコード集合と前記第２のアクセスにより得られる第２のレコード集合との直積を求めることにより前記第１のレコードと前記第２のレコードを１つのレコード集合とする処理と、を実行するように記述されたクエリーが含まれていること、
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子化された個人情報を取り扱う技術に関し、データを実名データと偽名データとに分けてデータベースに管理する技術に関する。
【背景技術】
【０００２】
昨今、プライバシー保護への社会的要請が高まっており、個人情報を取り扱う企業の情報システムにおいては、プライバシーへの配慮が不可欠となっている。個人情報とは、個人に関する情報であり、氏名、生年月日その他の記述等により特定の個人を識別する事ができる情報と、これらの情報と照合できるその他の情報がある。保護すべき個人情報やその在り方については、まだ社会通念として充分に定まってはいないものの、個人情報取扱事業者にとって、少なくとも２００５年４月に全面施行された、いわゆる個人情報保護法や関係法令を遵守することが必須となっている。
【０００３】
個人情報保護法では、個人情報を収集、蓄積、利用し、管理責任を持つ主体である個人情報取扱事業者に対し、個人情報によって識別される特定の個人である情報主体に開示した利用目的に沿って個人情報を取り扱うことを定めている。すなわち、個人情報保護法によれば、個人情報を機密情報と見做して予期せぬ漏洩に備えるだけでなく、さらに個人情報を適正に利用するための措置も求められる。
【０００４】
情報処理システムとして個人情報保護法の上記要請に対応するための手法として、例えば、非特許文献１に記載の技術では、個人情報と実名との関連性を切り離す事により、購買履歴や口座取引のようなトランザクションが情報主体と関連付けて利用される機会を制約するようにしている。具体的には、データベース中の個人情報のテーブルを、実名データを格納した実名テーブルと、偽名データを格納した偽名テーブルとに分割して管理し、各テーブルに格納されている同一の情報主体に関するレコードに対して異なるＩＤ（識別子）を付与する。なお、実名データとは、特定の個人を識別可能な電子データであり、また偽名データとは、実名データと照合できるその他の電子データである。
【０００５】
非特許文献１に記載の技術では、実名データのＩＤ（以下、実名ＩＤという。）と偽名データのＩＤ（以下、偽名ＩＤという。）との対応表を、ＩＣカードなどのデータベースの外部のセキュアデバイスに隔離する。すなわち、セキュアデバイス中のＩＤ対応表によって、同一の情報主体の実名データと偽名データとの結合処理が、データベースの外から制御される。またＩＤ対応表がセキュアデバイスの外に露顕（漏洩）してしまった場合には、ＩＤ対応表やデータベース中の偽名ＩＤを書き換えることにより、ＩＤ対応表が不正に利用されるのを防ぐことができる。
【０００６】
ところで、ＲＤＢ(Relational Database)を利用するアプリケーションの構築に際しては、ISO/IEC 9075:1992等に定義されたＳＱＬ(Structured Query Language)を用いるのが一般的である。ＳＱＬは、宣言型プログラミング言語であるのでプログラミングに際してはＳＱＬ文中に欲しいデータ集合を定義すれば良い。また、ＲＤＢを利用するアプリケーションの構築に際しては、ホスト名、データベース、テーブル、項目等のリソース名を含むデータの検索条件を指定してＲＤＢからデータ集合を得るというように、データ集合を形成するための手続き的な処理そのものをＲＤＢに任せてしまう事が多い。このため、非特許文献１に記載の技術を現実のシステムに適用する場合には、分割管理されているテーブルにアプリケーションが透過的にアクセスすることができるように、新たに分割されるテーブルの構造に合わせて処理手続きを修正する必要があり、テストや実装等による開発コストが発生してしまう。
【０００７】
一方、特許文献1には、複数のＲＤＢを、仮想的な一つのＲＤＢとして見せかけるためのＲＤＢの定義情報を記憶した辞書を備え、さらにアプリケーションが仮想ＲＤＢに対して発行するＳＱＬプログラムを、実際のＲＤＢに摘要するＳＱＬプログラムに変換する技術が開示されており、非特許文献１に記載の技術における、実名テーブル、偽名テーブル、ＩＤ対応表を、分散ＲＤＢのテーブルと見做せる場合には、特許文献１に記載の技術によって分散ＲＤＢを仮想的な一つのＲＤＢとしてアプリケーションに見せかけるようにすることができる。
【非特許文献１】佐藤嘉則、川崎明彦、森田豊久他：「リンカビリティ制御に基づいた個人情報管理システム」、情報処理学会 第30回CSEC研究発表会（電子情報通信学会ISEC・SITE合同開催）、岩手大学、2005.7.22
【特許文献１】特許第２８３７５２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載の技術は、通信路に障害がない限りは、各ＲＤＢが常にアプリケーションからアクセス可能な状態に置かれていることが前提になっており、非特許文献１に記載のＩＤ対応表のように、システムがＩＤ対応表にアクセスできる場合とできない場合とを区別して扱う場合については何ら考慮されていない。従って、特許文献１に記載の技術では、ＩＤ対応表が存在しない間は必ずしもアプリケーションに適切なデータを与える事ができない。また、ＩＤ対応表は、データベースとアプリケーションに対して秘匿されている必要があるが、特許文献１に記載の技術は、このような秘匿性のあるデータの存在を考慮して分散データを透過的に扱う技術については言及されていない。
【０００９】
この発明は、このような課題に鑑みてなされたもので、個人データを実名テーブルと偽名テーブルとに分離してデータベースに管理し、実名データと偽名データとの対応表が記憶された記憶媒体がアクセス可能な場合とアクセス不可能な場合とがあるシステムにおいて、アプリケーションに対してデータを透過的に扱うことが可能な情報処理装置、情報処理装置の制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するための本発明のうちの主たる発明は、情報処理装置であって、ＣＰＵ及びメモリと、実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されるデータベースに接続するインタフェースと、前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出すインタフェースと、前記対応表へのアクセス可否を判定する状態判定部と、前記対応表を記憶する対応表記憶部と、前記データベースに対して実行されるクエリーを受信するクエリー受信部と、受信した前記クエリーの実行に際し、前記実名データと前記偽名データとの対応づけが必要であるかどうかを判定するクエリー判定部と、前記対応づけが必要であると判定され、かつ、前記対応表にアクセス可能な状態である場合に、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換するクエリー変換部と、変換後の新たな前記クエリーを前記データベースに送信するインタフェースと、前記対応づけが必要であると判定され、かつ、前記対応表にアクセス不可能な状態である場合に、前記受信したクエリーの送信元に、前記送信元ごとに用意された応答を送信するインタフェースと、を有し、前記クエリー変換部は、前記対応表を、前記第１のデータベース又は前記第２のデータベースにテーブル化して格納し、前記実名テーブルが格納される第１のデータベースと前記偽名テーブルが格納される前記第２のデータベースとを１つのデータベースとして提供する、分散データベース管理部を有し、前記クエリー変換部によって生成される前記新たなクエリーには、前記実名データによる前記実名テーブルへの第１のアクセスと、前記偽名データによる前記偽名テーブルへの第２のアクセスと、テーブル化された前記対応表への、前記実名データ又は前記偽名データによるアクセスと、前記第１のアクセスにより得られる第１のレコード集合と前記第２のアクセスにより得られる第２のレコード集合との直積を求めることにより前記第１のレコードと前記第２のレコードを１つのレコード集合とする処理と、を実行するように記述されたクエリーが含まれていることとする。
【００１１】
本発明によれば、アプリケーションから受信したクエリーの実行に際し、実名データと偽名データとを対応づける必要があるかどうかを判断し、対応づける必要がある場合には、対応表に基づいて受信したクエリーを新たなクエリーに変換し、変換された新たなクエリーがデータベースに対して実行される。このため、対応表の存在有無に拘わらず、アプリケーションから受信したクエリーを実行することが可能となり、アプリケーションに対してデータベースを透過的に見せることができる。また、これによりデータベースを利用するアプリケーション側で実名データと偽名データの結合処理を実装する必要も無い。
【発明の効果】
【００１２】
本発明によれば、個人データを実名テーブルと偽名テーブルとに分離してデータベースに管理し、実名データと偽名データとの対応表が記憶された記憶媒体がアクセス可能な場合とアクセス不可能な場合とがあるシステムにおいて、データベースを利用するアプリケーションに対してデータベースを透過的に見せることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態について図面を参照しつつ詳細に説明する。
【００１４】
＝＝実施例１＝＝
図１Ａに実施例１として説明する情報処理システム１００の構成を示している。情報処理システム１００には、通信ネットワーク２０１を介して通信可能に接続される、分割データベース管理部１０１、アプリケーション２００（給与計算アプリケーション２０２、出勤記録集計アプリケーション２０３、出勤管理アプリケーション２０４）、ＩＣカード２０５、及び、アプリケーション２００によってアクセスされる実データベース１１１が含まれる。通信ネットワーク２０１は、例えば、ＴＣＰ／ＩＰによる通信が可能なネットワークである。図１Ａに示す情報処理システム１００が、例えば、クライアント／サーバ型のシステムとして構成される場合には、分割データベース管理部１０１は、サーバコンピュータにおいて実現される機能であり、アプリケーション２００は、クライアントコンピュータにおいて実現される機能である。
【００１５】
実データベース１１１は、所定のコンピュータで実行されるＲＤＢＭＳ（Relational DataBase Management System）によって管理されるＲＤＢ形式のデータベースである。ＩＣカード２０５は、リーダ・ライタ装置等を介して通信ネットワーク２０１に通信可能に接続される可搬型の記録媒体である。ＩＣカード２０５には、前述の実名データと偽名データとの対応関係を示したＩＤ対応表２０６が記録されている。ＩＤ対応表２０６は、分割データベース管理部１０１からのみアクセスできるように、暗号化や暗号化通信を行うことにより安全（セキュア）に管理されている。
【００１６】
図１Ｂは情報処理システム１００の他の構成例である。同図に示す情報処理システム１００の場合、実データベース１１１は通信ネットワーク２０１に直接接続されず、実データベース１１１は分割データベース管理部１０１が実現されているコンピュータに直接接続されている。すなわち、図１Ｂに示す情報処理システム１００の場合には、通信ネットワーク２０１を通じて実データベース１１１に直接アクセスすることができないため、実データベース１１１をより安全に管理することができる。
【００１７】
なお、図１Ａ及び図１Ｂのいずれの構成においても、分散データベース管理部１１１は、アプリケーション２００からの実データベース１１１へのアクセス要求を仲介するプロキシサーバ（代理サーバ）として機能している。また、アプリケーション２００は、実データベース１１１にアクセスするための識別子として、分割データベース管理部１０１の識別子（ホスト名やＩＰアドレス等）を指定することにより、実データベース１１１にアクセスする。
【００１８】
図２は分割データベース管理部１０１、アプリケーション２００、実データベース１１１、を実現するために用いられるコンピュータのハードウエア構成例である。同図に示すコンピュータ６０は、ＣＰＵ６１、ＲＡＭ・ＲＯＭ等のメモリ６２、ハードディスク６３、データを入力するためのユーザインタフェースであるキーボードやマウス等の入力装置６４、データを表示するためのユーザインタフェースである液晶ディスプレイやブラウン管ディスプレイ等の表示装置６５、通信ネットワーク２０１に接続して通信するための通信インタフェース６６などを有している。
【００１９】
図３Ａは分割データベース管理部１０１を中心とした情報処理システム１００の具体的なソフトウエア構成である。分割データベース管理部１０１は、仮想データベースＩ／Ｆ部１０２（クエリー受信部）、クエリー変換部１０３（クエリー判定部、クエリー変換部）、ＩＤ対応表状態判定部１０４、ＩＤ対応表２０６の複製を記憶するＩＤ対応表キャッシュ部１０５（対応表記憶部）、ＩＤ攪乱部１０６、実データベースＩ／Ｆ部１０７等の機能を有する。なお、これらの機能は、コンピュータ６０が有するハードウエアが備える機能や、ＣＰＵ６１がメモリ６２やハードディスク６３に記憶されているプログラムを実行することによって実現されている。
【００２０】
図３Ａに示すように、実データベース１１１には、従業員マスタ３０３、勤務記録３０４、及び勤務記録集計データ３０５が、テーブルとして格納されている。なお、従業員マスタ３０３は、前述した実名テーブルに相当するテーブルであり、勤務記録３０４及び勤務記録集計データ３０５は、いずれも前述した偽名テーブルに相当するテーブルである。実データベース１１１は、ＲＤＢ形式のデータベースであるので、テーブルやビュー等のデータの集合はデータベースというリソースを単位として管理されている。本実施例では、従業員マスタ３０３、勤務記録３０４、勤務記録集計３０５が、「従業員」というリソース名を有するデータベースに格納されているものとする。
【００２１】
一般にＲＤＢＭＳは、ベンダごとに独自拡張機能や標準対応の程度に差異がある。また、アプリケーション２００を記述している言語によっては、ソースコードに直接ＳＱＬ文を記述できない場合もある。このような場合には、例えば、図３Ｂに示すように、アプリケーション２００と分割データベース管理部１０１との間に、複数の異なるＲＤＢ（Relational Database）の機能を共通化／抽象化したＤＢミドルウェア９０１，９０２，９０３を介在させればよい。
【００２２】
なお、この場合のアプリケーション２００と分割データベース管理部１０１との間の通信はＤＢミドルウェア９０１，９０２，９０３を介して行われる。また、図３Ａの構成では、分割データベース管理部１０１とアプリケーション２００との間の通信は、実データベース１１１が使用する通信プロトコルを用いて行われるが、図３Ｂの構成では、ＤＢミドルウェア９０１，９０２，９０３の通信プロトコルを用いて行われる。このようにＤＢミドルウェア９０１，９０２，９０３を介在させる場合には、アプリケーション２００を分割データベース管理部１０１に接続するためのインタフェースをアプリケーション２００に造り込む必要がないという利点があり、例えば、稼働実績のある信頼性の高いアプリケーション２００に手を加えることなく、分割データベース管理部１０１に結合させることができ、信頼性を損なうことなく、本発明の情報処理システム１を導入することができる。なお、ＤＢミドルウェア９０１，９０２，９０３の具体例として、オペレーティングシステムのランタイムライブラリがある。
【００２３】
次に、情報処理システム１００において取り扱われるデータについて説明する。図４Ａは従業員マスタ３０３の一例である。従業員マスタ３０３の各レコードには、従業員ＩＤ３０３１、氏名３０３２、所属３０３３、職名３０３４、住所３０３５の項目が含まれる。このうち、従業員ＩＤ３０３１の項目には、「001」，「002」といった、従業員ごとに付与される固有の識別子が格納される。なお、本実施例では、従業員ＩＤ３０３１に格納されている識別子のことを、実名ＩＤ又は実名の従業員ＩＤと称することとする。
【００２４】
図４Ｂに勤務記録３０４の一例を示している。勤務記録３０４には、出勤管理アプリケーション２０４によって適宜レコードが追加される。勤務記録３０４の各レコードには、従業員ＩＤ３０４１、記録日時３０４２、及び、記録内容３０４３の項目が含まれる。ここで本実施例では、同一人の個人データを、実名データを用いた実名テーブルと、偽名データを用いた偽名テーブルとに分割して実データベース１１１に管理している。このため、同一の従業員のデータであっても、図４Ａに示す従業員マスタ３０３の従業員ＩＤ３０３１と、図４Ｂに示す勤務記録３０４の従業員ＩＤ３０４１には、夫々異なる値が格納される。本実施例では、従業員マスタ３０３の従業員ＩＤ３０３１には実名データである実名ＩＤが、勤務記録３０４の従業員ＩＤ３０４１には偽名データである偽名ＩＤが格納されるものとする。
【００２５】
従業員マスタ３０３の従業員ＩＤ３０３１と、勤務記録３０４の従業員ＩＤ３０４１との対応は、ＩＤ対応表２０６に示されている。従業員マスタ３０３の内容と、勤務記録３０４の内容との対応づけは、ＩＤ対応表２０６を参照することによってのみ可能であり、ＩＤ対応表２０６が存在しない場合には、アプリケーション２００から隠蔽されることになり、アプリケーション２００は、例えば、勤務記録３０４の従業員ＩＤ３０４１に格納されている識別子から、従業員マスタ３０の氏名、所属等の情報を取得することはできない。
【００２６】
なお、図４Ｂに示した勤務記録３０４の例では、従業員ＩＤ３０４１（偽名ＩＤ）の具体例として接頭語に「P」を有するものを用いているが、偽名ＩＤとしては、例えば、実名ＩＤをハッシュ関数により変換したものなどを用いることができる。偽名ＩＤとして実名ＩＤを推測することが困難又は不可能なものを用いることで、情報処理システム１の安全性を向上させることができる。以下の説明では、勤務記録３０４の従業員ＩＤ３０４１の識別子を偽名ＩＤ又は偽名の従業員ＩＤとも称することとする。
【００２７】
図４Ｃに勤務記録集計データ３０５の一例を示している。勤務記録集計データ３０５には、従業員ＩＤ（偽名ＩＤ）ごとの勤務時間の集計値が格納される。出勤記録集計アプリケーション２０３は、勤務記録３０４を入力データとして計算を行う。勤務記録集計データ３０５の各レコードには、従業員ＩＤ３０５１（偽名ＩＤ）、集計月３０５２（年単位でもよい）、及び合計勤務時間３０５３の項目が含まれる。
【００２８】
図４Ｄは、給与計算アプリケーション２０２によって出力されるデータの一例である。同図に示す出力データ３０６は、従業員毎の給与データである。出力データ３０６には、従業員マスタ３０３に格納されている氏名３０６１、支給額合計３０６２、合計勤務時間３０６３、所得税３０６４、住民税３０６５の項目が含まれる。合計勤務時間３０６３には、勤務記録集計データ３０５に格納されている合計勤務時間３０５３の内容が出力される。なお、出力データ３０６は、例えば、給与明細を印刷するアプリケーション等によって利用される。
【００２９】
図５Ａは、リソース定義データベース１０８に格納されているテーブルの一例である。同図に示すテーブル５０３には、実データベース１１１が稼働しているサーバコンピュータのホスト名５０３１が格納されている。
【００３０】
図５Ｂに示すテーブル５００、及びテーブル５０４は、リソース定義データベース１０８に格納されているテーブルの一例である。テーブル５００は、偽名テーブル及び偽名ＩＤが用いられている項目が登録されるテーブルであり、偽名データが用いられているデータベースの名称５００１、偽名テーブルの名称５００２、及び偽名ＩＤ５００３の項目を有する。偽名ＩＤ５００３には偽名ＩＤが用いられている項目名が格納される。図５Ｂに示すテーブル５００には、「従業員」というリソース名を持つデータベースに格納された、勤務記録３０４の従業員ＩＤが、偽名ＩＤを表す項目であることが登録されている。図５Ｂに示すテーブル５０４は、実名テーブル及び実名ＩＤが用いられている項目が登録されるテーブルであり、実名が用いられているデータベースの名称５０４１、実名テーブルの名称５０４２、及び実名ＩＤ５０４３の項目を有する。テーブル５０４では、「従業員」というリソース名を持つデータベースに格納されている従業員マスタ３０３の従業員ＩＤ３０３１には実名ＩＤが用いられていることが登録されている。
【００３１】
図５Ｃに示すテーブル５０１は、応答定義データベース１０９に格納されるテーブルである。応答定義データベース１０９には、分割データベース管理部１０１が各アプリケーション２００に対して返す応答メッセージが格納されている。テーブル５０１の各レコードには、アプリＩＤ５０１１、名称５０１２、応答データ５０１３、及び、完了ステータス５０１４の項目が含まれる。このうちアプリＩＤ５０１１には、アプリケーション２００の識別子が格納され、例えば、設計者が与えるコード、アプリケーション２００が使うデータベースアカウントのユーザ名等が格納される。名称５０１２には、アプリケーション２００を特定する文字列が格納される。
【００３２】
応答データ５０１３には、分割データベース管理部１０１からＩＤ対応表２０６にアクセスできない状況において、アプリケーション２００が、実名テーブルの実名データと偽名テーブルの偽名データとを対応づけなければならないクエリーを送信してきた場合にアプリケーション２００に対して返答する応答メッセージの種類が格納される。例えば、応答データ５０１３に「空データ」が格納されている場合には、分割データベース管理部１０１は、アプリケーション２００に空のデータ集合を返すことを意味する。応答の種類５０１３に「疑似データ」が格納されている場合には、テーブル５０４に登録されている実名テーブルの各項目をランダムな値で埋めたテーブルを応答データとしてアプリケーション２００に送信し、応答データの内容は必ずしも保証されないことを意味する。完了ステータス５０１４には、クエリーの実行結果を示す完了ステータスが格納される。完了ステータスには、「正常」、「異常」や、実行結果の具体的な内容を示すエラーコードが格納される。
【００３３】
図５Ｄに示すテーブルは、ＩＤ対応表２０６の一例である。ＩＤ対応表２０６には、実名ＩＤ２０６１の項目と、偽名ＩＤ２０６２の項目を有し、実名ＩＤと偽名ＩＤの対応関係が示されている。
【００３４】
図５Ｅに示すテーブルは、ＩＤ対応表キャッシュ部１０５に存在する、ＩＤ対応表２０６の複製が格納されるテーブルの一例である。分割データベース管理部１０１が、ＩＤ対応表２０６にアクセス可能な場合には、テーブル５０２の実名ＩＤ５０２１には実名ＩＤが格納され、アクセス不可能な場合には、テーブル５０２の実名ＩＤ５０２１には何も内容が格納されない。図５Ｅは実名ＩＤ５０２１に何も内容が格納されていない状態である。
【００３５】
＝処理説明＝
＜ＩＤ対応表２０６を参照しない場合＞
ここでは項目３０４１に格納されている偽名の従業員ＩＤを用いて行われる処理の一例として、ＩＤ対応表２０６を参照せずに行われる、出勤管理アプリケーション２０４が実データベース１１１にアクセスする際に、分割データベース管理部１０１によって行われる処理について図６Ａに示すフローチャート６００とともに説明する。
【００３６】
出勤管理アプリケーション２０４は、実データベース１１１にアクセスする際、まず、分割データベース管理部１０１によって提供される仮想データベースに接続するための処理（以下、接続処理という。）を実行する。この接続処理において、出勤管理アプリケーション２０４は、接続情報（ＤＢユーザ名、パスワード、接続データベース名等）を分割データベース管理部１０１に送信する。分割データベース管理部１０１の仮想データベースＩ／Ｆ部１０２は、出勤管理アプリケーション２０４から送信されてくる接続情報を受信する（Ｓ６１１）。
【００３７】
分割データベース管理部１０１によって接続情報が受信されると、次に、分割データベース管理部１０１のクエリー変換部１０３が、上記接続情報及びテーブル５０３に基づいて、実データベース１１１のホスト名を特定し、実データベースＩ／Ｆ部１０７に対して実データベース１１１への接続要求を送信する（Ｓ６１２）。次に、実データベースＩ／Ｆ部１０７は、接続情報を実データベース１１１に送信し（Ｓ６１３）、実データベース１１１からの応答を待機する。
【００３８】
次に、実データベース１１１に対する接続結果が、仮想データベースＩ／Ｆ部１０２によって受信されると（Ｓ６１４）、分割データベース管理部１０１が、受信した接続結果を出勤管理アプリケーション２０４に送信する（Ｓ６１５）。そして、実データベース１１１への接続に成功した場合には、出勤管理アプリケーション２０４と実データベース１１１との間にセッションが確立される。このセッションは切断処理が行われるまでの間、仮想データベースＩ／Ｆ部１０２、及び、実データベースＩ／Ｆ部１０７の機能によって保持される。
【００３９】
出勤管理アプリケーション２０４による勤務記録３０４へのレコードの追加処理は、上記セッションが確立している状態で行われる。出勤管理アプリケーション２０４は、パーソナルコンピュータや従業員が所持しているＩＣカード等から、偽名の従業員ＩＤ、及び、出勤時刻や退勤時刻等の情報を含んだデータを取得し、取得したデータに取得時刻を付加する。そして、取得したデータに対応するレコードを勤務記録３０４に追加するためのクエリーを生成し、これを分割データベース管理部１０１に送信する。例えば、勤務記録３０４に、偽名ＩＤとして「P001」が割り当てられている従業員である「佐藤」氏の出勤時刻を追加するクエリーは、次のように記述される。  
INSERT 勤務記録 (従業員ID、記録日時, 記録内容)
VALUES (P001,'2005-04-01 09:00:00', '出勤');            ・・・（１）
なお、上記クエリーでは、説明の便宜上、テーブル名や項目名の文字列が日本語で表記されているが、実際にはＳＱＬが許す文字列セットで記述される。
【００４０】
次に、出勤管理アプリケーション２０４から上記クエリーが送信されてきた場合に分割データベース管理部１０１によって行われる処理について、図６Ｂに示すフローチャート６２０を参照しつつ説明する。
【００４１】
まず、分割データベース管理部１０１の仮想データベースＩ／Ｆ部１０２が、出勤管理アプリケーション２０４からクエリーを受信する（Ｓ６２１）。次に、クエリー変換部１０３が、受信したクエリーを解析し（Ｓ６２２）、クエリーのSELECT構文中に指定された項目名に基づいて、実名テーブルと偽名テーブルの対応づけが必要であるかどうかを判定する（Ｓ６２３）。この判定は、例えば、SELECT構文「SELECT ... FROM ... WHERE ＜条件式＞」の＜条件式＞に指定されている文字列から、テーブル名と項目名とを抽出し、その抽出結果をテーブル５００および５０４と比較し、テーブル５００に定義されている偽名テーブル名、及び、偽名ＩＤの項目名と、テーブル５０４に定義されている実名テーブル名、及び、実名ＩＤの項目名が、「=」、「<=」、「>=」等の比較演算子によって結合されているか否かを確認することにより行う。
【００４２】
例えば、図５Ｂに示すテーブル５００及びテーブル５０４の場合には、等号演算子に関しては、「従業員マスタ.従業員ID=勤務記録集計データ.従業員ID」、従業員マスタ.従業員ID=勤務記録.従業員ID」の２つの条件式がチェック対象となる。クエリー変換部１０３は、これらのうちの少なくともいずれかの条件式が、出勤管理アプリケーション２０４から受信したクエリーに存在する場合には、実名テーブルと偽名テーブルの対応付けが必要であると判定し、存在しない場合には、実名テーブルと偽名テーブルの対応付けが必要でないと判定する。
【００４３】
なお、ネスティングが含まれている場合や「;」（セミコロン）を用いて併記されている場合など、受信したクエリーに複数のSELECT構文「SELECT ... FROM ... WHERE ＜条件式＞」が存在する場合には、そのうちの少なくとも一つに上記条件式が含まれていれば、実名テーブルと偽名テーブルの対応づけが必要であると判定する。また、「ON」、「USING」、「JOIN」など、SELECT構文と実質的に等価な命令に関しては、例えば、その命令を一旦SELECT構文に帰着させてから上記の判定処理を行う。
【００４４】
ここでクエリー（１）は勤務記録３０５のみを処理対象とするものであり、このクエリー（１）には上記のいずれの条件式も含まれていない。従って、この場合は実名データと偽名データとの対応づけは必要なしと判定し（Ｓ６２３：不要）、（Ｓ６２５）の処理に進む。クエリー（１）とは異なり、上記いずれかの条件式を含んだクエリーが、出勤管理アプリケーション２０４から送信されてきた場合には、実名データと偽名データとの対応づけの必要が有りと判定し（Ｓ６２３：ＹＥＳ）、（Ｓ６２４）の処理に進む。（Ｓ６２４）の処理の具体的な内容については、後の給与計算アプリケーション２０２を用いた説明において詳述する。
【００４５】
（Ｓ６２５）の処理では、クエリー変換部１０３が、テーブル５０３を参照して実データベース１１１のホスト名を特定し（Ｓ６２５）、実データベースＩ／Ｆ部１０７に、実データベース１１１へのクエリーの送信要求を送出する。実データベースＩ／Ｆ部１０７は、上記送信要求を受信すると、出勤管理アプリケーション２０４から受信したクエリーを、実データベース１１１に送信する（Ｓ６２６）。
【００４６】
実データベース１１１は、実データベースＩ／Ｆ部１０７から送信されてくる上記クエリーを受信すると、受信したクエリーを実行する。受信したクエリーがクエリー（１）であった場合には、勤務記録３０４にレコードが１件追加されることになる。（Ｓ６２７）の処理では、実データベースＩ／Ｆ部１０７が、クエリーの実行結果を実データベース１１１から受信する。仮想データベースＩ／Ｆ部１０２は、クエリーの実行結果を受信すると、出勤管理アプリケーション２０４に対してデータベースの操作の成功もしくは失敗を示す状態コードが出勤管理アプリケーション２０４に送信される（Ｓ６２８）。
【００４７】
以上がＩＤ対応表２０６を参照せずに行われる、出勤管理アプリケーション２０４から実データベース１１１に対するアクセスに関する処理の一例である。なお、以上に説明した出勤管理アプリケーション２０４についての処理と同様に、ＩＤ対応表２０６を参照せずに行われる、勤務記録集計アプリケーション２０３から実データベース１１１に対するアクセスに関する処理についても、図６Ａ、図６Ｂに示すフローチャートに従って行われる。
【００４８】
勤務記録集計アプリケーション２０３は、アプリケーションの利用者が、2005年4月１日から2005年4月30日の間というように任意の期間を指定すると、勤務記録３０４を参照して指定された期間内の各従業員の勤務時間を集計し、実データベース１１１の勤務記録集計データ３０５に結果を出力する。ここで勤務記録集計アプリケーション２０３は、勤務記録３０４に格納された指定期間内のデータを得るために、例えば、次のクエリーを分割データベース管理部１０１に発行する。  
SELECT 従業員ＩＤ, 記録日時, 記録内容 FROM 従業員マスタ 
WHERE 記録日時>='2005-04-01 0:00:00' AND 記録日時<='2005-04-30 23:59:59';                                  ・・・（２）
【００４９】
勤務記録集計アプリケーション２０３は、上記クエリーの実行結果に基づいて、従業員ＩＤごとの勤務時間を算出し、勤務記録集計データ３０５にレコードを追加するクエリーを実データベース１１１に発行する。例えば、偽名の従業員ＩＤとして「P001」が与えられている従業員が、合計40時間勤務していた場合には、勤務記録集計アプリケーション２０３は、次のクエリー（３）を実データベース１１１に送信する。  
INSERT 勤務記録集計データ (従業員ID、合計勤務時間)  VALUES (P001, 40);                                              ・・・（３）
以上がＩＤ対応表２０６を参照せずに行われる、勤務記録集計アプリケーション２０３から実データベース１１１に対するアクセスに関する処理の一例であるが、さらにＩＤ対応表２０６を参照せずに行われる、顧客マスタ３０３のみにアクセスする処理も、上記と同様にして行われる。
【００５０】
このように、アプリケーション２００から送信されてくるクエリーが、実名テーブルのみ、又は、偽名テーブルのみを対象とする場合には、ＩＤ対応表２０６が存在しなくても、正常にクエリーを実行することができる。
【００５１】
＜ＩＤ対応表２０６を参照する場合＞
次に、ＩＤ対応表２０６を参照して行われる処理について、給与計算アプリケーション２０２が、ＩＤ対応表２０６を参照しつつ実データベース１１１にアクセスする際の処理を具体例として説明する。
【００５２】
ＩＤ対応表２０６は、ＩＣカード２０５に格納されており、ＩＣカード２０５をリーダ・ライタ装置等にセットすることにより、分割データベース管理部１０１はＩＤ対応表２０６を参照することが可能になる。図７Ａに示すシーケンス７００は、ＩＣカード２０５の所持者がＩＣカード２０５をリーダ・ライタ装置等にセットし、分割データベース管理部１０１が、ＩＤカード２０５と通信可能な状態になった場合に発生する割込信号に応じて開始される、分割データベース管理部１０１によって行われる処理である。
【００５３】
割込信号が発生すると、ＩＤ対応表状態判定部１０４は、まずＩＤ対応表２０６の読み出しが可能かどうかを判定する（Ｓ７１１）。ＩＣカード２０５にパスワードが設定されている場合には、パスワード認証が完了していれば読み出し可能な状態である。パスワードが設定されていない場合には、カードの物理的な接続が認識された時点で読み出し可能な状態となる。
【００５４】
（Ｓ７１２）の処理では、ＩＤ対応表状態判定部１０４が、ＩＤ対応表キャッシュ部１０５にキャッシュの更新要求を送出する。ＩＤ対応表キャッシュ部１０５は、キャッシュ５０２へのアクセスを排他制御するために、ロック状態変数を管理している。ロック状態変数は、ＩＤ対応表キャッシュ部１０５、クエリー変換部１０３、及びＩＤ攪乱部１０６からアクセスされる。ロック状態変数が取り得る値には、排他制御が行われていないことを示す「OK」、排他制御が行われているプロセス以外からは更新(write)が不可であることを示す「W」、参照(Read)も更新も不可であることを示す「R/W」等がある。
【００５５】
例えば、クエリー変換部１０３がキャッシュ５０２を利用している場合には、ロック状態変数は「W」となり、ＩＤ対応表キャッシュ部１０５によるキャッシュ更新処理もしくはＩＤ攪乱部１０６のＩＤ更新処理が実行されている場合には、ロック状態変数は「R/W」となり、それ以外の場合には、ロック状態変数は「OK」となる。ロック状態変数は、例えば、オペレーティングシステムが提供するシステム関数により、メモリ６２上の変数やファイルとして実装されている。
【００５６】
（Ｓ７１３）の処理では、ＩＤ対応表キャッシュ部１０５が、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック状態変数を「R/W」に変更している。（Ｓ７１４）の処理では、ＩＤ対応表キャッシュ部１０５が、ＩＣカード２０５からＩＤ対応表２０６を読み出して、メモリ６２上に確保される記憶領域であるキャッシュ５０２にＩＤ対応表２０６の複製（又は実名ＩＤの値のみ）を格納している。この時点において、キャッシュ５０２には全ての実名ＩＤと偽名ＩＤの対応データが格納される。（Ｓ７１５）の処理では、ＩＤ対応表キャッシュ部１０５が、ロック状態変数を「OK」に設定している。
【００５７】
図７Ｂに示すシーケンス７２０は、ＩＣカード２０５の所持者がＩＣカード２０５をリーダ・ライタ装置等から引き抜くことにより、ＩＣカード２０５が分割データベース管理部１０１と通信不能になった場合に発生する割込信号に応じて開始される分割データベース管理部１０１によって行われる処理である。
【００５８】
（Ｓ７２１）の処理では、ＩＤ対応表キャッシュ部１０５に対し、ＩＤ対応表状態判定部１０４が、キャッシュ内容の破棄要求を送出している。（Ｓ７２２）の処理では、ＩＤ対応表キャッシュ部１０５は、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック変数を「R/W」に変更している。（Ｓ７２３）の処理では、キャッシュ５０２の実名ＩＤの欄に空データを代入している。（Ｓ７２４）の処理では、ＩＤ対応表キャッシュ部１０５が、ロック状態変数に「OK」を設定している。
【００５９】
次に、給与計算アプリケーション２０２が、ＩＤ対応表２０６を参照しつつ実データベース１１１にアクセスする処理について説明する。なお、給与計算アプリケーション２０２は、既に実データベース１１１とセッションを確立しているものとする。
【００６０】
まず、給与計算アプリケーション２０２が、各従業員の氏名と合計勤務時間を実データベース１１１から取得するため、次のクエリー（４）を分割データベース管理部１０１に送信することにより、あらかじめ従業員マスタ３０３から全ての従業員ＩＤ３０３１を取得する。なお、この処理は、例えば、前述した図６Ｂの処理に従って行われる。  
SELECT 従業員マスタ.氏名, 勤務記録集計データ.合計勤務時間
FROM従業員マスタ, 勤務記録集計データ
WHERE 従業員マスタ.従業員ID=勤務記録集計データ.従業員ID AND
従業員マスタ.従業員ID＝'001';                    ・・・（４）
【００６１】
次に、分割データベース管理部１０１は、図６Ｂのフローチャートの（Ｓ６２１）〜（Ｓ６２３）と同様の処理を実行する。なお、この場合、（Ｓ６２３）の処理では、顧客マスタ３０３（実名テーブル）の従業員ＩＤ３０３１（実名データ）と、勤務記録集計データ３０５（偽名テーブル）の従業員ＩＤ３０５１（偽名データ）との対応が必要と判定されるので、クエリー変換処理が実行される（Ｓ６２４）。
【００６２】
クエリー変換処理（Ｓ６２４）の処理の詳細を図８のフローチャート８００に示している。クエリー変換処理（Ｓ６２４）では、まず、クエリー変換部１０３が、ＩＤ対応表状態判定部１０４に問い合わせることにより、ＩＤ対応表２０６にアクセス可能であるかどうかを確認する（Ｓ８１１）。アクセス可能である場合には（Ｓ８１１：アクセス可）、（Ｓ８１２）の処理に進む。（Ｓ８１２）の処理において、クエリー変換部１０３は、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になると、ロック状態変数を「W」に設定している。
【００６３】
次に、クエリー変換部１０３は、給与計算アプリケーション２０２から受信したクエリーについて変換処理を実行する（Ｓ８１３）。ここで給与計算アプリケーション２０２は、従業員マスタ３０３（実名テーブル）の従業員ＩＤ３０３１（実名データ）と、勤務記録集計データ３０５（偽名テーブル）の従業員ＩＤ３０５１（偽名データ）を参照する際、同一の従業員についてのレコードには、同じ識別子が格納されているものとして処理を実行するが、従業員マスタ３０３（実名テーブル）では実名ＩＤ（実名データ）が用いられ、勤務記録集計データ３０５（偽名テーブル）では偽名ＩＤ（偽名データ）が用いられている（例えば、実名ＩＤ「001」に対して偽名ＩＤ「P001」）。このため、クエリー（４）をそのままの形で実行されてしまうと、アプリケーション２００が期待する結果が得られないことになる。そこで、（Ｓ８１３）の変換処理では、アプリケーション２００が期待する結果が得られるように、給与計算アプリケーション２０２から受信したクエリーを、実データベース１１１のテーブル構造に適合するクエリーに変換する。
【００６４】
クエリー変換処理（Ｓ８２３）では、まず、前述した図６Ｂの（Ｓ６２２）及び（Ｓ６２３）の処理と同様に、SELECT構文のWHERE句に記述されている文字列から、比較演算子で結ばれたテーブル名と項目名を抽出し、テーブル５０４又はテーブル５００の、テーブル名又は項目名に一致するものを選出する。クエリー（４）の場合には、「従業員マスタ.従業員ID」、及び、「勤務記録集計データ.従業員ID」が該当することになる。なお、ＳＱＬ構文上、これらは「テーブル名.項目名」を意味する。
【００６５】
次に、列挙したテーブル名と項目名の組合せに基づいて、実データベース１１１において参照すべきテーブルをリストアップする。クエリー（４）の場合には、文字列「従業員マスタ」及び「勤務記録集計データ」が該当する。次に、受信クエリーのWHERE句を、テーブル５０４とテーブル５００の登録データと比較して、実名ＩＤ又は偽名ＩＤの値を参照している条件式を列挙する。クエリー（４）では「従業員マスタ.従業員ID＝'001'」の条件式が該当する。
【００６６】
次に、上記実名ＩＤ又は偽名ＩＤの値を参照している条件式を、テーブル５０４及びテーブル５００の登録データと比較し、必要に応じて、リストアップしたテーブルの夫々に適した条件式に変換する。ここでは、条件式に出現するテーブル名と項目名の組みがテーブル５０４に登録されているので、条件式は実名ＩＤを参照するものと見なされる。
【００６７】
従業員マスタ３０３のチェック処理では、テーブル５０４に「従業員マスタ」が存在するので、条件式はそのままとなる。勤務記録集計データ３０５のチェック処理では、テーブル５００に「勤務記録集計データ」が存在するので、勤務記録集計データ３０５には偽名ＩＤしか含まれていないと判定される。この場合、クエリー変換部１０３は、キャッシュ５０２に格納されているＩＤ対応表２０６を参照し、実名ＩＤに対応する偽名ＩＤを特定し、条件式で参照しているＩＤの値を変換する。ここではクエリー（４）の「勤務記録集計データ.従業員ID ＝'001'」の部分は「勤務記録集計データ.従業員ID＝'P001'」に変換されることになる。
【００６８】
次に、クエリー変換部１０３は、リストアップしたテーブルの夫々を対象とした複数のクエリーを生成する。クエリー（４）に対応して生成されるクエリーは、例えば次の２つのクエリーである。  
SELECT 従業員マスタ.氏名
FROM  従業員マスタ
WHERE 従業員マスタ.従業員ID＝'001';          ・・・（５）
SELECT 勤務記録集計データ.合計勤務時間
FROM  勤務記録集計データ
WHERE 勤務記録集計データ.従業員ID='P001';    ・・・（６）
【００６９】
以上がクエリー変換処理（Ｓ８１３）の詳細である。続く（Ｓ８１４）乃至（Ｓ８１６）の処理では、前述した図６Ｂの（Ｓ６２５）乃至（Ｓ６２７）と同様の処理が行われる。そして、（Ｓ８１６）の処理が終了した状態では、２つのクエリー（５）、（６）が実行された結果として、２つのレコード集合が実データベースＩ／Ｆ部１０７に格納される。（Ｓ８１７）の処理では、データ変換部１１４が、実データベースＩ／Ｆ部１０７に格納されている上記２つのレコード集合の直積を求めて、上記２のレコードを１つのレコード集合に変換する。（Ｓ８１７）の処理の結果、本実施例の場合には、従業員ＩＤが「001」の従業員に該当する、{佐藤、40}という１個のレコードが得られることになる。
【００７０】
続く（Ｓ８１８）の処理では、仮想データベースＩ／Ｆ部１０２が、（Ｓ８１７）により得られたレコードを給与計算アプリケーション２０２に送信し、仮想データベースＩ／Ｆ部１０２が、クエリー変換部１０３に応答完了を送信する。（Ｓ８１９）の処理では、クエリー変換部１０３が、（Ｓ８１２）の処理において変更していたロック状態変数を「OK」に変更し、またキャッシュのロックを解除している。
【００７１】
（Ｓ８１１）の処理において、ＩＤ対応表２０６にアクセス不可と判定された場合には、次に（Ｓ８２０）の処理が実行される。（Ｓ８２０）の処理において、分割データベース管理部１０１は、テーブル５０１を参照して給与計算アプリケーション２０２に対する応答を決定する。本実施例の場合には、完了ステータスを「異常終了」とする。（Ｓ８２１）の処理では、分割データベース管理部１０１が、例えば、ＲＤＢＭＳによって提供されるログや環境変数等のＲＤＢＭＳによって提供される方法により、完了ステータスを給与計算アプリケーション２０２に通知する。
【００７２】
以上がＩＤ対応表２０６を参照して行われる、給与計算アプリケーション２０２が実行データベース１１１にアクセスする際の処理である。このように、実施例１として説明した情報処理システム１００によれば、分割データベース管理部１０１が、実データベース１１１のテーブル構造と、ＩＤ対応表２０６とをアプリケーション２００から隠蔽しつつ、アプリケーション２００に対して応答メッセージを返すことができる。また、ＩＤ対応表２０６の接続状態に応じてアプリケーション２００ごとに応答メッセージをカスタマイズすることもできる。
【００７３】
＝＝実施例２＝＝
図９に実施例２として説明する情報処理システム１０００の構成を示している。ここで実施例１として説明した前述の情報処理システム１００では、全てのテーブルが物理的に同一の実データベース１１１に格納されていた。しかしながら、実施例２の情報処理システム１０００では、実データベース１１１に格納されているデータが、物理的に異なる複数のデータベースに分散した状態で管理される。具体的には、実名テーブルである従業員マスタについては実データベース１００２で管理され、従業員マスタ以外の偽名テーブルは、実データベース１００３で管理される。そして、図９に示す分散データベース管理部１００４が、実データベース１００２と実データベース１００３とを統合し、アプリケーション２００にあたかも１つの実データベースが存在しているかのように実データベース１００２及び実データベース１００３の内容を提供する。
【００７４】
情報処理システム１０００の構成は、アウトソーシング等によって委託元が外部業者に業務委託を行う環境に好適である。以下の説明では、実名テーブルが格納された実データベース１００２が業務委託サイト９１によって管理され、偽名テーブルが格納された実データベース１００３が、業務受託サイト（データセンタ）９２に管理が委託されているものとする。業務委託サイト９１と業務受託サイト９２との間は、ＶＰＮ(Virtual Private Network)１００１等のセキュアな通信方式によって接続されている。なお、このように業務受託サイト９２ではもっぱら偽名データのみを用いて作業することになるので、委託元は実名と関連づけられたデータが外部に漏洩するのを防ぐことができる。
【００７５】
図１０は、分割データベース管理部１０１を中心とした情報処理システム１０００の具体的なソフトウエア構成である。図３Ａに示した情報処理システム１００との具体的な違いは、図１０では複数の実データベース１００２，１００３が存在していることと、実データベース１００２，１００３が、夫々、分散データベース管理部１００４によって制御されていることである。
【００７６】
図１１Ａは、情報処理システム１０００における分割データベース管理部１０１の処理を説明するフローチャート１１００である。なお、情報処理システム１０００では、ＩＤ対応表２０６は、分割データベース管理部１０１及び分散データベース管理部１００４の機能によって実データベース１００２，１００３のテーブルにも格納される。また実データベース１００２，１００３に対するクエリーの実行は、分散データベース管理部１００４によって行われる。
【００７７】
以下、図１１Ａに示すフローチャート１１００とともに、情報処理システム１０００の分散データベース管理部１００４によって行われる処理について説明する。なお、以下の説明は、図８のフローチャートとの差異点について行う。
【００７８】
図１１Ａに示すフローチャート１１００において、（Ｓ１１１１）乃至（Ｓ１１１２）の処理は図８の（Ｓ８１１）乃至（Ｓ８１２）と同様に行われる。クエリー変換処理（Ｓ１１１３）の処理は、図８に示す（Ｓ８１３）の処理とクエリーの解析処理については同じであるが、クエリーを生成する処理が（Ｓ８１３）の処理とは異なる。すなわち、（Ｓ１１１３）の処理では、クエリー変換部１０３は、ＩＤ対応表２０６のキャッシュ５０２のうち、受信したクエリーを実行するのに必要なレコード、例えば、クエリー（５）を受信した場合には、実名ＩＤが「001」のレコードを、実データベース１００２の一時的なテーブルである「TEMPORAL」に書き出す。なお、一時的なテーブルを格納するデータベースは、必ずしも実データベース１００２や実データベース１００３である必要はなく、分散データベース管理部１００４が管理している他のデータベースであってもよい。
【００７９】
クエリー変換処理（Ｓ１１１３）では、次にテーブル「TEMPORAL」を利用して、（Ｓ８１７）の処理（直積による実行結果の結合）に相当する処理を含んだクエリーを生成する。具体的には、分割データベース管理部１０１が、給与計算アプリケーション２０２からクエリー（４）を受信した場合には、クエリー変換処理（Ｓ１１１３）によって、例えば、次のクエリー（７）が生成される。
【００８０】
SELECT 従業員マスタ.氏名, 勤務記録集計データ.合計勤務時間
FROM  従業員マスタ, 勤務記録集計データ, TEMPORAL
WHERE 従業員マスタ.従業員ID＝'001' AND
従業員マスタ.従業員ID＝TEMPORAL.実名ID AND
勤務記録集計データ.従業員ID＝TEMPORAL.偽名ＩＤ;  ・・・（７）
クエリー（７）では、クエリー（４）における、条件式「従業員マスタ.従業員ID=勤務記録集計データ.従業員ID」を右辺と左辺に分解し、テーブルTEMPORALの実名ＩＤ、偽名ＩＤとの比較文に置きかえている。クエリー（７）の実行結果は、１つのレコード集合になっているので、（Ｓ８１７）のような実行結果の結合処理は不要である。
【００８１】
このように、本実施例で説明した情報処理システム１０００によれば、実データベースの内容が、物理的に異なる２つの実データベース１００２，１００３に管理される場合でも、実名データと偽名データを対応づける必要がある処理を実行することが可能である。また、実施例１では、アプリケーション２００から受信したクエリーに基づいて複数のクエリーを生成し、その実行結果の直積をとって１つの実行結果に結合する必要があったが、本実施例ではアプリケーション２００から受信したクエリーに基づいて１つのクエリーのみを生成し、また実行結果の結合処理が不要である。また実施例１の情報処理システム１００と同様に、本実施例の情報処理システム１０００においても、実名テーブル又は偽名テーブルの一方のみを対象とする処理についてはＩＤ対応表２０６の存在有無にかかわらずいつでも実行することが可能であり、また必要な場合には、ＩＤ対応表２０６によって実名テーブルと偽名テーブルの内容を結合し、アプリケーション２００が必要とする処理を実行することが可能である。
【００８２】
ところで、本実施例の上記構成では、ＩＤ対応表２０６の内容が、実データベース１００２，１００３にも格納されてしまうため、本来、分割データベース管理部１０１のみがアクセス可能な情報として管理されるべきＩＤ対応表２０６の秘密性が損なわれてしまうことになる。ここでＩＤ対応表２０６の秘密性を確保するには、例えば、処理Ｓ１１１８が行われた後にＩＤ対応表２０６の内容を再構築する処理（Ｓ１１１９）を実行するようにする。
【００８３】
図１１Ｂは、ＩＤ対応表２０６の秘密性を向上させた場合における、図１１Ａの（Ｓ１１１９）の処理の詳細を説明するフローチャート１１５０である。まずクエリー変換部１０３が、ＩＤ対応表状態判定部１０４に対してＩＤ対応表２０６にアクセス可能であるかどうかを問い合わせる（Ｓ１１５１）。ＩＤ対応表２０６がアクセス不可であれば（Ｓ１１５１：アクセス不可）、以降のＩＤ対応表２０６の再構築処理を実行せずに処理が終了する。アクセス可であれば（Ｓ１１５１：アクセス可）、次に、クエリー変換部１０３が、ＩＤ攪乱部１０６に偽名ＩＤの攪乱を要求する（Ｓ１１５２）。このとき、ＩＤ攪乱部１０６は、ロック状態変数を「R/W」に変更する（Ｓ１１５３）。
【００８４】
次に、ＩＤ攪乱部１０６は、テーブル「TEMPORAL」に格納されている偽名ＩＤを、実名ＩＤに基づいて新たに生成した偽名ＩＤに置き換える（Ｓ１１５４）。ここで偽名ＩＤの生成、及び偽名ＩＤの置き換え処理は、例えば、次のようにして行われる。まず実名ＩＤと乱数とをXOR演算を行うことにより合成し、その結果をキーとしてＭＤ５（Message Digest 5）によって偽名ＩＤを生成する。次に、生成した偽名ＩＤが、ＩＤ対応表２０６に存在する偽名ＩＤと重複しているかどうかをチェックする。重複している場合には、上記乱数を変更し、再び偽名ＩＤの生成処理（Ｓ１１５４）からやり直す。偽名ＩＤが重複していなければ、ＩＤ対応表２０６における古い偽名ＩＤを新しい値で置き換える。
【００８５】
ＩＤ対応表２０６の置き換え後は、図５Ｂのテーブル５００における偽名ＩＤ項目に格納されている項目（ここでは勤務記録３０４中の従業員ＩＤ３０４１、及び勤務記録集計データ３０５中の従業員ＩＤ３０５１）に格納されている偽名ＩＤを検索し、検索された偽名ＩＤを新しい値に置き換える（Ｓ１１５５）。次に、ロック状態変数を「OK」に変更し（Ｓ１１５６）、最後にテーブル「TEMPORAL」の内容を削除する（Ｓ１１５７）。
【００８６】
以上の仕組みによれば、実データベースを分散データベース管理部１００４によって管理する構成であっても、ＩＤ対応表２０６の秘密性を確保することができる。
【００８７】
＝＝実施例３＝＝
図１２に実施例３として説明する情報処理システム１２００の構成を示している。また図１３は、分割データベース管理部１０１を中心とした情報処理システム１２００の具体的なソフトウエア構成である。実施例３として説明する情報処理システム１２００が実施例１における情報処理システム１００と異なる点は、ＩＣカード２０５にＩＤ対応表２０６の代わりに秘密鍵１２０１が格納されていることである。また、実施例３は、実施例１と比べてＩＣカード２０５がアクセス可能になった場合における、分割データベース管理部１０１のＩＤ対応表キャッシュ部１０５の処理にも特徴がある。
【００８８】
図１４Ａに示すシーケンス１４００とともに実施例３におけるＩＤ対応表キャッシュ部１０５の処理について説明する。なお、シーケンス１４００が開始される前提として、ＩＣカード２０６がアクセス不可である場合には、ＩＤ対応表キャッシュ部１０５に、秘密鍵１２０１で暗号化されたＩＤ対応表２０６が格納されているものとする。
【００８９】
図１４Ａに示すシーケンス１４００は、ＩＣカード２０５の所持者がＩＣカード２０５をリーダ・ライタ装置等にセットしたのに応じて発生する割込信号に応じて開始される。割込信号が発生すると、ＩＤ対応表状態判定部１０４は、まず秘密鍵１２０１の読み出しが可能であるかどうかを判定する（Ｓ１４１１）。なお、ＩＣカード２０５にパスワードが設定されている場合には、パスワード認証が完了していれば読み出し可能な状態である。パスワードが設定されていない場合には、カードの物理的な接続が認識された時点で読み出し可能な状態となる。
【００９０】
（Ｓ１４１２）の処理では、ＩＤ対応表状態判定部１０４が、ＩＤ対応表キャッシュ部１０５にキャッシュの更新要求を送出する。ＩＤ対応表キャッシュ部１０５は、キャッシュ５０２へのアクセスを排他制御するために、ロック状態変数を管理している。ロック状態変数については図７Ａにおけるのと同様である。（Ｓ１４１３）の処理では、ＩＤ対応表キャッシュ部１０５が、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック状態変数を「R/W」に変更している。
【００９１】
（Ｓ１４１４）の処理では、ＩＤ対応表状態判定部１０４がＩＣカード２０５から秘密鍵１２０１を読み出している。（Ｓ１４１５）の処理では、ＩＤ対応表状態判定部１０４が暗号化された状態で格納されているＩＤ対応表２０６を秘密鍵１２０１によって復号している。復号されたＩＤ対応表２０６はＩＤ対応表キャッシュ部１０５に格納される。
【００９２】
図１４Ｂに示すシーケンス１４２０は、ＩＣカード２０５の所持者がＩＣカード２０５をリーダ・ライタ装置等から引き抜くことにより、ＩＣカード２０５が通信ネットワークから切断された場合に発生する割込信号に応じて開始される。なお、このシーケンス１４２０は、分割データベース管理部１０１によって行われる。
【００９３】
（Ｓ１４２１）の処理では、ＩＤ対応表状態判定部１０４が、ＩＤ対応表キャッシュ部１０５に対しキャッシュ（メモリ６２）に復号化されているＩＤ対応表２０６及び秘密鍵を破棄（消去）するための要求を送出している。（Ｓ１４２２）の処理では、ＩＤ対応表キャッシュ部１０５は、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック変数を「R/W」に変更している。（Ｓ１４２３）の処理では、ＩＤ対応表キャッシュ部１０５が、キャッシュ（メモリ６２）に復号化されているＩＤ対応表２０６及び秘密鍵を破棄（消去）している。（Ｓ１４２４）の処理では、ＩＤ対応表キャッシュ部１０５が、ロック状態変数に「OK」を設定している。
【００９４】
このように、実施例３では、ＩＤ対応表２０６そのものをＩＣカード２０５に記憶しなくて良いため、ＩＣカード２０５に実装すべきメモリの容量が少なくて済む。またＩＤ対応表２０６の格納件数がＩＣカード２０５の記憶容量に無関係となり、データサイズの大きなＩＤ対応表２０６を取り扱うことが可能となる。また分割データベース管理部１０１は、秘密鍵だけを読み出せば良いので、ＩＤ対応表２０６を読み出す場合に比べて負荷が少なく、処理を高速化することができる。
【００９５】
ところで、以上に説明した実施例３の構成は、実施例２に適用することも可能である。ここで実施例３は、ＩＣカード２０５にはＩＤ対応表２０６を格納しない構成であるので、図１１Ａに示す実施例２のＩＤ対応表２０６の再構築処理（Ｓ１１１９）の内容が異なる。すなわち、実施例３を実施例２に適用した場合には、例えば、偽名ＩＤを新たな偽名ＩＤで置き換えた後のＩＤ対応表２０６を秘密鍵１２０１の複製鍵で暗号化し、これを新たに前述の暗号化済みのＩＤ対応表２０６として記憶することになる。
【００９６】
なお、以上の実施形態の説明は本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明はその趣旨を逸脱することなく、変更、改良され得ると共に本発明にはその等価物が含まれることは勿論である。
【図面の簡単な説明】
【００９７】
【図１Ａ】本発明の実施例１として説明する情報処理システム１００の構成を示す図である。
【図１Ｂ】本発明の実施例１として説明する情報処理システム１００の構成を示す図である。
【図２】本発明の実施例１として説明する、分割データベース管理部１０１、アプリケーション２００、実データベース１１１、を実現するために用いられるコンピュータのハードウエア構成の一例を示す図である。
【図３Ａ】本発明の実施例１として説明する、分割データベース管理部１０１を中心とした情報処理システム１００の具体的なソフトウエア構成を示す図である。
【図３Ｂ】本発明の実施例１として説明する、分割データベース管理部１０１を中心とした情報処理システム１００の具体的なソフトウエア構成を示す図である。
【図４Ａ】本発明の実施例１として説明する、従業員マスタ３０３の内容の一例を示す図である。
【図４Ｂ】本発明の実施例１として説明する、勤務記録３０４の内容の一例を示す図である。
【図４Ｃ】本発明の実施例１として説明する、勤務記録集計データ３０５の内容の一例を示す図である。
【図４Ｄ】本発明の実施例１として説明する、給与計算アプリケーション２０２によって出力されるデータの一例を示す図である。
【図５Ａ】本発明の実施例１として説明する、リソース定義データベース１０８に格納されているテーブルの一例を示す図である。
【図５Ｂ】本発明の実施例１として説明する、リソース定義データベース１０８に格納されているテーブルの一例を示す図である。
【図５Ｃ】本発明の実施例１として説明する、応答定義データベース１０９に格納されるテーブルの一例を示す図である。
【図５Ｄ】本発明の実施例１として説明する、ＩＤ対応表２０６の一例を示す図である。
【図５Ｅ】本発明の実施例１として説明する、ＩＤ対応表２０６の一例を示す図である。
【図６Ａ】本発明の実施例１として説明する、ＩＤ対応表２０６を参照せずに行われる、出勤管理アプリケーション２０４が実データベース１１１にアクセスする処理を説明するフローチャートである。
【図６Ｂ】本発明の実施例１として説明する、出勤管理アプリケーション２０４から上記クエリーが送信されてきた場合に分割データベース管理部１０１によって行われる処理を説明するフローチャートである。
【図７Ａ】本発明の実施例１として説明する、ＩＣカード２０５の所持者がＩＣカード２０５をリーダ・ライタ装置等にセットしたのに応じて発生する割込信号に応じて開始される処理を説明するシーケンス図である。
【図７Ｂ】本発明の実施例１として説明する、ＩＣカード２０５の所持者がＩＣカード２０５をリーダ・ライタ装置等から引き抜くことにより、ＩＣカード２０５が通信ネットワークから切断された場合に発生する割込信号に応じて開始される処理を説明するシーケンス図である。
【図８】本発明の実施例１として説明する、（Ｓ６２４）のクエリー変換処理の詳細を説明するフローチャートである。
【図９】本発明の実施例２として説明する、報処理システム１０００の構成を示す図である。
【図１０】本発明の実施例２として説明する、分割データベース管理部１０１を中心とした情報処理システム１０００の具体的なソフトウエア構成を示す図である。
【図１１Ａ】本発明の実施例２として説明する、情報処理システム１０００における分割データベース管理部１０１の処理を説明するフローチャート１１００を示す図である。
【図１１Ｂ】本発明の実施例２として説明する、図１１Ａの（Ｓ１１１９）の処理の詳細を説明する図である。
【図１２】本発明の実施例３として説明する、情報処理システム１２００の構成を示す図である。
【図１３】本発明の実施例３として説明する、分割データベース管理部１０１を中心とした情報処理システム１２００の具体的なソフトウエア構成を示す図である。
【図１４Ａ】本発明の実施例３として説明する、ＩＤ対応表キャッシュ部１０５の処理を説明する図である。
【図１４Ｂ】本発明の実施例３として説明する、ＩＤ対応表キャッシュ部１０５の処理を説明する図である。
【符号の説明】
【００９８】
１００  情報処理システム
１０１  分割データベース管理部
１０２  仮想データベースＩ／Ｆ部
１０３  クエリー変換部
１０４  ＩＤ対応表状態判定部
１０５  ＩＤ対応表キャッシュ部
１０６  ＩＤ攪乱部
１０７  実データベースＩ／Ｆ部
１０８  リソース定義データベース
１０９  応答定義データベース
１１１  実データベース
２００  アプリケーション
２０２  給与計算アプリケーション
２０３  出勤記録集計アプリケーション
２０４  出勤管理アプリケーション
２０５  ＩＣカード
２０６  ＩＤ対応表
【図１Ａ】
0004672518.tif 000002
【図１Ｂ】
0004672518.tif 000003
【図２】
0004672518.tif 000004
【図３Ａ】
0004672518.tif 000005
【図３Ｂ】
0004672518.tif 000006
【図４Ａ】
0004672518.tif 000007
【図４Ｂ】
0004672518.tif 000008
【図４Ｃ】
0004672518.tif 000009
【図４Ｄ】
0004672518.tif 000010
【図５Ａ】
0004672518.tif 000011
【図５Ｂ】
0004672518.tif 000012
【図５Ｃ】
0004672518.tif 000013
【図５Ｄ】
0004672518.tif 000014
【図５Ｅ】
0004672518.tif 000015
【図６Ａ】
0004672518.tif 000016
【図６Ｂ】
0004672518.tif 000017
【図７Ａ】
0004672518.tif 000018
【図７Ｂ】
0004672518.tif 000019
【図８】
0004672518.tif 000020
【図９】
0004672518.tif 000021
【図１０】
0004672518.tif 000022
【図１１Ａ】
0004672518.tif 000023
【図１１Ｂ】
0004672518.tif 000024
【図１２】
0004672518.tif 000025
【図１３】
0004672518.tif 000026
【図１４Ａ】
0004672518.tif 000027
【図１４Ｂ】
0004672518.tif 000028