(57)【特許請求の範囲】
【請求項１】
ユーザによるデータベースへのアクセスを制御する装置であって、
第１のユーザによる第１のログインと、当該第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ又は前記第２のユーザの名義で前記データベースの参照が要求されると、当該第１のユーザがアクセス可能な当該データベースの第１のデータと、当該第２のユーザがアクセス可能な当該データベースの第２のデータとを参照するアクセスを行うアクセス部と、
前記第１のデータと前記第２のデータとに共通の項目に対応する当該第１のデータの部分と当該第２のデータの部分とに所定の計算を行って得られた部分を含むデータを出力する出力部と
を含む、装置。
【請求項２】
ユーザによるデータベースへのアクセスを制御する装置であって、
第１のユーザによる第１のログインと、当該第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ又は前記第２のユーザの名義で前記データベースの参照が要求されると、当該第１のユーザがアクセス可能な当該データベースの第１のデータと、当該第２のユーザがアクセス可能な当該データベースの第２のデータとに基づく第３のデータを参照するアクセスを行うアクセス部と
を含み、
前記アクセス部は、前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ及び前記第２のユーザのうちの一のユーザの名義で前記データベースの更新が要求されると、当該一のユーザがアクセス可能な当該データベースのデータを更新するアクセスを、当該第１のユーザ及び当該第２のユーザがログインした状態で行う、装置。
【請求項３】
前記受付部は、前記データベースを参照する参照モードから前記データベースを更新する更新モードへ切り替える切替指示を受け付け、当該切替指示に対する問い合わせに応答して入力された前記一のユーザの情報を受け付ける、請求項２の装置。
【請求項４】
項目及び当該項目に対応する数値を含むデータベースのレコードへのユーザによるアクセスを制御する装置であって、
第１のユーザによる第１のログインと、当該第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ又は前記第２のユーザの名義で前記データベースのレコードの出力が要求されると、当該第１のユーザがアクセス可能な第１のレコード及び当該第２のユーザがアクセス可能な第２のレコードが同じ項目を含んでいれば、当該第１のレコード及び当該第２のレコードを一のレコードとし、当該第１のレコードに含まれる当該項目に対応する数値及び当該第２のレコードに含まれる当該項目に対応する数値の合算値を当該一のレコードに含めることにより、生成されたレコードを出力する出力部と
を含む、装置。
【請求項５】
ユーザによるデータベースへのアクセスを制御する方法であって、
第１のユーザによる第１のログインと、当該第１のユーザによる第２のユーザ名義での第２のログインとを受け付けるステップと、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ又は前記第２のユーザの名義で前記データベースの参照が要求されると、当該第１のユーザがアクセス可能な当該データベースの第１のデータと、当該第２のユーザがアクセス可能な当該データベースの第２のデータとを参照するステップと、
前記第１のデータと前記第２のデータとに共通の項目に対応する当該第１のデータの部分と当該第２のデータの部分とに所定の計算を行って得られた部分を含むデータを出力するステップと
を含む、方法。
【請求項６】
ユーザによるデータベースへのアクセスを制御する方法であって、
第１のユーザによる第１のログインと、当該第１のユーザによる第２のユーザ名義での第２のログインとを受け付けるステップと、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ又は前記第２のユーザの名義で前記データベースの参照が要求されると、当該第１のユーザがアクセス可能な当該データベースの第１のデータと、当該第２のユーザがアクセス可能な当該データベースの第２のデータとに基づく第３のデータを参照するステップと、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ及び前記第２のユーザのうちの一のユーザの名義で前記データベースの更新が要求されると、当該一のユーザがアクセス可能な当該データベースのデータを更新するアクセスを、当該第１のユーザ及び当該第２のユーザがログインした状態で行うステップと
を含む、方法。
【請求項７】
ユーザによるデータベースへのアクセスを制御する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
第１のユーザによる第１のログインと、当該第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ又は前記第２のユーザの名義で前記データベースの参照が要求されると、当該第１のユーザがアクセス可能な当該データベースの第１のデータと、当該第２のユーザがアクセス可能な当該データベースの第２のデータとを参照するアクセスを行うアクセス部と、
前記第１のデータと前記第２のデータとに共通の項目に対応する当該第１のデータの部分と当該第２のデータの部分とに所定の計算を行って得られた部分を含むデータを出力する出力部と
して機能させる、プログラム。
【請求項８】
ユーザによるデータベースへのアクセスを制御する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
第１のユーザによる第１のログインと、当該第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、
前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ又は前記第２のユーザの名義で前記データベースの参照が要求されると、当該第１のユーザがアクセス可能な当該データベースの第１のデータと、当該第２のユーザがアクセス可能な当該データベースの第２のデータとに基づく第３のデータを参照するアクセスを行うアクセス部と
して機能させ、
前記アクセス部は、前記第１のログインと前記第２のログインとを受け付けた後に、前記第１のユーザ及び前記第２のユーザのうちの一のユーザの名義で前記データベースの更新が要求されると、当該一のユーザがアクセス可能な当該データベースのデータを更新するアクセスを、当該第１のユーザ及び当該第２のユーザがログインした状態で行う、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースへのアクセスを制御する装置及び方法に関する。特に、本発明は、ユーザによるデータベースへのアクセスを制御する装置及び方法に関する。
【背景技術】
【０００２】
既存のウェブシステムは、１つのウェブブラウザから１人のユーザがログインすることを想定している。ところが、近年、プロジェクタや液晶モニタの大型化や画面の共有ツール等の進歩により、１つのウェブ画面を複数のユーザが共有して参照及び操作を行う利用形態も考えられている。例えば、プロジェクタに接続したノートＰＣに外付けＵＳＢキーボード又はマウスを接続した環境で、このような利用形態は実現される。尚、ウェブシステム以外の一般的なコンピュータシステムにおいても、同様である。
【０００３】
ここで、複数のユーザが共同でデータにアクセスする技術は、公報記載の技術としても知られている（例えば、特許文献１、２参照）。
【０００４】
特許文献１は、複数のクライアント装置が接続するサーバ装置上に、複数ユーザが同時に編集するファイルを配置し、アクセス要求があった場合には参照・編集用にファイルをコピーして編集用のファイルを作成し、サーバ装置はクライアント装置に対して、編集用ファイルの参照・編集に必要な箇所を画面表示するための情報を、画面表示に変更が発生するタイミング毎に転送し、クライアント装置は、サーバ装置に対して画面上で行なわれた編集操作に関する情報を転送することにより、常にファイルの最新状態を複数のクライアント装置間で共有可能とするファイル共有管理システムを開示する。
【０００５】
特許文献２は、記憶装置に格納されたファイルを展開するファイル展開メモリと、ファイル展開メモリに展開されたファイルにアクセスしているユーザのユーザ情報を格納するユーザ管理テーブルと、ファイル展開メモリに展開されたファイルを書き換える書換情報を受け付ける通信手段と、この書換情報に基づいてファイル展開メモリに展開されたファイルを書き換えるファイル書換手段と、書き換えられたファイルをユーザ管理テーブルに格納されているユーザ情報のユーザに対して通知する通知手段とを備えるファイルアクセスシステムを開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１４１８１４号公報
【特許文献２】特開２０００−１３２４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、１つのウェブ画面を複数ユーザで共有する場合、認証（ログイン）が必要なウェブシステムでは、従来、複数ユーザのうち何れか１人のユーザＩＤによりログインせざるを得なかった。このため、ウェブ画面上に表示されるデータは、ログイン中のユーザがアクセス可能なデータに留まっていた。仮に、他のユーザがアクセス可能なデータをウェブ画面上に表示したければ、ログイン中のユーザは一旦ログオフし、改めて他のユーザＩＤでログインする必要があった。従って、ログイン中のユーザはログインしたままの状態で他のユーザがアクセス可能なデータをウェブ画面に表示することはできないという課題があった。特に、ログイン中のユーザがアクセス可能なデータと他のユーザがアクセス可能なデータとの和集合、積集合等をウェブ画面上に表示することはできなかった。尚、ウェブシステム以外の一般的なコンピュータシステムにおいても、同様の課題は指摘できる。
【０００８】
ここで、特許文献１、２に記載されたように、複数のユーザが共同でデータにアクセスする技術は公知であったが、何れの技術も、上記課題を解決する手段を提示するものではない。
【０００９】
本発明の目的は、複数ユーザによるログインを可能にし、ログイン中のユーザが他のユーザがアクセス可能なデータベースの部分にもアクセスできるようにすることにある。
【課題を解決するための手段】
【００１０】
かかる目的のもと、本発明は、ユーザによるデータベースへのアクセスを制御する装置であって、第１のユーザによる第１のログインと、第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、第１のログインと第２のログインとを受け付けた後に、第１のユーザ又は第２のユーザの名義でデータベースの参照が要求されると、第１のユーザがアクセス可能なデータベースの第１のデータと、第２のユーザがアクセス可能なデータベースの第２のデータとに基づく第３のデータを参照するアクセスを行うアクセス部とを含む、装置を提供する。
【００１１】
ここで、この装置は、第１のログインと第２のログインとを受け付けると、第１のユーザと第２のユーザとの組み合わせを示す一時的なユーザがログインしていることを示すログイン情報を記憶する記憶部を更に備え、アクセス部は、ログイン情報に基づいて、第１のログインと第２のログインとを受け付けた後であることを認識する、ものであってよい。
【００１２】
また、この装置は、第１のログインと第２のログインとを受け付けると、第１のユーザと第２のユーザとの組み合わせを示す一時的なユーザのデータベースへのアクセス権限を示すアクセス権限情報を記憶する記憶部を更に備え、アクセス部は、アクセス権限情報に基づいて、第３のデータを特定する、ものであってよい。
【００１３】
また、アクセス部は、第１のデータ及び第２のデータの和集合又は積集合である第３のデータを参照するアクセスを行う、ものであってもよい。
【００１４】
また、第１のデータと第２のデータとに共通の項目に対応する第１のデータの部分と第２のデータの部分とに所定の計算を行って得られた第３のデータを出力する出力部を更に含む、ものであってよい。
【００１５】
また、アクセス部は、第１のログインと第２のログインとを受け付けた後に、第１のユーザ及び第２のユーザのうちの一のユーザの名義でデータベースの更新が要求されると、一のユーザがアクセス可能なデータベースのデータを更新するアクセスを、第１のユーザ及び第２のユーザがログインした状態で行う、ものであってよい。その場合、受付部は、データベースを参照する参照モードからデータベースを更新する更新モードへ切り替える切替指示を受け付け、切替指示に対する問い合わせに応答して入力された一のユーザの情報を受け付ける、ものであってよい。
【００１６】
また、本発明は、項目及び項目に対応する数値を含むデータベースのレコードへのユーザによるアクセスを制御する装置であって、第１のユーザによる第１のログインと、第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、第１のログインと第２のログインとを受け付けた後に、第１のユーザ又は第２のユーザの名義でデータベースのレコードの出力が要求されると、第１のユーザがアクセス可能な第１のレコード及び第２のユーザがアクセス可能な第２のレコードが同じ項目を含んでいれば、第１のレコード及び第２のレコードを一のレコードとし、第１のレコードに含まれる項目に対応する数値及び第２のレコードに含まれる項目に対応する数値の合算値を一のレコードに含めることにより、生成されたレコードを出力する出力部とを含む、装置も提供する。
【００１７】
更に、本発明は、ユーザによるデータベースへのアクセスを制御する方法であって、第１のユーザによる第１のログインと、第１のユーザによる第２のユーザ名義での第２のログインとを受け付けるステップと、第１のログインと第２のログインとを受け付けた後に、第１のユーザ又は第２のユーザの名義でデータベースの参照が要求されると、第１のユーザがアクセス可能なデータベースの第１のデータと、第２のユーザがアクセス可能なデータベースの第２のデータとに基づく第３のデータを参照するステップとを含む、方法も提供する。
【００１８】
更にまた、本発明は、ユーザによるデータベースへのアクセスを制御する装置として、コンピュータを機能させるプログラムであって、コンピュータを、第１のユーザによる第１のログインと、第１のユーザによる第２のユーザ名義での第２のログインとを受け付ける受付部と、第１のログインと第２のログインとを受け付けた後に、第１のユーザ又は第２のユーザの名義でデータベースの参照が要求されると、第１のユーザがアクセス可能なデータベースの第１のデータと、第２のユーザがアクセス可能なデータベースの第２のデータとに基づく第３のデータを参照するアクセスを行うアクセス部として機能させる、プログラムも提供する。
【発明の効果】
【００１９】
本発明によれば、複数ユーザによるログインが可能になり、ログイン中のユーザが他のユーザがアクセス可能なデータベースの部分にもアクセスできるようになる。
【図面の簡単な説明】
【００２０】
【図１】ログインページの例を示した図である。
【図２】単独ログイン時の検索結果ページの例を示した図である。
【図３】追加ログインページの例を示した図である。
【図４】追加ログイン時の検索結果ページの例を示した図である。
【図５】追加ログイン時の検索結果ページの例を示した図である。
【図６】本発明の実施の形態が適用されるウェブシステムの全体構成例を示した図である。
【図７】（ａ）はユーザ権限管理情報の例を示した図であり、（ｂ）は権限内容管理情報の例を示した図であり、（ｃ）はユーザ状態管理情報の例を示した図である。
【図８】ユーザＡが単独でログインした状態で情報を検索する際のウェブシステムの動作例を示したシーケンス図である。
【図９】ユーザＢが追加でログインした状態で情報を検索する際のウェブシステムの動作例を示したシーケンス図である。
【図１０】ユーザＡ，Ｂがログインした状態で情報を更新する際のウェブシステムの動作例を示したシーケンス図である。
【図１１】（ａ）はユーザ権限管理情報の他の例を示した図であり、（ｂ）は権限内容管理情報の他の例を示した図であり、（ｃ）はユーザ状態管理情報の他の例を示した図である。
【図１２】本発明の実施の形態を適用可能なコンピュータのハードウェア構成例を示した図である。
【発明を実施するための形態】
【００２１】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
【００２２】
［本実施の形態の概要］
従来、複数のユーザが１つのウェブ画面を共同で利用可能なウェブシステムは存在していなかった。換言すれば、複数のユーザが１つのセッションで共同で利用可能なウェブシステムは存在していなかった。ウェブブラウザからＤＢ（データベース）までの間で１つのセッション内の複数のユーザのログイン状態を保持する仕組みがなかったからである。
【００２３】
そこで、本実施の形態では、複数ユーザが１つのセッションで共同でウェブシステムを利用可能とする。まず、その場合のユースケースシナリオ及び表示されるウェブページ（以下、単に「ページ」という）のイメージについて説明する。
【００２４】
ここでは、ユースケースシナリオとして、最近結婚したＴｏｍとＭａｒｙが証券会社のウェブアプリケーションを利用する場合を想定する。ＴｏｍとＭａｒｙは、結婚前からこの証券会社のウェブアプリケーションを利用しているため、別々のユーザＩＤを持っているものとする。また、結婚後も自分の口座は自分で管理するため、そのまま別々のユーザＩＤを持ち続けることを考えている。しかしながら、ＴｏｍとＭａｒｙは、家計としてのポートフォリオ（各株式保有数）も参照したいと考えているものとする。
【００２５】
図１は、ログインページの例を示した図である。ここでは、Ｔｏｍが単独でログインする時の状態を示している。
【００２６】
図２は、Ｔｏｍが単独でログインした場合の検索結果ページの例を示した図である。ここでは、Ｔｏｍのポートフォリオのみが表示されている。また、このページには、ファミリーログインボタン１２も表示されている。ファミリーログインボタン１２は、ページ上に記述している通り、家族のポートフォリオを合わせて表示する場合に押下するボタンである。
【００２７】
図３は、追加ログインページの例を示した図である。図２でファミリーログインボタン１２を押下すると、この追加ログインページが表示される。ここでは、Ｍａｒｙが追加でログインする時の状態を示している。
【００２８】
図４及び図５は、Ｍａｒｙが追加でログインした場合の検索結果ページの例を示した図である。この場合、Ｔｏｍ及びＭａｒｙが同時にログインしていることになるので、この２人分のポートフォリオが表示されている。このうち、図４では、個別ポートフォリオタブ１３を選択することにより、ＴｏｍのポートフォリオとＭａｒｙのポートフォリオとが別々に表示されている。しかしながら、これでは、ポートフォリオを家計としても管理したいと考える場合に若干不便である。そこで、図５では、ファミリー合算タブ１４を選択することにより、２人が共に持っている銘柄の評価額が合算して表示されている。具体的には、行１５に示すように、Ｂ社の評価額は、Ｔｏｍの５１００００とＭａｒｙの２５５０００とを合算して７６５０００となっている。また、行１６に示すように、Ｃ社の評価額は、Ｔｏｍの１８００とＭａｒｙの１８０００とを合算して１９８００となっている。本実施の形態では、項目の一例として、Ｂ社及びＣ社を用いており、項目に対応する数値の一例として、Ｂ社の評価額及びＣ社の評価額を用いている。
【００２９】
尚、このユースケースシナリオでは、ＤＢを参照する場合についてのみ述べたが、ＤＢを更新する場合も考えられる。例えば、保有している株を売買するような場合である。このようなＤＢの更新は、参照モードから更新モードへ移行することにより実現できるが、ここでは、更新モードにおけるシナリオについては省略する。
【００３０】
［ウェブシステムの全体構成］
図６は、このような概略動作を実現するためのウェブシステムの全体構成例を示した図である。図示するように、このウェブシステムは、クライアント１０と、アプリケーションサーバ２０と、ＤＢサーバ３０と、ユーザ情報サーバ４０とを含む。そして、クライアント１０とアプリケーションサーバ２０とは、インターネット等の通信回線（図示せず）で接続されており、アプリケーションサーバ２０とＤＢサーバ３０とユーザ情報サーバ４０とは、ＬＡＮ（Local Area Network）等の通信回線（図示せず）で接続されているものとする。尚、図には、１台のクライアント１０しか示していないが、２台以上のクライアント１０を設けてもよい。
【００３１】
クライアント１０は、ユーザがアプリケーションサーバ２０によるサービスを利用する際に用いるコンピュータ装置である。クライアント１０には、ウェブブラウザ１１がインストールされている。ウェブブラウザ１１は、ユーザの操作に応じてＨＴＴＰリクエストをアプリケーションサーバ２０に送信し、これに対する応答であるＨＴＴＰレスポンスをアプリケーションサーバ２０から受信する。ここで、クライアント１０としては、デスクトップＰＣ（Personal Computer）、ノートＰＣ、タブレットＰＣ、ウェアラブルコンピュータ、ＰＤＡ（Personal Digital Assistants）、スマートフォン、携帯電話等を用いるとよい。
【００３２】
アプリケーションサーバ２０は、ＤＢサーバ３０と連携して、クライアント１０にサービスを提供するコンピュータ装置である。ここで、アプリケーションサーバ２０としては、デスクトップＰＣ（Personal Computer）等を用いるとよい。アプリケーションサーバ２０は、ウェブアプリケーション２１と、ウェブコンテナ２２と、ＤＢアクセス部２３とを含む。
【００３３】
ウェブアプリケーション２１は、複数のユーザがログインするためのユーザインターフェースを保持している。そして、ウェブコンテナ２２により呼び出されてユーザインターフェースを要求されると、ユーザインターフェースを含むアプリケーション実行結果をウェブコンテナ２２に返す。また、ウェブアプリケーション２１は、ウェブコンテナ２２により呼び出されてＤＢアクセスを要求されると、ＤＢアクセス部２３にＤＢアクセスを依頼する。これに応答して、ＤＢアクセス結果をＤＢアクセス部２３から受け取ると、ＤＢアクセス結果に基づくアプリケーション実行結果をウェブコンテナ２２に返す。本実施の形態では、データを出力する出力部の一例として、ウェブアプリケーション２１を設けている。
【００３４】
ウェブコンテナ２２は、ウェブブラウザ１１からＨＴＴＰリクエストを受信すると、ＨＴＴＰリクエストに基づく要求をウェブアプリケーション２１に対して行う。特に、ＨＴＴＰリクエストがユーザＩＤ及びパスワードを含むログインを要求するものであれば、そのユーザＩＤ及びパスワードが正当であるかをユーザ情報サーバ４０に照会する。ユーザ情報サーバ４０からの照会結果が、ユーザＩＤ及びパスワードが正当であることを示していれば、このユーザＩＤとその他の値とを用いてハッシュ関数等で新たなクッキー値を生成し、新たなクッキー値とユーザＩＤとを関連付ける。具体的には、クッキー値とユーザＩＤとの対応を含むクッキー値ユーザＩＤ対応情報（以下、単に「対応情報」という）に新たなクッキー値とユーザＩＤとの対応を含める。その際、ＨＴＴＰリクエストに既に認証済みのクッキーが含まれていれば、この認証済みのクッキーのクッキー値に対応情報で対応付けられたユーザＩＤを特定し、新たなクッキー値を生成するときにはこのユーザＩＤも用い、新たなクッキー値とこのユーザＩＤとの対応も対応情報に含める。また、ウェブコンテナ２２は、アプリケーション実行結果をウェブアプリケーション２１から受け取ると、その実行結果を含むＨＴＴＰレスポンスをウェブブラウザ１１に送信する。本実施の形態では、ユーザによるログインを受け付ける受付部の一例として、ウェブコンテナ２２を設けている。
【００３５】
ＤＢアクセス部２３は、ウェブアプリケーション２１からＤＢアクセスを依頼されると、このＤＢアクセスに応じたＳＱＬコマンドをＤＢサーバ３０に送信する。特に、複数のユーザが同時にログインした状態でＤＢにアクセスするためのＳＱＬ拡張コマンドをＤＢサーバ３０に送信する。また、ＳＱＬコマンドの実行結果であるＳＱＬ実行結果をＤＢサーバ３０から受信すると、ＳＱＬ実行結果に基づくＤＢアクセス結果をウェブアプリケーション２１に返す。
【００３６】
ＤＢサーバ３０は、ＤＢを含み、アプリケーションサーバ２０がサービスを提供する際に用いるデータをＤＢから読み出して提供するコンピュータ装置である。ここで、ＤＢサーバ３０としては、デスクトップＰＣ等を用いるとよい。ＤＢサーバ３０は、ＳＱＬ解釈部３１と、ＳＱＬ実行部３２と、ユーザ状態管理部３３と、ユーザ権限管理部３４と、管理情報記憶部３５とを含む。
【００３７】
ＳＱＬ解釈部３１は、アプリケーションサーバ２０からＳＱＬコマンドを受信すると、このＳＱＬコマンドの実行をＳＱＬ実行部３２に指示する。特に、複数のユーザが同時にログインした状態でＤＢにアクセスするためのＳＱＬ拡張コマンドをアプリケーションサーバ２０から受信すると、このＳＱＬ拡張コマンドの実行をユーザ状態管理部３３及びユーザ権限管理部３４に指示する。また、ＳＱＬコマンドの実行結果であるＳＱＬ実行結果をＳＱＬ実行部３２から受け取ると、ＳＱＬ実行結果をアプリケーションサーバ２０に送信する。
【００３８】
ＳＱＬ実行部３２は、ＳＱＬ解釈部３１が受信したＳＱＬコマンドを実行することにより、ＤＢの参照又は更新を行う。その際、管理情報記憶部３５に記憶されたユーザ状態管理情報に基づいてログイン中のユーザを特定し、管理情報記憶部３５に記憶されたユーザ権限管理情報及び権限内容管理情報に基づいてそのユーザのアクセス権限を特定し、そのアクセス権限に基づいてＳＱＬコマンドを実行する。本実施の形態では、データを参照するアクセス又はデータを更新するアクセスを行うアクセス部の一例として、ＳＱＬ実行部３２を設けている。
【００３９】
ユーザ状態管理部３３は、ＳＱＬ解釈部３１が受信したＳＱＬ拡張コマンドに基づいて、管理情報記憶部３５に記憶されたユーザ状態管理情報でユーザの状態遷移を管理する。具体的には、複数のユーザが同時にログインしている場合に仮想的にログインしているとされる一時的なユーザ（以下、「一時ユーザ」という）のログイン状態を管理する。また、ＤＢアクセス時の参照モード及び更新モードの切り替えを行う。更に、更新モードにおける操作ユーザを特定し、操作ユーザ以外のユーザのログイン状態を保持する。
【００４０】
ユーザ権限管理部３４は、一時ユーザのアクセス権限を、管理情報記憶部３５に記憶されたユーザ権限管理情報及び権限内容管理情報で管理されるログイン中の複数のユーザのアクセス権限に基づいて特定し、管理情報記憶部３５に記憶されたユーザ権限管理情報及び権限内容管理情報で管理する。
【００４１】
管理情報記憶部３５は、上述したユーザ権限管理情報、権限内容管理情報及びユーザ状態管理情報を記憶する。各管理情報については後述する。本実施の形態では、アクセス権限情報の一例として、ユーザ権限管理情報及び権限内容管理情報を用いており、ログイン情報の一例として、ユーザ状態管理情報を用いている。また、アクセス権限情報又はログイン情報を記憶する記憶部の一例として、管理情報記憶部３５を設けている。
【００４２】
ユーザ情報サーバ４０は、アプリケーションサーバ２０又はＤＢサーバ３０にユーザ情報（ユーザＩＤ及びパスワード）を提供するコンピュータ装置である。具体的には、アプリケーションサーバ２０からユーザＩＤ及びパスワードが正当であるかを照会されると、このユーザＩＤ及びパスワードを保持していれば、ユーザＩＤ及びパスワードが正当であることを示す照会結果を返す。また、ＤＢサーバ３０からユーザＩＤ及びパスワードが正当であるかを照会されると、このユーザＩＤ及びパスワードを保持していれば、ユーザＩＤ及びパスワードが正当であることを示す照会結果を返す。その際、ユーザＩＤ及びパスワードが正当であるかの照会は、ＬＤＡＰ（Lightweight Directory Access Protocol）等のプロトコルを用いて行えばよい。ここで、ユーザ情報サーバ４０としては、デスクトップＰＣ等を用いるとよい。
【００４３】
図７（ａ）〜（ｃ）は、ＤＢサーバ３０の管理情報記憶部３５に記憶された各管理情報の例を示した図である。ここで、各管理情報は、図１〜図５のユースケースシナリオに対応したものとなっている。例えば、ユーザＡはＴｏｍに対応し、ユーザＢはＭａｒｙに対応している。
【００４４】
図７（ａ）は、ユーザ権限管理情報の例を示す。図示するように、ユーザ権限管理情報は、テーブルＩＤと、ユーザＩＤと、権限ＩＤと、参照可否と、更新可否とを含む。
【００４５】
テーブルＩＤは、ＤＢがＲＤＢ（Relational DataBase）である場合におけるテーブルの識別情報である。厳密には、図１〜図５のユースケースシナリオでＴｏｍのポートフォリオ及びＭａｒｙのポートフォリオが１つのテーブルで管理されることは殆どあり得ないが、ここでは便宜上全てのテーブルＩＤを「Ｔ１」としている。
【００４６】
ユーザＩＤは、ユーザの識別情報である。ここでは、ユーザＡのユーザＩＤ「ａ」及びユーザＢのユーザＩＤ「ｂ」に加え、一時ユーザのユーザ「ａｂ」が記憶されている。本実施の形態では、第１のユーザの一例として、ユーザＡを用いており、第２のユーザの一例として、ユーザＢを用いており、第１のユーザと第２のユーザとの組み合わせを示す一時的なユーザの一例として、一時ユーザを用いている。
【００４７】
権限ＩＤは、アクセス権限の識別情報である。ここでは権限ＩＤのみが記憶されているが、権限の内容としては、図７（ｂ）で権限ＩＤに対応付けられたアクセス可能範囲が参照される。
【００４８】
参照可否は、対応するユーザＩＤのユーザが、対応するテーブルＩＤのテーブルの権限ＩＤで示されるアクセス可能範囲を参照できるかどうかを示す情報である。「Ｙ」が参照できることを示し、「Ｎ」が参照できないことを示す。
【００４９】
更新可否は、対応するユーザＩＤのユーザが、対応するテーブルＩＤのテーブルの権限ＩＤで示されるアクセス可能範囲を更新できるかどうかを示す情報である。「Ｙ」が参照できることを示し、「Ｎ」が参照できないことを示す。
【００５０】
図７（ｂ）は、権限内容管理情報の例を示す。図示するように、権限内容管理情報は、権限ＩＤと、アクセス可能範囲とを含む。
【００５１】
権限ＩＤは、上述したように、アクセス権限の識別情報である。
【００５２】
アクセス可能範囲は、対応する権限ＩＤに図７（ａ）で対応付けられたテーブルＩＤのテーブルのアクセス可能な範囲を行番号で示した情報である。厳密には、図１〜図５のユースケースシナリオでＴｏｍのポートフォリオ及びＭａｒｙのポートフォリオが隣り合う行で管理されることは殆どあり得ないが、ここでは便宜上、ｒｏｗ＃１，＃２，＃３，＃４をＴｏｍのＡ社、Ｂ社、Ｃ社、Ｄ社の情報、ｒｏｗ＃５，＃６，＃７をＭａｒｙのＢ社、Ｃ社、Ｅ社の情報としている。また、権限ＩＤ「Ｐ１２」に対するアクセス可能範囲も、図１〜図５のユースケースシナリオに合わせて、権限ＩＤ「Ｐ１」に対するアクセス可能範囲と、権限ＩＤ「Ｐ２」に対するアクセス可能範囲との和集合であるｒｏｗ＃１−７としている。但し、想定するアプリケーションによっては、これ以外のアクセス可能範囲も考えられる。例えば、公開範囲に制限がかけられた社内の掲示板等のアプリケーションにおいては、権限ＩＤ「Ｐ１２」に対するアクセス可能範囲を、権限ＩＤ「Ｐ１」に対するアクセス可能範囲と、権限ＩＤ「Ｐ２」に対するアクセス可能範囲との積集合としてもよい。或いは、より一般化して、権限ＩＤ「Ｐ１２」に対するアクセス可能範囲を、権限ＩＤ「Ｐ１」に対するアクセス可能範囲と、権限ＩＤ「Ｐ２」に対するアクセス可能範囲とに所定の計算を行って得られた範囲としてもよい。また、更に一般化して、権限ＩＤ「Ｐ１２」に対するアクセス可能範囲を、権限ＩＤ「Ｐ１」に対するアクセス可能範囲と、権限ＩＤ「Ｐ２」に対するアクセス可能範囲とに基づく範囲としてもよい。本実施の形態では、第１のデータの一例として、ｒｏｗ＃１−４を用いており、第２のデータの一例として、ｒｏｗ＃５−７を用いており、第１のデータと第２のデータとに基づく第３のデータの一例として、ｒｏｗ＃１−７を用いている。
【００５３】
図７（ｃ）は、ユーザ状態管理情報の例を示す。図示するように、ユーザ状態管理情報は、ユーザＩＤと、接続中フラグと、全員フラグとを含む。
【００５４】
ユーザＩＤは、上述したように、ユーザの識別情報である。
【００５５】
接続中フラグは、対応するユーザＩＤのユーザが、ＤＢに接続中であるかどうかを示すフラグである。このフラグは、ＤＢに接続中であるときに「１」となり、ＤＢに接続中ではないときに「０」となる。
【００５６】
全員フラグは、対応するユーザＩＤのユーザが、現在ログイン中の複数のユーザの全員から構成されるかどうかを示すフラグである。このフラグは、現在ログイン中の複数のユーザの全員から構成されるときに「１」となり、現在ログイン中の複数のユーザの全員から構成されるわけではないときに「０」となる。
【００５７】
［本実施の形態におけるウェブシステムの動作］
図８は、ユーザＡが単独でログインした状態で情報を検索する際のウェブシステムの動作例を示したシーケンス図である。ここで、この動作例も、図１〜図５のユースケースシナリオに対応したものとなっており、ユーザＡはＴｏｍに対応している。
【００５８】
まず、ユーザＡがログインページを要求する操作を行ったとすると、クライアント１０は、ログインページを要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出してログインページを要求する（ステップ１０１）。すると、ウェブアプリケーション２１は、ログインページをウェブコンテナ２２に送り、ウェブコンテナ２２は、ログインページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ１０２）。これにより、図１のログインページがクライアント１０に表示される。但し、この時点では、ユーザＩＤ及びパスワードは入力されていない。
【００５９】
次に、ユーザＡがログインページ上でユーザＩＤ「ａ」及びパスワード「ｘ」を用いてログインを行ったとすると、クライアント１０は、その旨を示すＨＴＴＰリクエストをウェブコンテナ２２に送信する（ステップ１１１）。すると、ウェブコンテナ２２は、ユーザ情報サーバ４０に対して、ユーザＩＤ「ａ」及びパスワード「ｘ」の認証チェックを要求する（ステップ１１２）。そして、ユーザ情報サーバ４０が認証チェックに成功した旨をウェブコンテナ２２に返すと、ウェブコンテナ２２は、その旨を受け取り（ステップ１１３）、ウェブアプリケーション２１にログイン成功を伝える（ステップ１１４）。すると、ウェブアプリケーション２１は、トップページをウェブコンテナ２２に送り、ウェブコンテナ２２は、トップページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ１１５）。その際、ウェブコンテナ２２は、クッキー値とユーザＩＤ「ａ」との対応を含む対応情報を記憶し、このクッキー値を有するクッキーをクライアント１０に送信する。
【００６０】
次いで、ユーザＡがデータ検索を要求する操作を行ったとすると、クライアント１０は、データ検索を要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出してデータ検索を要求する（ステップ１２１）。その際、クライアント１０は、ステップ１１５で送られたクッキーをウェブコンテナ２２に送信し、ウェブコンテナ２２は、このクッキーのクッキー値に対応情報で対応付けられたユーザＩＤ「ａ」を保持しておく。
【００６１】
これにより、ウェブアプリケーション２１は、ＤＢサーバ３０に接続する。但し、本実施の形態において、ウェブアプリケーション２１は、ＤＢサーバ３０にアプリケーションとして接続する際のユーザである代表ユーザでＤＢサーバ３０に接続した後、ウェブアプリケーション２１にログインしたユーザでＤＢサーバ３０に接続するようにユーザを切り替えるものとする。
【００６２】
即ち、ウェブアプリケーション２１は、代表ユーザのユーザＩＤ「ｐ」及びこれに対応するパスワード「ｑ」を用いてＤＢサーバ３０に接続するようにＤＢアクセス部２３に依頼する（ステップ１２２）。すると、ＤＢアクセス部２３は、ユーザＩＤ「ｐ」及びパスワード「ｑ」を用いて接続するＳＱＬコマンドをＤＢサーバ３０に送信する（ステップ１２３）。これにより、ＤＢサーバ３０は、代表ユーザを接続する。その際、ＤＢサーバ３０は、ユーザ情報サーバ４０に対して、ユーザＩＤ「ｐ」及びパスワード「ｑ」の認証チェックを要求する（ステップ１２４）。そして、ユーザ情報サーバ４０が認証チェックに成功した旨をＤＢサーバ３０に返すと、ＤＢサーバ３０は、その旨を受け取る（ステップ１２５）。ＤＢサーバ３０は、代表ユーザの接続が正常に終了すると、接続が成功した旨をＤＢアクセス部２３に送信し、ＤＢアクセス部２３は、その旨をウェブアプリケーション２１に伝える（ステップ１２６）。
【００６３】
また、ウェブアプリケーション２１は、ユーザＩＤ「ａ」及びパスワード「ｘ」を用いてＤＢサーバ３０に接続するようにＤＢアクセス部２３に依頼する（ステップ１３１）。ここで、ユーザＩＤ「ａ」としては、ステップ１２１でウェブコンテナ２２が保持しておいたものを受け取って用いればよい。また、パスワード「ｘ」としては、ステップ１１３でウェブコンテナ２２がクッキー値に関連付け、ステップ１２１でウェブコンテナ２２が受信したクッキーのクッキー値に基づいて取得したものを受け取って用いればよい。或いは、ウェブコンテナ２２がユーザ情報サーバ４０に改めて問い合わせることにより取得したものを受け取って用いてもよい。すると、ＤＢアクセス部２３は、ユーザＩＤ「ａ」及びパスワード「ｘ」を用いて接続ユーザをユーザＡに切り替えるＳＱＬコマンドをＤＢサーバ３０に送信する（ステップ１３２）。これにより、ＤＢサーバ３０は、接続ユーザをユーザＡに切り替える。その際、ＤＢサーバ３０は、ユーザ情報サーバ４０に対して、ユーザＩＤ「ａ」及びパスワード「ｘ」の認証チェックを要求する（ステップ１３３）。そして、ユーザ情報サーバ４０が認証チェックに成功した旨をＤＢサーバ３０に返すと、ＤＢサーバ３０は、その旨を受け取る（ステップ１３４）。ＤＢサーバ３０は、接続ユーザのユーザＡへの切り替えが正常に終了すると、切り替えが成功した旨をＤＢアクセス部２３に送信し、ＤＢアクセス部２３は、その旨をウェブアプリケーション２１に伝える（ステップ１３５）。
【００６４】
その後、ウェブアプリケーション２１は、テーブルＴ１を検索するクエリーの実行をＤＢアクセス部２３に依頼する（ステップ１４１）。すると、ＤＢアクセス部２３は、テーブルＴ１を検索するＳＱＬコマンドをＤＢサーバ３０に送信する（ステップ１４２）。そして、ＤＢサーバ３０が、検索結果をＤＢアクセス部２３に返すと、ＤＢアクセス部２３は、検索結果をウェブアプリケーション２１に返す（ステップ１４３）。また、ウェブアプリケーション２１は、検索結果ページをウェブコンテナ２２に伝え、ウェブコンテナ２２は、検索結果ページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ１４４）。これにより、図２の検索結果ページがクライアント１０に表示される。
【００６５】
図９は、ユーザＢが追加でログインした状態で情報を検索する際のウェブシステムの動作例を示したシーケンス図である。ここで、この動作例も、図１〜図５のユースケースシナリオに対応したものとなっており、ユーザＡはＴｏｍに、ユーザＢはＭａｒｙにそれぞれ対応している。ユーザＢは、第２のユーザの一例である。
【００６６】
まず、ユーザＡが追加ログインページを要求する操作を行ったとすると、クライアント１０は、追加ログインページを要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出して追加ログインページを要求する（ステップ２０１）。すると、ウェブアプリケーション２１は、追加ログインページをウェブコンテナ２２に送り、ウェブコンテナ２２は、追加ログインページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ２０２）。これにより、図３の追加ログインページがクライアント１０に表示される。但し、この時点では、ユーザＩＤ及びパスワードは入力されていない。
【００６７】
次に、ユーザＡが追加ログインページ上でユーザＩＤ「ｂ」及びパスワード「ｙ」を用いてユーザＢの追加ログインを行ったとすると、クライアント１０は、その旨を示すＨＴＴＰリクエストをウェブコンテナ２２に送信する（ステップ２１１）。その際、クライアント１０は、図８のステップ１１５で送られたクッキーをウェブコンテナ２２に送信し、ウェブコンテナ２２は、このクッキーのクッキー値を保持しておく。すると、ウェブコンテナ２２は、ユーザ情報サーバ４０に対して、ユーザＩＤ「ｂ」及びパスワード「ｙ」の認証チェックを要求する（ステップ２１２）。そして、ユーザ情報サーバ４０が認証チェックに成功した旨をウェブコンテナ２２に返すと、ウェブコンテナ２２は、その旨を受け取り（ステップ２１３）、クライアント１０にログイン成功を伝える（ステップ２１４）。その際、ウェブコンテナ２２は、ステップ２１１で保持しておいたクッキー値に対応情報で対応付けられたユーザＩＤ「ａ」と、ステップ２１３で認証チェックに成功したユーザＩＤ「ｂ」とから、新たにクッキー値を生成する。そして、この新たなクッキー値と、ユーザＩＤ「ａ」、「ｂ」との対応を対応情報に含める。その後、ウェブコンテナ２２は、このクッキー値を有するクッキーをクライアント１０に送信する。
【００６８】
次いで、ユーザＡがデータ検索を要求する操作を行ったとすると、クライアント１０は、データ検索を要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出してデータ検索を要求する（ステップ２２１）。その際、クライアント１０は、ステップ２１４で送られたクッキーをウェブコンテナ２２に送信し、ウェブコンテナ２２は、このクッキーのクッキー値に対応情報で対応付けられたユーザＩＤ「ａ」、「ｂ」を保持しておく。これにより、ウェブアプリケーション２１は、ユーザＩＤ「ｂ」及びパスワード「ｙ」を用いてユーザＢを追加で接続するようにＤＢアクセス部２３に依頼する（ステップ２２２）。ここで、ユーザＢを追加で接続すべきことは、ステップ２２１でウェブコンテナ２２が保持しておいたユーザＩＤ「ａ」、「ｂ」を受け取り、これと既に自身がログイン状態を保持しているユーザのユーザＩＤ「ａ」とを比較することにより分かる。また、パスワード「ｙ」としては、ステップ２１３でウェブコンテナ２２がクッキー値に関連付け、ステップ２２１でウェブコンテナ２２が受信したクッキーのクッキー値に基づいて取得したものを受け取って用いればよい。或いは、ウェブコンテナ２２がユーザ情報サーバ４０に改めて問い合わせることにより取得したものを受け取って用いてもよい。すると、ＤＢアクセス部２３は、ユーザＩＤ「ｂ」及びパスワード「ｙ」を用いてユーザを追加するＳＱＬコマンド「ａｄｄＵｓｅｒ（ｂ，ｙ）」をＤＢサーバ３０に送信する（ステップ２２３）。これにより、ＤＢサーバ３０は、ユーザＢを追加で接続する。その際、ＤＢサーバ３０は、ユーザ情報サーバ４０に対して、ユーザＩＤ「ｂ」及びパスワード「ｙ」の認証チェックを要求する（ステップ２２４）。そして、ユーザ情報サーバ４０が認証チェックに成功した旨をＤＢサーバ３０に返すと、ＤＢサーバ３０は、その旨を受け取る（ステップ２２５）。ＤＢサーバ３０は、ユーザＢの追加の接続が正常に終了すると、ユーザの追加が成功した旨をＤＢアクセス部２３に送信し、ＤＢアクセス部２３は、その旨をウェブアプリケーション２１に伝える（ステップ２２６）。
【００６９】
ところで、ＤＢサーバ３０は、ステップ２２３でＳＱＬコマンドを受信してからステップ２２６でユーザの追加が成功した旨を送信するまでの間に、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、ＳＱＬコマンド「ａｄｄＵｓｅｒ（ｂ，ｙ）」を受信する。すると、ユーザ状態管理部３３及びユーザ権限管理部３４が、その時点で接続中のユーザＡと追加が指示されたユーザＢとから構成されるユーザＩＤ「ａｂ」の一時ユーザに関する情報を管理情報記憶部３５に記憶する。具体的には、管理情報記憶部３５に記憶されたユーザ権限管理情報は、最初、図７（ａ）の１行目及び２行目のみを含むものであるが、ユーザ権限管理部３４が、これに図７（ａ）の３行目を追加する。また、管理情報記憶部３５に記憶された権限内容管理情報は、最初、図７（ｂ）の１行目及び２行目のみを含むものであるが、ユーザ権限管理部３４が、これに図７（ｂ）の３行目を追加する。その際、ユーザ権限管理部３４は、３行目のアクセス可能範囲を１行目及び２行目のアクセス可能範囲の和集合とするか積集合とするかをパラメータで指定してもよい。更に、管理情報記憶部３５に記憶されたユーザ状態管理情報は、最初、図７（ｃ）の１行目及び２行目のみを含むものであるが、ユーザ状態管理部３３が、これに図７（ｃ）の３行目を追加する。尚、このような動作の中で、ステップ２２４でのユーザＩＤ「ｂ」及びパスワード「ｙ」の認証チェックの要求、及び、ステップ２２５での認証チェックに成功した旨の受信は、ＳＱＬ解釈部３１がＳＱＬコマンド「ａｄｄＵｓｅｒ（ｂ，ｙ）」を受信した直後に行うのが望ましい。
【００７０】
その後、ウェブアプリケーション２１は、テーブルＴ１を検索するクエリーの実行をＤＢアクセス部２３に依頼する（ステップ２３１）。すると、ＤＢアクセス部２３は、テーブルＴ１を検索するＳＱＬコマンドをＤＢサーバ３０に送信する（ステップ２３２）。そして、ＤＢサーバ３０が、検索結果をＤＢアクセス部２３に返すと、ＤＢアクセス部２３は、検索結果をウェブアプリケーション２１に返す（ステップ２３３）。
【００７１】
ところで、ＤＢサーバ３０は、ステップ２３２でＳＱＬコマンドを受信してからステップ２３３で検索結果を返すまでの間に、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、テーブルＴ１を検索するＳＱＬコマンドを受信する。次に、ＳＱＬ実行部３２が、管理情報記憶部３５に記憶されたユーザ状態管理情報で接続中フラグ「１」に対応付けられたユーザＩＤ「ａｂ」を特定する。そして、管理情報記憶部３５に記憶されたユーザ権限管理情報でユーザＩＤ「ａｂ」に対応付けられた権限ＩＤ「Ｐ１２」を特定し、管理情報記憶部３５に記憶された権限内容管理情報で権限ＩＤ「Ｐ１２」に対応付けられたアクセス可能範囲「ｒｏｗ＃１−７」を特定する。次いで、ＳＱＬ解釈部３１が、テーブルＴ１のｒｏｗ＃１−７を検索結果としてＤＢアクセス部２３に返す。
【００７２】
その後、ウェブアプリケーション２１は、検索結果ページをウェブコンテナ２２に伝え、ウェブコンテナ２２は、検索結果ページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ２３４）。これにより、図４又は図５の検索結果ページがクライアント１０に表示される。
【００７３】
尚、この動作例では、先にログインしたユーザＡが、ユーザＢの追加ログインを行った後、ユーザＢの名義でデータ検索を要求するようにしたが、これには限らない。ユーザＡが、ユーザＢの追加ログインを行った後、自身の名義でデータ検索を要求するようにしてもよい。
【００７４】
図１０は、ユーザＡ，Ｂがログインした状態で情報を更新する際のウェブシステムの動作例を示したシーケンス図である。ここで、この動作例も、図１〜図５のユースケースシナリオに対応したものとなっており、ユーザＡはＴｏｍに、ユーザＢはＭａｒｙにそれぞれ対応している。また、この動作例では、ユーザＡ，Ｂがログインした状態であっても、参照モードを更新モードに変更し、何れかのユーザを更新モードにおける操作ユーザとして、その操作ユーザのみが更新操作を行えるものとする。ここでは、ユーザＡを更新モードにおける操作ユーザであるものとして説明する。尚、クライアント１０は保持しているクッキーを全てのＨＴＴＰリクエストに付加して送信するが、この動作例ではアプリケーションサーバ２０側でクッキーを使用しないので、シーケンス図においてクッキーは省略している。
【００７５】
まず、ユーザＡが更新モードにおける操作ユーザのユーザＩＤを入力するためのユーザＩＤ入力ページを要求する操作を行ったとすると、クライアント１０は、ユーザＩＤ入力ページを要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出してユーザＩＤ入力ページを要求する（ステップ３０１）。すると、ウェブアプリケーション２１は、ユーザＩＤ入力ページをウェブコンテナ２２に送り、ウェブコンテナ２２は、ユーザＩＤ入力ページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ３０２）。
【００７６】
次に、ユーザＡがユーザＩＤ入力ページにユーザＩＤ「ａ」を入力することにより更新モードへの変更を要求する操作を行ったとすると、クライアント１０は、更新モードへの変更を要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出して更新モードへの変更を要求する（ステップ３１１）。その際、ウェブアプリケーション２１は、ユーザＩＤ入力ページに入力されたユーザＩＤ「ａ」を保持しておく。すると、ウェブアプリケーション２１は、更新モードへの変更が成功した旨をウェブコンテナ２２に送り、ウェブコンテナ２２は、その旨を示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ３１２）。
【００７７】
次いで、ユーザＡがデータ更新を要求する操作を行ったとすると、クライアント１０は、データ更新を要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出してデータ更新を要求する（ステップ３２１）。これにより、ウェブアプリケーション２１は、ユーザＩＤ「ａ」を用いて操作ユーザを特定するようにＤＢアクセス部２３に依頼する（ステップ３２２）。ここで、ユーザＩＤ「ａ」としては、ステップ３１１で保持しておいたものを用いればよい。すると、ＤＢアクセス部２３は、ユーザＩＤ「ａ」を用いて操作ユーザを特定するＳＱＬコマンド「ｓｐｅｃｉｆｙＵｓｅｒ（ａ）」をＤＢサーバ３０に送信する（ステップ３２３）。これにより、ＤＢサーバ３０は、操作ユーザを特定する。ＤＢサーバ３０は、操作ユーザの特定が正常に終了すると、操作ユーザの特定が成功した旨をＤＢアクセス部２３に送信し、ＤＢアクセス部２３は、その旨をウェブアプリケーション２１に伝える（ステップ３２４）。
【００７８】
ところで、ＤＢサーバ３０は、ステップ３２３でＳＱＬコマンドを受信してからステップ３２４で操作ユーザの特定が成功した旨を送信するまでの間に、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、ＳＱＬコマンド「ｓｐｅｃｉｆｙＵｓｅｒ（ａ）」を受信する。すると、ユーザ状態管理部３３が、接続中のユーザをユーザＡ，ＢからユーザＡに変更する。具体的には、管理情報記憶部３５に記憶されたユーザ状態管理情報は、最初、図７（ｃ）に示したものであるが、ユーザＩＤ「ａ」に対して接続中フラグ「１」が記憶されたものとする。
【００７９】
その後、ウェブアプリケーション２１は、テーブルＴ１を更新するクエリーの実行をＤＢアクセス部２３に依頼する（ステップ３３１）。すると、ＤＢアクセス部２３は、テーブルＴ１を更新するＳＱＬコマンドをＤＢサーバ３０に送信する（ステップ３３２）。そして、ＤＢサーバ３０が、更新結果をＤＢアクセス部２３に返すと、ＤＢアクセス部２３は、更新結果をウェブアプリケーション２１に返す（ステップ３３３）。
【００８０】
ところで、ＤＢサーバ３０は、ステップ３３２でＳＱＬコマンドを受信してからステップ３３３で更新結果を返すまでの間に、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、テーブルＴ１を更新するＳＱＬコマンドを受信する。次に、ＳＱＬ実行部３２が、管理情報記憶部３５に記憶されたユーザ状態管理情報で接続中フラグ「１」に対応付けられたユーザＩＤ「ａ」を特定する。そして、管理情報記憶部３５に記憶されたユーザ権限管理情報でユーザＩＤ「ａ」に対応付けられた権限ＩＤ「Ｐ１」を特定し、管理情報記憶部３５に記憶された権限内容管理情報で権限ＩＤ「Ｐ１」に対応付けられたアクセス可能範囲「ｒｏｗ＃１−５」を特定し、このアクセス可能範囲を更新する。次いで、ＳＱＬ解釈部３１が、テーブルＴ１のｒｏｗ＃１−５の更新結果をＤＢアクセス部２３に返す。
【００８１】
その後、ウェブアプリケーション２１は、更新結果ページをウェブコンテナ２２に伝え、ウェブコンテナ２２は、更新結果ページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ３３４）。
【００８２】
このように更新が行われた後、ユーザＡは再び、ユーザＡ，Ｂがログインした状態に戻すとする。その場合、ユーザＡが参照モードへの変更を要求する操作を行ったとすると、クライアント１０は、参照モードへの変更を要求するＨＴＴＰリクエストをウェブコンテナ２２に送信し、ウェブコンテナ２２は、ウェブアプリケーション２１を呼び出して参照モードへの変更を要求する（ステップ３４１）。これにより、ウェブアプリケーション２１は、当初ログインしていた全員をログイン状態に復帰するようにＤＢアクセス部２３に依頼する（ステップ３４２）。すると、ＤＢアクセス部２３は、当初ログインしていた全員をログイン状態に復帰するＳＱＬコマンド「ｒｅｔｕｒｎｔｏＡｌｌ（）」をＤＢサーバ３０に送信する（ステップ３４３）。これにより、ＤＢサーバ３０は、当初ログインしていた全員をログイン状態に復帰する。ＤＢサーバ３０は、当初ログインしていた全員のログイン状態への復帰が正常に終了すると、復帰が成功した旨をＤＢアクセス部２３に送信し、ＤＢアクセス部２３は、その旨をウェブアプリケーション２１に伝える（ステップ３４４）。
【００８３】
ところで、ＤＢサーバ３０は、ステップ３４３でＳＱＬコマンドを受信してからステップ３４３で復帰が成功した旨を送信するまでの間に、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、ＳＱＬコマンド「ｒｅｔｕｒｎｔｏＡｌｌ（）」を受信する。すると、ユーザ状態管理部３３が、接続中のユーザをユーザＡからユーザＡ，Ｂに変更する。具体的には、管理情報記憶部３５に記憶されたユーザ状態管理情報は、最初、図７（ｃ）でユーザＩＤ「ａ」に対して接続中フラグ「１」が記憶されたものであるが、全員フラグ「１」が記憶されたユーザＩＤ「ａｂ」に対して接続中フラグ「１」が記憶されたものとする。つまり、図７（ｃ）の状態に戻す。
【００８４】
その後、ウェブアプリケーション２１は、テーブルＴ１を検索するクエリーの実行をＤＢアクセス部２３に依頼する（ステップ３５１）。すると、ＤＢアクセス部２３は、テーブルＴ１を検索するＳＱＬコマンドをＤＢサーバ３０に送信する（ステップ３５２）。そして、ＤＢサーバ３０が、検索結果をＤＢアクセス部２３に返すと、ＤＢアクセス部２３は、検索結果をウェブアプリケーション２１に返す（ステップ３５３）。
【００８５】
ところで、ＤＢサーバ３０は、ステップ３５２でＳＱＬコマンドを受信してからステップ３５３で検索結果を返すまでの間に、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、テーブルＴ１を検索するＳＱＬコマンドを受信する。次に、ＳＱＬ実行部３２が、管理情報記憶部３５に記憶されたユーザ状態管理情報で接続中フラグ「１」に対応付けられたユーザＩＤ「ａｂ」を特定する。そして、管理情報記憶部３５に記憶されたユーザ権限管理情報でユーザＩＤ「ａｂ」に対応付けられた権限ＩＤ「Ｐ１２」を特定し、管理情報記憶部３５に記憶された権限内容管理情報で権限ＩＤ「Ｐ１２」に対応付けられたアクセス可能範囲「ｒｏｗ＃１−７」を特定する。次いで、ＳＱＬ解釈部３１が、テーブルＴ１のｒｏｗ＃１−７を検索結果としてＤＢアクセス部２３に返す。
【００８６】
その後、ウェブアプリケーション２１は、検索結果ページをウェブコンテナ２２に伝え、ウェブコンテナ２２は、検索結果ページを示すＨＴＴＰレスポンスをクライアント１０に送信する（ステップ３５４）。
【００８７】
このように情報の参照及び更新が行われた後、ユーザＡは、ウェブシステムへの接続を切断する操作を行うとする。図５の検索結果ページの例で言えば、ログアウトボタン１７を押下する操作が該当する。このような操作が行われると、ユーザＡに加えて、追加でログインしていたユーザＢもログアウトすることになる。すると、図示しないが、クライアント１０は、アプリケーションサーバ２０に切断を要求し、アプリケーションサーバ２０は、ＤＢサーバ３０に対して、ＤＢへの接続の切断を要求するＳＱＬコマンド「ｄｉｓｃｏｎｎｅｃｔ」を送信する。
【００８８】
これにより、ＤＢサーバ３０は、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、ＳＱＬコマンド「ｄｉｓｃｏｎｎｅｃｔ」を受信する。すると、ユーザ状態管理部３３及びユーザ権限管理部３４が、ユーザＩＤ「ａｂ」の一時ユーザに関する情報を管理情報記憶部３５から削除する。具体的には、管理情報記憶部３５に記憶されたユーザ権限管理情報は、最初、図７（ａ）に示したものであるが、ユーザ権限管理部３４が、これから図７（ａ）の３行目を削除する。また、管理情報記憶部３５に記憶された権限内容管理情報は、最初、図７（ｂ）に示したものであるが、ユーザ権限管理部３４が、これから図７（ｂ）の３行目を削除する。更に、管理情報記憶部３５に記憶されたユーザ状態管理情報は、最初、図７（ｃ）に示したものであるが、ユーザ状態管理部３３が、この全体を削除する。
【００８９】
［本実施の形態の変形例］
図１１（ａ）〜（ｃ）は、ＤＢサーバ３０の管理情報記憶部３５に記憶された各管理情報の他の例を示した図である。
【００９０】
図１１（ａ）は、ユーザ権限管理情報の例を示す。ユーザ権限管理情報は、図７（ａ）と同様に、テーブルＩＤと、ユーザＩＤと、権限ＩＤと、参照可否と、更新可否とを含むが、その内容は、図７（ａ）に、ユーザＩＤ「ｃ」のユーザ及びユーザＩＤ「ａｂｃ」の一時ユーザに対する情報を追加したものになっている。
【００９１】
図１１（ｂ）は、権限内容管理情報の例を示す。権限内容管理情報は、図７（ｂ）と同様に、権限ＩＤと、アクセス可能範囲とを含むが、その内容は、図７（ｂ）に、ユーザＩＤ「ｃ」のユーザ及びユーザＩＤ「ａｂｃ」の一時ユーザに対する情報を追加したものになっている。
【００９２】
図１１（ｃ）は、ユーザ状態管理情報の例を示す。ユーザ状態管理情報は、図７（ｃ）と同様に、ユーザＩＤと、接続中フラグと、全員フラグとを含むが、その内容は、図７（ｃ）に、ユーザＩＤ「ｃ」のユーザ及びユーザＩＤ「ａｂｃ」の一時ユーザに対する情報を追加したものになっている。
【００９３】
例えば、図９に示した動作の開始時に、ユーザＡ，Ｂが既にログイン状態にあり、図１１（ａ）〜（ｃ）の各管理情報の１行目〜４行目が管理情報記憶部３５に記憶されているとする。そして、ユーザＡが追加ログインページ上でユーザＩＤ「ｃ」及びパスワード「ｚ」を用いてユーザＣの追加ログインを行ったとすると、ＤＢサーバ３０は、ステップ２２３でＳＱＬコマンドを受信してからステップ２２６でユーザの追加が成功した旨を送信するまでの間に、詳しくは、次のような動作を行う。即ち、まず、ＳＱＬ解釈部３１が、ＳＱＬコマンド「ａｄｄＵｓｅｒ（ｃ，ｚ）」を受信する。すると、ユーザ状態管理部３３及びユーザ権限管理部３４が、その時点で接続中のユーザＡ，Ｂと追加が指示されたユーザＣとから構成されるユーザＩＤ「ａｂｃ」の一時ユーザに関する情報を管理情報記憶部３５に記憶する。具体的には、ユーザ権限管理部３４が、ユーザ権限管理情報に図１１（ａ）の５行目を追加し、権限内容管理情報に図１１（ｂ）の５行目を追加する。また、ユーザ状態管理部３３が、ユーザ状態管理情報に図１１（ｃ）の５行目を追加する。
【００９４】
また、本実施の形態では、ＤＢに対して如何なる操作が可能かという観点から、参照モード及び更新モードという２つのモードを用意した。一方で、これらのモードは、ログイン中の複数のユーザのうち、何人のユーザがＤＢに対して操作可能か、つまり、有効になっているかという観点から、それぞれ共有モード及び単独モードとして捉えることもできる。
【００９５】
共有モードは、複数のユーザが同時に有効となっているモードである。この共有モードにおいて、ＤＢに対するアクセス可能範囲は、集合演算子に基づく範囲となる。複数のユーザのアクセス可能範囲が集合演算子により各ユーザのアクセス可能範囲の和集合となる場合は、共有モードにおけるアクセス可能範囲は単独モードにおけるアクセス可能範囲よりも広くなる。これに対し、複数のユーザのアクセス可能範囲が集合演算子により各ユーザのアクセス可能範囲の積集合となる場合は、共有モードにおけるアクセス可能範囲は単独モードにおけるアクセス可能範囲よりも狭くなる。
【００９６】
単独モードは、複数のユーザのうちの指定されたユーザのみがＤＢに対して操作可能な操作ユーザとなるモードである。この単独モードにおいて、ＤＢに対するアクセス可能範囲は、操作ユーザのアクセス可能範囲に限定される。但し、他のユーザがログオフされているわけではない。このため、「ｒｅｔｕｒｎＴｏＡｌｌ」を実行するときに、ユーザＩＤ及びパスワードの指定は不要である。
【００９７】
ここで、アプリケーションサーバ２０からＤＢサーバ３０へ送信される従来のＳＱＬコマンドは、以下のように変更すればよい。即ち、「ｓｅｌｅｃｔ」は、共有モード及び単独モードの何れでも実行可能とするとよい。一方、「ｉｎｓｅｒｔ」、「ｕｐｄａｔｅ」、「ｄｅｌｅｔｅ」は、単独モードのみで実行可能とし、それ以外の場合はエラーとするとよい。
【００９８】
尚、本実施の形態では、ユーザＡ，Ｂがログイン状態にある共有モードを、ユーザＡのみがＤＢに対して操作可能な単独モードに変更する場合について説明したが、この限りではない。ユーザＡ，Ｂがログイン状態にある共有モードを、ユーザＢのみがＤＢに対して操作可能な単独モードに変更してもよい。或いは、ユーザＡのみがＤＢに対して操作可能な単独モードを、ユーザＢのみがＤＢに対して操作可能な単独モードに変更したり、その逆の変更を行ったりしてもよい。
【００９９】
また、ユーザＡ，Ｂ，Ｃがログイン状態にある共有モードを起点とする場合においても同様である。即ち、このような共有モードを、ユーザＡのみがＤＢに対して操作可能な単独モード、ユーザＢのみがＤＢに対して操作可能な単独モード、ユーザＣのみがＤＢに対して操作可能な単独モードの何れに変更してもよい。或いは、ユーザＡのみがＤＢに対して操作可能な単独モード、ユーザＢのみがＤＢに対して操作可能な単独モード、ユーザＣのみがＤＢに対して操作可能な単独モードの相互間で変更を行ってもよい。
【０１００】
更に、本実施の形態では、ＳＱＬ拡張コマンドとして、「ａｄｄＵｓｅｒ（ｕｓｅｒ，ｐｗｄ）」、「ｓｐｅｃｉｆｙ（ｕｓｅｒ）」及び「ｒｅｔｕｒｎＴｏＡｌｌ（）」を示したが、次のようなＳＱＬ拡張コマンドも考えられる。
【０１０１】
第一に、「ａｄｄＵｓｅｒ（ｕｓｅｒ，ｐｗｄ，ｏｐｅｒａｔｏｒ）」が考えられる。これは、複数のユーザが既にログインしている状態で追加のユーザもログイン状態にするＳＱＬ拡張コマンド「ａｄｄＵｓｅｒ（ｕｓｅｒ，ｐｗｄ）」に変更を加えたＳＱＬ拡張コマンドである。即ち、ＳＱＬ拡張コマンド「ａｄｄＵｓｅｒ（ｕｓｅｒ，ｐｗｄ）」に、オプションで、追加ユーザのアクセス可能範囲を決定する集合演算子を「ｏｐｅｒａｔｏｒ」により指定可能としたものである。
【０１０２】
第二に、「ｄｅｌＵｓｅｒ（ｕｓｅｒ）」が考えられる。これは、複数のユーザがログインしている状態から、指定されたユーザを切断するＳＱＬ拡張コマンドである。
【０１０３】
第三に、「ｑｕｅｒｙＵｓｅｒ（ｕｓｅｒ）」が考えられる。これは、現在ログイン中のユーザを返すＳＱＬ拡張コマンドである。
【０１０４】
第四に、「ｃｏｎｎｅｃｔ（ｕｓｅｒ１，ｐｗｄ１，ｕｓｅｒ２，ｐｗｄ２，ｕｓｅｒ３，ｐｗｄ３，…）」が考えられる。これは、複数のユーザを一度に指定して接続するＳＱＬ拡張コマンドである。
【０１０５】
［本実施の形態の効果］
本実施の形態では、複数のユーザが１つのセッションで共同で利用可能なウェブシステムを、ウェブシステム全体として実装した。これにより、このようなウェブシステムをウェブアプリケーション２１のみにより実装する場合に比べて、ＳＱＬコマンドの送受信回数が減ったので、効率が良くなった。
【０１０６】
また、本実施の形態では、ＤＢサーバ３０において一時ユーザを作成するようにした。これにより、無駄なデータを読み込む必要がなくなったので、効率が良くなった。
【０１０７】
更に、本実施の形態では、複数のユーザが同時ログイン中であっても、ＤＢ更新を実行したいという状況があり得るため、ＤＢに対する参照モード及び更新モードの切り替えを、ユーザのログイン及びログオフをすることなく実現している。これにより、ユーザの認証を行う回数が減ったので、効率が良くなった。
【０１０８】
更にまた、本実施の形態では、複数のユーザによるアクセス可能範囲を決定する際に、和集合及び積集合の両方を提供可能としている。これにより、様々な利用目的に応じて柔軟に対応できるようになった。例えば、和集合を提供する場合には、複数のユーザがアクセス可能なデータの全体を参照できるようになる。また、積集合を提供する場合には、複数のユーザがアクセス可能なデータのうち、全員が参照可能なデータのみを参照できるようになるので、情報セキュリティの確保が可能となる。
【０１０９】
［本実施の形態を適用可能なコンピュータのハードウェア構成］
図１２は、本実施の形態を適用可能なコンピュータ９０のハードウェア構成例を示した図である。図示するように、コンピュータ９０は、演算手段であるＣＰＵ（Central Processing Unit）９０ａと、Ｍ／Ｂ（マザーボード）チップセット９０ｂを介してＣＰＵ９０ａに接続されたメインメモリ９０ｃと、同じくＭ／Ｂチップセット９０ｂを介してＣＰＵ９０ａに接続された表示機構９０ｄとを備える。また、Ｍ／Ｂチップセット９０ｂには、ブリッジ回路９０ｅを介して、ネットワークインターフェイス９０ｆと、磁気ディスク装置（ＨＤＤ）９０ｇと、音声機構９０ｈと、キーボード／マウス９０ｉと、光学ドライブ９０ｊとが接続されている。
【０１１０】
尚、図１２において、各構成要素は、バスを介して接続される。例えば、ＣＰＵ９０ａとＭ／Ｂチップセット９０ｂの間や、Ｍ／Ｂチップセット９０ｂとメインメモリ９０ｃの間は、ＣＰＵバスを介して接続される。また、Ｍ／Ｂチップセット９０ｂと表示機構９０ｄとの間は、ＡＧＰ（Accelerated Graphics Port）を介して接続されてもよいが、表示機構９０ｄがＰＣＩ Ｅｘｐｒｅｓｓ対応のビデオカードを含む場合、Ｍ／Ｂチップセット９０ｂとこのビデオカードの間は、ＰＣＩ Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスを介して接続される。また、ブリッジ回路９０ｅと接続する場合、ネットワークインターフェイス９０ｆについては、例えば、ＰＣＩ Ｅｘｐｒｅｓｓを用いることができる。また、磁気ディスク装置９０ｇについては、例えば、シリアルＡＴＡ（AT Attachment）、パラレル転送のＡＴＡ、ＰＣＩ（Peripheral Components Interconnect）を用いることができる。更に、キーボード／マウス９０ｉ、及び、光学ドライブ９０ｊについては、ＵＳＢ（Universal Serial Bus）を用いることができる。
【０１１１】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【０１１２】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【０１１３】
１０…クライアント、１１…ウェブブラウザ、２０…アプリケーションサーバ、２１…ウェブアプリケーション、２２…ウェブコンテナ、２３…ＤＢアクセス部、３０…ＤＢサーバ、３１…ＳＱＬ解釈部、３２…ＳＱＬ実行部、３３…ユーザ状態管理部、３４…ユーザ権限管理部、３５…管理情報記憶部、４０…ユーザ情報サーバ
【図１】
0006004454.tif 000002
【図２】
0006004454.tif 000003
【図３】
0006004454.tif 000004
【図４】
0006004454.tif 000005
【図５】
0006004454.tif 000006
【図６】
0006004454.tif 000007
【図７】
0006004454.tif 000008
【図８】
0006004454.tif 000009
【図９】
0006004454.tif 000010
【図１０】
0006004454.tif 000011
【図１１】
0006004454.tif 000012
【図１２】
0006004454.tif 000013