(57)【要約】      （修正有）【課題】他のユーザの情報を操作しないようにする。【解決手段】共通プログラム実行部は、サーバ１を、個別プログラムが複数のユーザの情報を格納するデータベース１１１にユーザＩＤを新たに記憶させる場合に、ユーザＩＤとは異なる検証用ＩＤを関連付けて記憶させる識別情報登録部１４２、個別プログラムがユーザＩＤに基づくデータベース１１１への接続を要求する場合に、当該ユーザＩＤに関連付けられている検証用ＩＤを取得する取得部１４１、個別プログラムがユーザＩＤを含む情報をデータベース１１１に追加する場合に、当該情報に取得部１４１が取得した検証用ＩＤを付与して追加する追加部１４３及び個別プログラムがデータベース１１１に記憶されているユーザＩＤを含む情報を操作する場合に、取得部１４１が取得した検証用ＩＤと、当該情報に関連付けられている検証用ＩＤとに基づいて、当該情報を操作する操作部１４４として機能させる。【選択図】図２
2018101239.tif 000002
【特許請求の範囲】
【請求項１】
複数の個別プログラムにおいて呼び出される共通プログラムであって、
コンピュータを、
前記複数の個別プログラムのいずれかが複数のユーザの情報を格納するデータベースにユーザを識別するユーザ識別情報を新たに記憶させる場合に、前記ユーザを識別するとともに前記ユーザ識別情報とは異なる検証用識別情報を関連付けて記憶させる識別情報登録部、
前記複数の個別プログラムのいずれかが前記ユーザ識別情報に基づく前記データベースへの接続を要求する場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得する取得部、
前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記ユーザ識別情報を含む情報を前記データベースに追加する場合に、当該情報に前記取得部が取得した前記検証用識別情報を付与して追加する追加部、及び、
前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記データベースに記憶されている前記ユーザ識別情報を含む情報を操作する場合に、前記取得部が取得した前記検証用識別情報と、当該情報に関連付けられている前記検証用識別情報とに基づいて、前記情報を操作する操作部、
として機能させる共通プログラム。
【請求項２】
前記取得部は、前記複数の個別プログラムのいずれかが前記ユーザ識別情報に関連付けられているログイン情報に基づいて前記データベースへの接続を要求した場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得する、
請求項１に記載の共通プログラム。
【請求項３】
前記操作部は、前記データベースから前記ユーザ識別情報を含む情報を選択する場合に、前記取得部が取得した前記検証用識別情報を含む情報を選択する、
請求項１又は２に記載の共通プログラム。
【請求項４】
前記操作部は、前記データベースから前記ユーザ識別情報を含む情報を選択した後、選択された情報のうち、前記取得部が取得した前記検証用識別情報を含まない情報を破棄する、
請求項３に記載の共通プログラム。
【請求項５】
前記操作部は、前記データベースにおいて前記ユーザ識別情報を含む情報を更新する場合において、当該情報に含まれる前記検証用識別情報と、前記取得部が取得した前記検証用識別情報とが一致しないとき、当該情報を更新せずにエラー情報を出力する、
請求項１から４のいずれか１項に記載の共通プログラム。
【請求項６】
前記操作部は、前記データベースにおいて前記ユーザ識別情報を含む情報を消去する場合において、当該情報に含まれる前記検証用識別情報と、前記取得部が取得した前記検証用識別情報とが一致しないとき、当該情報を消去せずにエラー情報を出力する、
請求項１から５のいずれか１項に記載の共通プログラム。
【請求項７】
前記追加部は、前記ユーザ識別情報を含む情報を前記データベースに追加する場合において、前記取得部によって前記検証用識別情報が取得されていないとき、当該情報を追加せずにエラー情報を出力する、
請求項１から５のいずれか１項に記載の共通プログラム。
【請求項８】
複数の個別プログラムのいずれかが複数のユーザの情報を格納するデータベースにユーザを識別するユーザ識別情報を新たに記憶させる場合に、前記ユーザを識別するとともに前記ユーザ識別情報とは異なる検証用識別情報を関連付けて記憶させる識別情報登録部と、
前記複数の個別プログラムのいずれかが前記ユーザ識別情報に基づく前記データベースへの接続を要求する場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得する取得部と、
前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記ユーザ識別情報を含む情報を前記データベースに追加する場合に、当該情報に前記取得部が取得した前記検証用識別情報を付与して追加する追加部と、
前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記データベースに記憶されている前記ユーザ識別情報を含む情報を操作する場合に、前記取得部が取得した前記検証用識別情報と、当該情報に関連付けられている前記検証用識別情報とに基づいて、前記情報を操作する操作部と、
を備えるデータベース管理装置。
【請求項９】
コンピュータが実行する、
複数の個別プログラムのいずれかが複数のユーザの情報を格納するデータベースにユーザを識別するユーザ識別情報を新たに記憶させる場合に、前記ユーザを識別するとともに前記ユーザ識別情報とは異なる検証用識別情報を関連付けて記憶させるステップと、
前記複数の個別プログラムのいずれかが前記ユーザ識別情報に基づく前記データベースへの接続を要求する場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得するステップと、
前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記ユーザ識別情報を含む情報を前記データベースに追加する場合に、当該情報に前記取得するステップにおいて取得された前記検証用識別情報を付与して追加するステップと、
前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記データベースに記憶されている前記ユーザ識別情報を含む情報を操作する場合に、前記取得するステップにおいて取得された前記検証用識別情報と、当該情報に関連付けられている前記検証用識別情報とに基づいて、前記情報を操作するステップと、
を備えるデータベース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通プログラム、データベース管理装置、及びデータベース管理方法に関する。
【背景技術】
【０００２】
近年、仮想化技術の発達により、複数のユーザのデータを一つのデータベースで管理すること（マルチテナント）が行われている（例えば、特許文献１参照）。複数のユーザのデータを一つのデータベースで管理する場合、ユーザを識別するユーザ識別情報をデータベース上の各テーブルに含ませておく。そして、ログインしたユーザに対応するユーザ識別情報に基づいて、データベースから当該ユーザの情報を抽出する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−０８８８３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、マルチテナントに対応するデータベースに含まれている情報を操作するプログラムに不具合があると、他のユーザの情報が操作されてしまうことがあるという問題がある。例えば、プログラムにおいて、所定のユーザに対応するユーザ識別情報を含む情報を抽出する場合に、ユーザ識別情報が所定のユーザに対応するユーザ識別情報に一致するという抽出条件を指定するところ、異なる情報を抽出条件に指定してしまうという不具合が含まれている場合を考える。この場合には、所定のユーザに対応するユーザ識別情報を含まない情報、すなわち他のユーザの情報が抽出されてしまう。そこで、プログラムに不具合が含まれていても、他のユーザの情報を操作しないようにすることが求められている。
【０００５】
そこで、本発明はこれらの点に鑑みてなされたものであり、他のユーザの情報を操作しないようにすることができる共通プログラム、データベース管理装置、及びデータベース管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の態様に係る共通プログラムは、複数の個別プログラムにおいて呼び出される共通プログラムであって、コンピュータを、前記複数の個別プログラムのいずれかが複数のユーザの情報を格納するデータベースにユーザを識別するユーザ識別情報を新たに記憶させる場合に、前記ユーザを識別するとともに前記ユーザ識別情報とは異なる検証用識別情報を関連付けて記憶させる識別情報登録部、前記複数の個別プログラムのいずれかが前記ユーザ識別情報に基づく前記データベースへの接続を要求する場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得する取得部、前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記ユーザ識別情報を含む情報を前記データベースに追加する場合に、当該情報に前記取得部が取得した前記検証用識別情報を付与して追加する追加部、及び、前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記データベースに記憶されている前記ユーザ識別情報を含む情報を操作する場合に、前記取得部が取得した前記検証用識別情報と、当該情報に関連付けられている前記検証用識別情報とに基づいて、前記情報を操作する操作部、として機能させる。
【０００７】
前記取得部は、前記複数の個別プログラムのいずれかが前記ユーザ識別情報に関連付けられているログイン情報に基づいて前記データベースへの接続を要求した場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得してもよい。
【０００８】
前記操作部は、前記データベースから前記ユーザ識別情報を含む情報を選択する場合に、前記取得部が取得した前記検証用識別情報を含む情報を選択してもよい。
前記操作部は、前記データベースから前記ユーザ識別情報を含む情報を選択した後、選択された情報のうち、前記取得部が取得した前記検証用識別情報を含まない情報を破棄してもよい。
【０００９】
前記操作部は、前記データベースにおいて前記ユーザ識別情報を含む情報を更新する場合において、当該情報に含まれる前記検証用識別情報と、前記取得部が取得した前記検証用識別情報とが一致しないとき、当該情報を更新せずにエラー情報を出力してもよい。
【００１０】
前記操作部は、前記データベースにおいて前記ユーザ識別情報を含む情報を消去する場合において、当該情報に含まれる前記検証用識別情報と、前記取得部が取得した前記検証用識別情報とが一致しないとき、当該情報を消去せずにエラー情報を出力してもよい。
【００１１】
前記追加部は、前記ユーザ識別情報を含む情報を前記データベースに追加する場合において、前記取得部によって前記検証用識別情報が取得されていないとき、当該情報を追加せずにエラー情報を出力してもよい。
【００１２】
本発明の第２の態様に係るデータベース管理装置は、複数の個別プログラムのいずれかが複数のユーザの情報を格納するデータベースにユーザを識別するユーザ識別情報を新たに記憶させる場合に、前記ユーザを識別するとともに前記ユーザ識別情報とは異なる検証用識別情報を関連付けて記憶させる識別情報登録部と、前記複数の個別プログラムのいずれかが前記ユーザ識別情報に基づく前記データベースへの接続を要求する場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得する取得部と、前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記ユーザ識別情報を含む情報を前記データベースに追加する場合に、当該情報に前記取得部が取得した前記検証用識別情報を付与して追加する追加部と、前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記データベースに記憶されている前記ユーザ識別情報を含む情報を操作する場合に、前記取得部が取得した前記検証用識別情報と、当該情報に関連付けられている前記検証用識別情報とに基づいて、前記情報を操作する操作部と、を備える。
【００１３】
本発明の第３の態様に係るデータベース管理方法は、コンピュータが実行する、複数の個別プログラムのいずれかが複数のユーザの情報を格納するデータベースにユーザを識別するユーザ識別情報を新たに記憶させる場合に、前記ユーザを識別するとともに前記ユーザ識別情報とは異なる検証用識別情報を関連付けて記憶させるステップと、前記複数の個別プログラムのいずれかが前記ユーザ識別情報に基づく前記データベースへの接続を要求する場合に、当該ユーザ識別情報に関連付けられている前記検証用識別情報を取得するステップと、前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記ユーザ識別情報を含む情報を前記データベースに追加する場合に、当該情報に前記取得するステップにおいて取得された前記検証用識別情報を付与して追加するステップと、前記ユーザ識別情報に基づく前記データベースへの接続後、前記複数の個別プログラムのいずれかが前記データベースに記憶されている前記ユーザ識別情報を含む情報を操作する場合に、前記取得するステップにおいて取得された前記検証用識別情報と、当該情報に関連付けられている前記検証用識別情報とに基づいて、前記情報を操作するステップと、を備える。
【発明の効果】
【００１４】
本発明によれば、他のユーザの情報を操作しないようにすることができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係る業務システムの概要を示す図である。
【図２】本実施形態に係るサーバの構成を示す図である。
【図３】本実施形態に係るログインユーザテーブルの一例を示す図である。
【図４】本実施形態に係る顧客マスタテーブルの一例を示す図である。
【図５】本実施形態に係る商品マスタテーブルの一例を示す図である。
【図６】本実施形態に係る商品詳細マスタテーブルの一例を示す図である。
【図７】本実施形態に係る取得部が取得した検証用ＩＤを含まないレコードを破棄する例を説明する図である。
【発明を実施するための形態】
【００１６】
［業務システムＳの概要］
図１は、本実施形態に係る業務システムＳの概要を示す図である。
業務システムＳは、サーバ１と、サーバ１と通信可能な複数のクライアント端末２とを備えるシステムである。
【００１７】
サーバ１は、業務システムＳが備える各種機能を実現する。サーバ１は、業務システムＳを提供するサービス提供業者によって運営される。クライアント端末２は、業務システムＳを利用する顧客（以下、ユーザという。）が使用するコンピュータであり、パーソナルコンピュータや、スマートフォン等である。
【００１８】
サーバ１は、複数のクライアント端末２のそれぞれから、各種情報をクライアント端末２に表示したり、サーバ１に追加したりするためのリクエストを受け付ける。サーバ１は、各種リクエストに応じて個別プログラムを実行する。サーバ１は、複数のクライアント端末２のそれぞれに対応するユーザの情報を格納するデータベースを備えており、データベース管理装置として機能する。
【００１９】
データベースに格納されている各テーブルには、クライアント端末２のユーザを識別するユーザ識別情報としてのユーザＩＤが記憶されている。また、各テーブルには、他のユーザの情報を誤って操作することを防止するために、検証用識別情報としての検証用ＩＤが格納されている。
【００２０】
個別プログラムは、データベースに接続する際に、クライアント端末２のユーザに対応するログイン情報を指定して共通プログラムを呼び出す。共通プログラムは、ログイン情報に基づいて認証を行い、認証に成功すると、ユーザＩＤに関連付けられている検証用ＩＤを取得する。個別プログラムは、データベースへの接続後にデータベースに記憶されている情報の操作を行う場合、共通プログラムを呼び出す。共通プログラムは、データベースの接続時に取得した検証用ＩＤと、操作対象の情報に含まれている検証用ＩＤとに基づいてユーザＩＤに対応する情報のみを操作し、実行結果を個別プログラムに返す。これにより、共通プログラムは、他のユーザの情報を操作しないようにすることができる。
【００２１】
個別プログラムは、共通プログラムが返した実行結果に基づいて、クライアント端末２に各種リクエストに対応する実行結果を出力する。業務システムＳでは、個別プログラムが、他のユーザの情報を操作しない共通プログラムを介してデータベースに格納されているユーザの情報を操作するので、業務システムＳは、個別プログラムに不具合がある場合であっても他のユーザの情報を操作しないようにすることができる。
【００２２】
［サーバ１の構成］
続いて、サーバ１の構成について説明する。図２は、本実施形態に係るサーバ１の構成を示す図である。
【００２３】
サーバ１は、記憶部１１と、制御部１２とを備える。
記憶部１１は、例えば、ＲＯＭ、ＲＡＭ及びハードディスク等の記憶媒体である。記憶部１１は、制御部１２が実行するプログラムを記憶する。例えば、記憶部１１は、業務システムＳが備える各機能を実現するための複数の個別プログラムを記憶する。また、記憶部１１は、制御部１２を、取得部１４１、識別情報登録部１４２、追加部１４３、及び操作部１４４として機能させる共通プログラムを記憶する。共通プログラムには、複数のクライアント端末２のそれぞれのユーザに対応する情報を記憶するデータベース１１１を管理するデータベースエンジンが含まれているものとする。
【００２４】
データベース１１１は、例えば、ログインユーザテーブルと、顧客マスタテーブルと、商品マスタテーブルと、商品詳細マスタテーブルとが格納されている。
図３は、本実施形態に係るログインユーザテーブルの一例を示す図である。図３に示すように、ログインユーザテーブルは、クライアント端末２のユーザを識別するユーザＩＤと、データベース１１１に接続する際に用いられるログインＩＤと、当該ログインＩＤに対応するパスワードとを関連付けて記憶する。ユーザＩＤ、ログインＩＤ及びログインパスワードは、例えば、業務システムＳのサービス提供者によって生成され、ログインユーザテーブルに格納される。
【００２５】
図４は、本実施形態に係る顧客マスタテーブルの一例を示す図である。図４に示すように、顧客マスタテーブルは、ユーザＩＤと、ユーザ名称と、共通プログラムが使用する検証用ＩＤとを関連付けて記憶する。ここで、検証用ＩＤは、ユーザＩＤと同様にクライアント端末２のユーザを識別する識別情報であり、ユーザＩＤとは異なる識別情報である。
【００２６】
図５は、本実施形態に係る商品マスタテーブルの一例を示す図である。図５に示すように、商品マスタテーブルは、ユーザＩＤと、商品を識別する商品ＩＤと、商品名と、検証用ＩＤとを関連付けて記憶する。
図６は、本実施形態に係る商品詳細マスタテーブルの一例を示す図である。図６に示すように、商品詳細マスタテーブルは、ユーザＩＤと、商品の詳細部分（例えば、商品の色等）により同一の商品ＩＤの商品を識別するための商品詳細ＩＤと、商品ＩＤと、商品名と、検証用ＩＤとを関連付けて記憶する。
【００２７】
制御部１２は、例えばＣＰＵである。制御部１２は、記憶部１１に記憶されている各種プログラムや、通信ネットワークを介して外部機器から取得したプログラムを実行することにより、サーバ１に係る機能を制御する。制御部１２は、個別プログラムを実行する個別プログラム実行部１３と、共通プログラムを実行する共通プログラム実行部１４とを備える。
【００２８】
個別プログラム実行部１３は、クライアント端末２から各種リクエストを受け付けたことに応じて、各種リクエストのそれぞれに対応する個別プログラムを実行する。個別プログラムは、例えば、業務システムＳのサービス提供者によって構築されたプログラムである。個別プログラムは、データベース１１１にアクセスする場合には、共通プログラムを呼び出してアクセスするように構築されている。
【００２９】
共通プログラム実行部１４は、複数の個別プログラムにおいて共通プログラムが呼び出されたことに応じて共通プログラムを実行する。共通プログラム実行部１４は、共通プログラムを実行することにより、取得部１４１、識別情報登録部１４２、追加部１４３、及び操作部１４４として機能する。
【００３０】
取得部１４１は、複数の個別プログラムのいずれかがユーザＩＤに基づくデータベース１１１への接続を要求する場合に、当該ユーザＩＤに関連付けられている検証用ＩＤを取得する。取得部１４１は、複数の個別プログラムのいずれかがユーザＩＤに関連付けられているログイン情報に基づいてデータベース１１１への接続を要求した場合に、当該ユーザＩＤに関連付けられている検証用ＩＤを取得する。
【００３１】
具体的には、まず、複数の個別プログラムのいずれかが、ログインＩＤ及びログインパスワードを指定して共通プログラムを呼び出すことにより、データベース１１１への接続を要求する。取得部１４１は、指定されたログインＩＤ及びログインパスワードが、ログインユーザテーブルに記憶されているログインＩＤ及びログインパスワードと一致する場合に、データベース１１１への接続を要求した個別プログラムからデータベース１１１へのアクセスを許可する。ここで、個別プログラムからデータベース１１１へのアクセスが許可されている状態を、個別プログラムがデータベース１１１に接続されている状態という。
【００３２】
取得部１４１は、個別プログラムがデータベース１１１に接続した場合に、ログインユーザテーブルにおいて、指定されたログインＩＤに関連付けられているユーザＩＤを特定する。取得部１４１は、顧客マスタテーブルにおいて、特定されたユーザＩＤに関連付けられている検証用ＩＤを取得する。取得部１４１は、取得した検証用ＩＤを、セッション情報として記憶部１１に一時的に記憶させる。なお、取得部１４１は、顧客マスタテーブルにおいて、特定されたユーザＩＤが存在していない場合には、セッション情報として検証用ＩＤを記憶させない。
【００３３】
識別情報登録部１４２は、複数の個別プログラムのいずれかが、データベース１１１に、ユーザＩＤを新たに記憶させる場合に、検証用ＩＤを関連付けて記憶させる。具体的には、識別情報登録部１４２は、複数の個別プログラムのいずれかが、ユーザＩＤと、ユーザ名称とを含むレコードを新たに顧客マスタテーブルに記憶させる場合に、検証用ＩＤを生成する。そして、識別情報登録部１４２は、ユーザＩＤとユーザ名称と検証用ＩＤとを含むレコードを顧客マスタテーブルに記憶させる。
【００３４】
ここで、識別情報登録部１４２が有する機能は、顧客マスタテーブルに対して設定されるデータベースエンジンのセキュリティポリシーやトリガーによって実現される。このようにすることで、個別プログラムが、顧客マスタテーブルにレコードを追加する場合には、必ず識別情報登録部１４２の機能が実行されるので、当該テーブルにユーザＩＤが記憶される場合に、当該ユーザＩＤと検証用ＩＤとを確実に記憶させることができる。
【００３５】
なお、本実施形態では、ログインユーザテーブルと、顧客マスタテーブルとに、異なるタイミングでユーザＩＤを含む情報が記憶されることとしたが、これに限らない。例えば、ログインユーザテーブルと、顧客マスタテーブルとに、例えば、一連の処理によって同じタイミングでユーザＩＤを含む情報が記憶されるようにしてもよい。
【００３６】
追加部１４３は、ユーザＩＤに基づくデータベース１１１への接続後、複数の個別プログラムのいずれかが当該ユーザＩＤを含むレコードをデータベース１１１に追加する場合に、当該レコードに取得部１４１が取得した検証用ＩＤを付与して追加する。具体的には、追加部１４３は、データベース１１１に格納されている複数のテーブルのうち、ログインユーザテーブル及び顧客マスタテーブルとは異なるテーブルにユーザＩＤを含むレコードを追加する場合に、当該レコードにセッション情報として記憶部１１に一時的に記憶されている検証用ＩＤを付与する。追加部１４３は、ユーザＩＤ及び検証用ＩＤを含むレコードをテーブルに記憶させる。本実施形態では、商品マスタテーブル及び商品詳細マスタテーブルにユーザＩＤを含むレコードを追加する場合に、当該レコードに検証用ＩＤを付与して追加させる。
【００３７】
ここで、追加部１４３は、ユーザＩＤを含むレコードをデータベース１１１に格納されているテーブルに追加する場合において、取得部１４１によって検証用ＩＤが取得されていないとき、ユーザＩＤを含むレコードを追加せずにエラー情報を出力する。例えば、追加部１４３は、データベース１１１に格納されているテーブルにレコードを追加するために共通プログラムを呼び出した個別プログラムに、検証用ＩＤを取得できていないことを示すエラー情報を含む実行結果を出力する。このようにすることで、個別プログラム側に、検証用ＩＤを取得できていないことを通知することができる。
【００３８】
なお、追加部１４３が有する機能は、ユーザＩＤを含むテーブルに対して設定されるデータベースエンジンのセキュリティポリシーやトリガーによって実現される。このようにすることで、個別プログラムが、追加部１４３が有する機能に対応するセキュリティポリシーやトリガーが設定されているテーブルにレコードを追加する場合には、必ず追加部１４３の機能が実行されるので、当該テーブルにユーザＩＤが記憶される場合に、確実に検証用ＩＤも記憶させることができる。
【００３９】
操作部１４４は、ユーザＩＤに基づくデータベース１１１への接続後、複数の個別プログラムのいずれかがデータベース１１１に記憶されている当該ユーザＩＤを含む情報を操作する場合に、取得部１４１が取得した検証用ＩＤと、当該情報に関連付けられている検証用ＩＤとに基づいて、情報を操作する。ここで、情報の操作は、テーブルから情報を選択する選択操作、テーブルに記憶されている情報を更新する更新操作、テーブルに記憶されているレコードを消去する消去操作が含まれるものとする。
【００４０】
具体的には、操作部１４４は、データベース１１１に格納されているテーブルからユーザＩＤを含むレコードを選択する場合に、取得部１４１が取得した検証用ＩＤを含む情報を選択する。具体的には、操作部１４４は、データベース１１１に格納されているテーブルから、ユーザＩＤを含むレコードを選択する。その後、操作部１４４は、選択されたレコードのうち、取得部１４１が取得した検証用ＩＤを含まないレコードを破棄する。操作部１４４は、破棄されなかったレコードを含む情報を実行結果として個別プログラムに出力する。
【００４１】
図７は、取得部１４１が取得した検証用ＩＤを含まないレコードを破棄する例を説明する図である。例えば、個別プログラムが、ユーザＩＤ「１」に対応するログイン情報によってデータベース１１１に接続し、取得部１４１が、ユーザＩＤ「１」に対応する検証用ＩＤ「ＡＡＡ」を取得したとする（図７の（１））。さらに、個別プログラムにおいて、図７に示す商品マスタテーブルからユーザＩＤ「１」のデータを選択する場合に、ユーザＩＤ「１」を選択条件とするところ、ユーザＩＤの値として誤って商品ＩＤの値を指定してしまい、さらに商品ＩＤが「２」であったとする。この場合には、操作部１４４は、ユーザＩＤ「２」のレコードを選択する（図７の（２））。操作部１４４は、ユーザＩＤ「２」のレコードに含まれる検証用ＩＤが「ＢＢＢ」であり、取得部１４１が取得した検証用ＩＤ「ＡＡＡ」が含まれていないことから、選択したレコードを破棄する（図７の（３））。
【００４２】
このようにすることで、サーバ１は、異なるユーザＩＤに対応するレコードが個別プログラムに出力されないようにすることができる。また、操作部１４４は、ユーザＩＤを含むレコードを選択した後、当該レコードのうち、取得部１４１が取得した検証用ＩＤを含まないレコードを破棄するので、ユーザＩＤにインデックスが付されている場合に、取得部１４１が取得した検証用ＩＤを含む情報を高速に選択することができる。
【００４３】
また、操作部１４４は、データベース１１１に格納されているテーブルにおいてユーザＩＤを含むレコードを更新する場合において、当該レコードに含まれる検証用ＩＤと、取得部１４１が取得した検証用ＩＤとが一致するとき、当該レコードを更新し、レコードが更新されたことを示す情報を実行結果として個別プログラムに出力する。
【００４４】
また、操作部１４４は、データベース１１１に格納されているテーブルにおいてユーザＩＤを含むレコードを更新する場合において、当該レコードに含まれる検証用ＩＤと、取得部１４１が取得した検証用ＩＤとが一致しないとき、当該レコードを更新せずにエラー情報を出力する。操作部１４４は、レコードが更新されなかったことを示す情報を実行結果として個別プログラムに出力する。
【００４５】
また、操作部１４４は、データベース１１１に格納されているテーブルにおいてユーザＩＤを含むレコードを消去する場合において、当該レコードに含まれる検証用ＩＤと、取得部１４１が取得した検証用ＩＤとが一致するとき、当該レコードを消去し、レコードが消去されたことを示す情報を実行結果として個別プログラムに出力する。
【００４６】
また、操作部１４４は、データベース１１１に格納されているテーブルにおいてユーザＩＤを含むレコードを消去する場合において、当該レコードに含まれる検証用ＩＤと、取得部１４１が取得した検証用ＩＤとが一致しないとき、当該レコードを消去せずにエラー情報を出力する。操作部１４４は、レコードが消去されなかったことを示す情報を実行結果として個別プログラムに出力する。
【００４７】
なお、操作部１４４が有する機能は、ユーザＩＤを含むテーブルに対して設定されるデータベースエンジンのセキュリティポリシーやトリガーによって実現される。このようにすることで、個別プログラムが、操作部１４４が有する機能に対応するセキュリティポリシーやトリガーが設定されているテーブルを操作（選択、更新、削除）する場合には、必ず操作部１４４の機能が実行されるので、他のユーザの情報を操作することを確実に防止することができる。
【００４８】
［本実施形態における効果］
以上説明した通り、本実施形態に係るサーバ１は、共通プログラムを実行することにより、複数の個別プログラムのいずれかがユーザＩＤに基づくデータベース１１１への接続を要求する場合に、当該ユーザＩＤに関連付けられている検証用ＩＤを取得し、ユーザＩＤに基づくデータベース１１１への接続後、複数の個別プログラムのいずれかがユーザＩＤを含む情報をデータベース１１１に追加する場合に、当該情報に取得された検証用ＩＤを付与して追加し、当該ユーザＩＤに基づくデータベース１１１への接続後、複数の個別プログラムのいずれかがデータベース１１１に記憶されている当該ユーザＩＤを含む情報を操作する場合に、取得された検証用ＩＤと、当該情報に関連付けられている検証用ＩＤとに基づいて、当該情報を操作する。このようにすることで、サーバ１は、取得された検証用ＩＤと、当該情報に関連付けられている検証用ＩＤとが一致しない場合に、情報を操作しないようにすることができるので、他のユーザの情報を操作しないようにすることができる。
【００４９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【００５０】
１・・・サーバ、１１・・・記憶部、１１１・・・データベース、１２・・・制御部、１３・・・個別プログラム実行部、１４・・・共通プログラム実行部、１４１・・・取得部、１４２・・・識別情報登録部、１４３・・・追加部、１４４・・・操作部、２・・・クライアント端末、Ｓ・・・業務システム
【図１】
2018101239.tif 000003
【図２】
2018101239.tif 000004
【図３】
2018101239.tif 000005
【図４】
2018101239.tif 000006
【図５】
2018101239.tif 000007
【図６】
2018101239.tif 000008
【図７】
2018101239.tif 000009