(57)【要約】  ユーザが、データベースへアクセスするプログラムの命令を記述する順序、データ項目の相互の関連を意識せず、重複した命令を記述する必要がないデータ駆動型データベースの技術を提供する。データベース２４のスキーマ定義を記憶するスキーマ定義記憶手段２と、あるデータ項目の値が、他のデータ項目の値によって導かれる場合、その因果関係を記述した導出定義を記憶する導出定義記憶手段３と、導出定義の因果関係に基づいて、データ項目の値に対して連鎖的に変化を加えるトリガープログラム２７を生成する導出定義処理手段２６と、あるデータ項目の値に影響を与える他のデータ項目の値に変化が加えられたことをきっかけにして、トリガープログラム２７を実行するデータベースマネージメントシステム２３を有する。
2009087730.tif 000002
【特許請求の範囲】
【請求項１】
データベースのスキーマ定義を記憶するスキーマ定義記憶手段と、  前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を記述した導出定義を記憶する導出定義記憶手段と、  前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する導出定義処理手段と、  データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行するデータベースマネージメントシステムと、  を有することを特徴とするデータ駆動型データベース処理装置。
【請求項２】
前記導出定義処理手段は、  前記因果関係に基づいて、前記導出定義を実行する順序を判定する判定部と、  前記判定部によって判定された順序に従って、前記トリガープログラムを生成する生成部と、  を有することを特徴とする請求項１記載のデータ駆動型データベース処理装置。
【請求項３】
前記判定部は、既に決定したデータ項目のみによってデータ項目を導出できる導出定義が、優先的に実行されるように、実行する順序を判定することを特徴とする請求項２記載のデータ駆動型データベース処理装置。
【請求項４】
データ項目に影響を与える他のデータ項目に変化を加えるプログラムであって、前記データベースマネージメントシステムにより実行可能なデータベースアクセスプログラムを記憶するデータベースアクセスプログラム記憶手段を有することを特徴とする請求項１記載のデータ駆動型データベース処理装置。
【請求項５】
コンピュータが、  データベースのスキーマ定義を記憶する処理と、  前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を記述した導出定義を記憶する処理と、  データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記導出定義に基づいて、データ項目に対して連鎖的に変化を加える処理と、  を実行することを特徴とするデータ駆動型データベース処理方法。
【請求項６】
前記連鎖的に変化を加える処理は、  前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する処理と、  データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行する処理と、  を含むことを特徴とする請求項５記載のデータ駆動型データベース処理方法。
【請求項７】
前記コンピュータが、  データ項目に影響を与える他のデータ項目に変化を加えるデータベースアクセスプログラムを記憶する処理と、  前記データベースアクセスプログラム及び前記トリガープログラムを実行する処理と、  を実行することを特徴とする請求項６記載のデータ駆動型データベース処理方法。
【請求項８】
コンピュータにより実行可能なプログラムであって、  前記コンピュータに、  データベースのスキーマ定義を記憶する処理と、  前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を記述した導出定義を記憶する処理と、  データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記導出定義に基づいて、データ項目に対して連鎖的に変化を加える処理と、  を実行させることを特徴とするデータ駆動型データベース処理プログラム。
【請求項９】
前記連鎖的に変化を加える処理は、  前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する処理と、  データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行する処理と、  を含むことを特徴とする請求項８記載のデータ駆動型データベース処理プログラム。
【請求項１０】
前記コンピュータに、  データ項目に影響を与える他のデータ項目に変化を加えるデータベースアクセスプログラムを記憶する処理と、  前記データベースアクセスプログラム及び前記トリガープログラムを実行する処理と、  を実行させることを特徴とする請求項９記載のデータ駆動型データベース処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、データ駆動型データベースの処理技術に係り、特に、アクセスプログラムの作成負担を改善したデータ駆動型データベース処理装置、処理方法及び処理プログラムに関する。
【背景技術】
【０００２】  従来から、データベース内のデータを取り扱うコンピュータプログラムは、その言語形式がどのようなものであっても、遂次型に実行される形式をとっていた。つまり、このようなコンピュータプログラムに記述された各命令は記述された順序に従って実行されるものであった。【０００３】  たとえば、図６は、データベースにアクセスする一般的なプログラムの例である。図６において、１１と１２は、データベースに存在する２つのスキーマ定義を表す。ここで、スキーマ定義とは、データ構造を定義する記述であり、たとえば、複数のデータ項目と、これにより構成されるテーブル（表）を定義している。図６の例では、スキーマ定義１１は表Ａを定義し、スキーマ定義１２は表Ｂを定義している。【０００４】  １３はデータベースマネージメントシステム、１４はデータベース、１５は逐次型のデータベースアクセスプログラムである。データベースマネージメントシステム１３は、スキーマ定義１１，１２に従って、データベース１４に対して、データベースアクセスプログラム１５からのアクセス命令を受け取って、データの処理を行う。【０００５】  データベースアクセスプログラム１５の記述内容である１５１から１５１０は、データベースに対するアクセス命令の記述例である。１５１は、Ａ１に１２３４の値を代入させる命令である。１５２は、そのＡ１の値に５を加えてＡ４に代入させる命令である。１５３は、そのＡ４の値から１を減じてＡ３に代入させる命令である。１５４は、そのＡ３の値とＡ４の値を加えてＡ２に代入させる命令である。【０００６】  １５５は、データベースに対するアクセス文であるＳＱＬ文の１つのｉｎｓｅｒｔ文である。このｉｎｓｅｒｔ文は、データベース１４に値を新規に格納させる命令である。この例では、１５５は、表ＡにＡ１とＡ２とＡ３とＡ４のデータを格納させる命令である。【０００７】  １５６は、Ｂ１にＡ１の値を代入させる命令である。１５７は、Ｂ４に表Ａの全てのレコードのＡ２の値の合計値を代入させる命令である。１５８は、そのＢ４に３を加えた値をＢ３に代入させる命令である。１５９は、そのＢ３に２を乗じてＢ２に代入させる命令である。１５１０は、ｉｎｓｅｒｔ文によって、表ＢにＢ１とＢ２とＢ３とＢ４のデータを格納させる命令である。【０００８】  このような逐次型のデータベースアクセスプログラム１５において、もし、１５１から１５１０までの命令の順序が入れ替わったならば、データベース１４に格納される値が変ってしまう。たとえば、１５２と１５３の順序が逆に記述されて実行されたならば、まだＡ４に値が代入されていないときにＡ３が演算されるために、その値は１５２と１５３を入れ替えない場合の値と異なることになる。このことは、プログラマがプログラムを記述する場合において、命令を記述する順序に十分に注意を払って記述しなければならないことを意味している。【０００９】  ところで、プログラマがデータベースアクセスプログラムを記述する労力を減じるための方法としては、次のようなものが行われていた（非特許文献１参照）。まず、本来、プログラマがプログラムの中で記述すべき命令を、できるだけデータベースマネージメントシステムの機能の中に��り入れる方法である。たとえば、データベースのビユー記述に、データ項目間の演算を定義することによって、データベースアクセスプログラムにおいては、演算を行う命令の記述を無くすことができる。【００１０】  ここで、ビュー記述とは、たとえば、１つ又は複数のテーブルから、所望のデータを選択して導出させることにより、仮想的な１つのテーブルであるかのように見せるための記述である。このビュー記述は、仮想的表記述であるため、実表と異なり、それ自体はデータを持たない。【００１１】  次に、データベースマネージメントシステムにトリガー機能を持たせる方法がある。トリガー機能は、あるテーブルに対する更新等の処理をきっかけに、他のテーブルに対する更新等の処理を行わせる機能である。このトリガー機能によれば、同じデータベースにアクセスする複数のデータベースアクセスプログラム内において、本来、複数箇所に記述されるべき処理を一箇所に統合して記述することが可能となる。これにより、データベースアクセスプログラムの記述量の軽減が図られてきた。【００１２】  なお、あるデータベースに対し、他のデータベースの利用プログラムを適用するために、プログラムのテーブル名、項目名等を、自動的に変更する自動変換システムが、特許文献１に開示されている。また、オープン、クローズ、名称変更（リネーム）、作成（クリエイト）、削除等をトリガーとして、データに対する変換を行う技術が、特許文献２に開示されている。【００１３】
【非特許文献１】土田正士、小寺孝著  「ＳＱＬ２００３ハンドブック」株式会社ソフト・リサーチ・センター  ２００４年
【特許文献１】特開平６−１４９６３６
【特許文献２】特開２００３−１７７９４８
【発明の開示】
【発明が解決しようとする課題】
【００１４】  しかしながら、データベースにアクセスするプログラムの記述方式に大きな変化はなく、依然として、プログラマ等のユーザによって記述されたプログラムの命令の順序によってデータの処理が行なわれていた。したがって、ユーザが、命令を記述する順序を意識しながら、データベースアクセスプログラムを作成しなければならないことに変わりはない。【００１５】  また、ユーザは、 命令を記述する順序のみならず、全てのデータ項目の相互の関連にも注意を払って、データベースアクセスプログラムを記述しなければならない。【００１６】  さらに、ユーザは、 データベースアクセスプログラムごとに、同じデータ項目の演算のための命令を重複して記述しなければならない。このため、プログラム記述の量が増大するという問題点もある。【００１７】  本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、ユーザが、データベースへアクセスするプログラムの命令を記述する順序、データ項目の相互の関連等を意識する必要がなく、重複した命令を記述する必要がないデータ駆動型データベース処理装置、処理方法及び処理プログラムを提供することにある。
【課題を解決するための手段】
【００１８】  上記の目的を達成するため、本発明のデータ駆動型データベース処理装置は、データベースのスキーマ定義を記憶するスキーマ定義記憶手段と、前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を記述した導出定義を記憶する導出定義記憶手段と、前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する導出定義処理手段と、データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行するデータベースマネージメントシステムと、を有することを特徴とする。なお、本発明を、データ駆動型データベース処理方法、データ駆動型データベース処理プログラムとして捉えた発明も、本発明の一態様である。【００１９】  以上のような態様では、ユーザは、もっぱら目的とするデータ項目が他のどのデータ項目から導かれるかという因果関係だけに着目して導出定義を簡潔に記述するだけでよい。このため、従来の遂次型プログラムで必要とされた命令の記述の順序や、全体のデータ項目との関連を意識する必要がなくなる。したがって、データベースアクセスプログラムの作成のための労力が大幅に軽減される。【００２０】  また、スキーマと対応させて導出定義を１回記述するだけで、因果関係に基づいて必要とされる変化が連鎖的に加えられる。このため、ユーザは、その因果関係の元となるデータ項目に対するデータ操作命令だけをデータベースアクセスプログラムの中に記述するだけでよくなる。したがって、データベースアクセスプログラムの記述量が大幅に軽減されるという利点がある。
【発明の効果】
【００２１】  上記のような本発明によれば、ユーザが、データベースへアクセスするプログラムの命令を記述する順序、データ項目の相互の関連等を意識する必要がなく、重複した命令を記述する必要がないデータ駆動型データベース処理装置、処理方法及び処理プログラムを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明のデータ駆動型データベース処理装置の一実施形態を示す機能ブロック図である。
【図２】図１の実施形態における処理の流れを示すフローチャートである。
【図３】図１の実施形態におけるデータベースに対するアクセスの一例を示す説明図である。
【図４】図１の実施形態におけるトリガープログラムの実行の一例を示す説明図である。
【図５】本発明のデータ駆動型データベース処理装置の他の実施形態における表Ａ、表Ｂ、表Ｃのスキーマ定義を示す説明図である。
【図６】従来のデータベースに対するアクセスの一例を示す説明図である。
【符号の説明】
【００２３】  １…データ駆動型データベース処理装置  ２…スキーマ定義記憶手段  ３…導出定義記憶手段  ５…トリガープログラム記憶手段  ６…データベースアクセスプログラム記憶手段  ７…入力手段  ８…出力手段１１…表Ａのスキーマ定義１２…表Ｂのスキーマ定義１３，２３…データベースマネージメントシステム１４，２４…データベース１５，２５，３１…データベースアクセスプログラム２１…表Ａに対する導出定義２２…表Ｂに対する導出定義２３…データベースマネージメントシステム２３ａ…解釈部２３ｂ…実行部２３ｃ…アクセス部２４…データベース２６…導出定義処理手段２６ａ…判定部２６ｂ…生成部２７，３２…トリガープログラム
【発明を実施するための最良の形態】
【００２４】  次に、本発明を実施するための最良の形態（以下、実施形態と呼ぶ）について、図面を参照して具体的に説明する。【００２５】［実施形態の概要］  本実施形態は、図１に示すように、導出定義記憶手段３に、スキーマ定義内に記述されたデータ項目が、他のどのデータ項目から導かれるかという因果関係の記述である導出定義が記憶されている。この導出定義に基づいて、導出定義処理手段２６が、トリガープログラム２７（図３参照）を生成する。【００２６】  そして、データベースマネージメントシステム２３が、データベースアクセスプログラム２５（図３参照）から、因果関係の元となるデータ項目に変化が加えられたことをきっかけとして、トリガープログラム２７を実行することにより、そのデータ項目の値から影響を受ける全てのデータ項目の値に対して、自動的かつ連鎖的に変化を加えることができる。【００２７】［実施形態の構成］  次に、本実施形態の構成を説明する。本実施形態のデータ駆動型データベース処理装置１は、たとえば、所定のプログラムで動作するコンピュータによって、次のような機能を実現することにより構成されている。図１は、各機能を仮想的にブロック化した機能ブロック図である。なお、かかる機能を実現する方法、そのためのプログラム及びプログラムを記録した記録媒体も、本発明の一態様である。【００２８】  すなわち、本実施形態のデータ駆動型データベース処理装置１は、データベース２４、データベースマネージメントシステム２３、スキーマ定義記憶手段２、導出定義記憶手段３、導出定義処理手段２６、トリガープログラム記憶手段５、データベースアクセスプログラム記憶手段６、入力手段７、出力手段８等を有している。【００２９】  データベース２４は、本実施形態の取り扱うデータを記憶した記憶手段である。データベースマネージメントシステム２３は、データベース２４に対するアクセスを統合的に管理する手段である。このデータベースマネージメントシステム２３は、たとえば、後述するデータベースアクセスプログラム２５を解釈する解釈部２３ａ、解釈部２３ａによる解釈に応じてプログラムを実行する実行部２３ｂ、データベース２４へのアクセスを実行するアクセス部２３ｃ等を有している。【００３０】  これにより、データベースマネージメントシステム２３は、入力手段７から入力された要求（問い合わせ）に従って、データベース２４から対象となるデータを検索して、データの追加、変更、更新等、要求された処理を行うことができる。その他、データの一貫性、同時実行制御等の一般的なデータベースマネージメントシステムが有する機能については、周知技術であるため、説明を省略する。【００３１】  スキーマ定義記憶手段２は、データ項目から成る表を生成するためのデータ構造を定義したスキーマ定義を記憶する手段である。導出定義記憶手段３は、データ項目を導く因果関係を記述した導出定義を記憶する手段である。導出定義処理手段２６は、導出定義に基づいて、後述するトリガープログラム２７を作成する手段である。この導出定義処理手段２６は、判定部２６ａと生成部２６ｂとを有している。判定部２６ａは、因果関係に基づいて、導出定義を実行する順序を判定する手段で��る。生成部２６ｂは、判定部２６ａの判定結果に基づいて、トリガープログラム２７を生成する手段である。【００３２】  トリガープログラム記憶手段５は、導出定義処理手段２６において生成されたトリガープログラム２７を記憶する手段である。データベースアクセスプログラム記憶手段６は、データベース２４へアクセスするためのデータベースアクセスプログラム２５を記憶する手段である。【００３３】  入力手段７は、ユーザ（プログラマ、管理者等、広くデータベース２４を操作する者を含む）が、データ駆動型データベース処理装置１に種々の情報を入力して操作するための手段である。この入力手段７としては、キーボード、マウス、タッチパネル等、現在又は将来において利用可能なあらゆる入力装置を用いることができる。この入力手段７によって、ユーザが、データ項目、スキーマ定義、導出定義、データベースアクセスプログラム２５等を入力することができ、これに応じて、データベースマネージメントシステム２３が処理を行う。【００３４】  出力手段８は、データ駆動型データベース処理装置１におけるデータベース２４の内容、処理の経過等を、種々の態様で出力することにより、ユーザにより視認可能とする手段である。この出力手段８としては、ディスプレイ、プリンタ等、現在又は将来において利用可能なあらゆる出力装置を用いることができる。【００３５】  なお、上記のスキーマ定義記憶手段２、導出定義記憶手段３、トリガープログラム記憶手段５、データベースアクセスプログラム記憶手段６及びデータベース２４等のための記憶領域としては、コンピュータの各種メモリ、ハードディスク等、現在又は将来において利用可能なあらゆる記憶媒体が適用可能である。上記の説明では、各記憶手段２，３，５，６及びデータベース２４を概念的に区別したものであり、その一部若しくは全部を共通の記憶媒体において実現してもよい。【００３６】  また、導出定義処理手段２６、データベースマネージメントシステム２３等は、プログラムによって動作するＣＰＵ、メモリその他の周辺回路により構成される制御部によって実現されるものである。この制御部は、入力手段７及び出力手段８との間での情報の入出力機能、演算機能等、一般的なコンピュータが備える機能を有している。【００３７】［実施形態の作用］  以上のような本実施形態による処理の一例を、図２〜図４を参照して説明する。【００３８】［処理の概要］  まず、本実施形態の処理の概要を、図２のフローチャートに沿って説明する。まず、あらかじめユーザが入力手段７を用いて入力したスキーマ定義が、スキーマ定義記憶手段２によって記憶されているものとする。このようなスキーマ定義に対応する導出定義を、ユーザが入力手段７を用いて入力すると（ステップ１０１）、これが導出定義記憶手段３に記憶される（ステップ１０２）。【００３９】  導出定義処理手段２６の判定部２６ａは、導出定義の因果関係に基づいて、導出定義を実行する順序を判定し（ステップ１０３）、その判定結果に従って、生成部２６ｂがトリガープログラム２７を生成する（ステップ１０４）。このトリガープログラム２７は、トリガープログラム記憶手段に記憶される（ステップ１０５）。【００４０】  そ��て、データベースマネージメントシステム２３によるデータベースアクセスプログラム２５の実行を契機として（ステップ１０６）、データベースマネージメントシステム２３により、トリガープログラム２７が実行される（ステップ１０７）。【００４１】［処理の具体例］  次に、具体的な導出定義２１，２２を用いた処理の一例を、図３及び図４を参照して説明する。すなわち、図３において、２１は表Ａの導出定義であり、２２は表Ｂの導出定義である。２７は２６の導出定義処理手段から変換生成されるトリガープログラムである。２５は２４のデータベースにアクセスするデータベースアクセスプログラムである。【００４２】  表Ａの導出定義２１、表Ｂの導出定義２２は、ユーザが入力手段７から入力することにより、導出定義記憶手段３において、スキーマ定義記憶手段２に記述されている各データ項目に対応して記憶される。この時、ユーザは、「そのデータ項目の値がもっぱら他のどの項目の値から導かれるか」という因果関係だけに着目して定義記述するだけでよい。つまり、ユーザは、データ項目間の演算がどのような順序でなされるかということに対しては、考える必要はない。【００４３】  たとえば、表Ａにおいて、２１１はＡ２の値がＡ３の値とＡ４の値の和によって導かれることを定義した例である。２１２は、Ａ３の値がＡ４の値から１を減じた値から導かれることを定義した例である。２１３は、Ａ４の値がＡ１の値に５を加えた値から導かれることを定義した例である。【００４４】  また、表Ｂにおいても同様に、２２１はＢ１の値が表ＡのＡ１の値から導かれることを定義した例である。２２２はＢ２の値がＢ３の値に２を乗じた値から導かれることを定義した例である。２２３はＢ３の値がＢ４の値に３を加算した値から導かれることを定義した例である。２２４はＢ４の値が表Ａの全てのレコードのＡ２の値の合計値から導かれることを定義した例である。【００４５】  ここで、導出定義２１、導出定義２２のそれぞれに記述した内容は、スキーマで定義されている個々のデータ項目に、独立して記述することができる。このため、どのような順序でそれぞれのデータ項目の演算が実行されなければならないかということを考える必要はない。【００４６】  導出定義処理手段２６の判定部２６ａは、定義された表Ａの２１１から２１３までの導出定義と、表Ｂの２２１から２２４までの導出定義に基づいて、それぞれの因果関係から、実行の順序を判定する。たとえば、Ａ１の値によって定まるデータ項目は、表Ａにおける導出定義２１３によって定まるＡ４、表Ｂにおける導出定義２２１によって定まるＢ１であるため、これらが最初に実行可能となる。【００４７】  次に、Ａ４の値によって定まるデータ項目は、表Ａにおける導出定義２１２によって定まるＡ３であるため、導出定義２１２が実行可能となる。次に、Ａ３の値とＡ４の値によって定まるデータ項目は、導出定義２１１によって定まるＡ２であるため、導出定義２１１が実行可能となる。【００４８】  次に、Ａ２の値によって定まるデータ項目は、表Ｂにおける導出定義２２４によって定まるＢ４であるため、導出定義２２４が実行可能となる。次に、Ｂ４の値によって定まるデータ項目は、導出定義２２���によって定まるＢ３であるため、導出定義２２３が実行可能となる。次に、Ｂ３の値によって定まるデータ項目は、導出定義２２２によって定まるＢ２であるため、導出定義２２２が実行可能となる。このように、図３の例では、あるデータ項目が、既に決定されたデータ項目によって決定可能か否かを判断して、決定可能なデータ項目の導出定義を優先的に実行するように、導出定義の実行順序を定めることができる。【００４９】  そして、判定された実行順序に基づいて、生成部２６ｂは、図４に示すようなトリガープログラム３２を生成する。トリガープログラム３２内の３２１〜３２９の命令群は、表Ａの導出定義２１と表Ｂの導出定義２２における２１１〜２１３、２２１〜２２４にそれぞれ対応している。このように、生成部２６ｂによって、各データ項目の値の因果関係に基づいて、データベースマネージメントシステム２３が解釈実行できるトリガープログラム３２が自動的に変換生成される。【００５０】  生成されたトリガープログラム３２は、データベースマネージメントシステム２３で読み込まれて、トリガープログラム記憶手段５に登録される。そして、データベースマネージメントシステム２３は、データベースアクセスプログラム２５を実行することによって、導出定義２１，２２に記述されたデータ項目に変更が加えられた時点で、トリガープログラム３２を実行する。【００５１】  データベース２４に対するアクセスは、データベースアクセスプログラム２５からＳＱＬ文の命令によってなされ、その場合Ａ１に１２３４という値を代入する代入命令２５１と、その値をデータベース２４の表Ａに格納するＳＱＬ文であるｉｎｓｅｒｔ文２５２を記述するだけでよい。これにより、図６に示すような、従来のデータベースアクセスプログラム記述における１５２から１５１０までが不要となる。その代わりに、ＳＱＬ文であるｉｎｓｅｒｔ文２５２の記述の１行だけで、同じ処理結果が得られる。【００５２】  このデータベースアクセスプログラム２５で記述されたプログラム文２５２の実行は、図４の例に示すように、表Ａ内のデータ項目であるＡ１に対するＳＱＬ文であるｉｎｓｅｒｔ文３１の実行をきっかけとして、トリガープログラム３２内の命令３２１〜３２９までが、次のように連鎖的に実行される。【００５３】  すなわち、表Ａに対するＡ１の値の格納３１をきっかけとして、Ａ４にＡ１の値に５を加算した値の代入が実行される（３２１）。また、Ａ１の値への格納をきっかけとして、Ｂ１にＡ１の値の代入が実行される（３２５）。そして、Ａ４の値への代入をきっかけとして、Ａ３にＡ４の値から１を減じた値の代入が実行される（３２２）。さらに、Ａ３の値への代入をきっかけとして、Ａ２にＡ３の値とＡ４の値の和の代入が実行される（３２３）。このように、表Ａのスキーマで記述されているデータ項目の値の全てが代入されたことをきっかけとして、表Ａへの格納が実行される（３２４）。【００５４】  次に、表Ａへの格納をきっかけとして、Ｂ４に表Ａに存在するＡ２の全ての値の合計値の代入が実行される（３２６）。また、Ｂ４の値への代入をきっかけとして、Ｂ３にＢ４の値に３を加算した値の代入が実行される（３２７）。そして、Ｂ３の値へ���代入をきっかけとして、Ｂ２にＢ３に２を乗じた値の代入が実行される（３２８）。このように、表Ｂのスキーマで記述されているデータ項目の値の全てが代入されたことをきっかけとして、表Ｂへの格納が実行される（３２９）。【００５５】  したがって、ただ１つのデータ項目であるＡ１がデータベースに格納されたことをきっかけとして、自動的にかつ連鎖的にトリガープログラム３２の中の全ての処理（３２１〜３２９）が実行される【００５６】［実施形態の効果］  以上のような本実施形態（本発明）の効果は、次の通りである。すなわち、本実施形態によれば、各データ項目を導くための導出定義は、それぞれが実行される順序を考慮することなく記述することができる。このため、従来は、ユーザが遂次型プログラムを作成する場合に、実行順序に対する考慮が必要とされたが、本実施形態では、実行順序に対するユーザの考慮の労力が、大幅に軽減される。【００５７】  ＣＰＵは、逐次的にプログラムを実行するのであるから、最終的に実行されるプログラムは、所定の順序に記述されていなければならないことには変わりはない。しかし、ユーザがデータベースのプログラミングをする際にも、この制約に永久に拘束されなければならない理由はない。理想的なプログラミング手法は、人間が機械の都合に合わせる手法ではなく、人間の自然な考え方に合わせてプログラミングできる手法のはずである。本実施形態は、逐次的プログラミングの制約からユーザを解放するものであり、データベースを使用する人間に要求される能力を低減し、データベースのプログラミングスタイル自体を大幅に変えることができる意味を有している。【００５８】  また、各データ項目を導く導出定義のみを考慮すればよく、全てのデータ項目の相互の関連まで配慮する必要がないので、ユーザの労力がさらに軽減される。【００５９】  さらに、データベースアクセスプログラムでは、最初のきっかけとなるデータ項目に、変化を加えるだけでよくなる。このため、データベースアクセスプログラムの記述量が飛躍的に減少する。【００６０】  たとえば、図６の従来型の場合、データベースアクセスプログラム１５においては、１０行のプログラム記述１５１〜１５１０が必要であった記述量が、本実施形態では、２行のプログラム記述２５１と２５２だけでよくなる。その他の記述は、各データ項目間の因果関係の記述である図３の表Ａの導出定義２１および表Ｂの導出定義２２に記述されていればよい。このため、表Ａならびに表Ｂに対するデータベースアクセスプログラム２５の数がいくつあったとしても、各データベースアクセスプログラム２５におけるプログラム記述量を、大幅に軽減することができる。【００６１】  なお、本実施形態の特徴は、単に、プログラムを自動生成したり、所望のデータを連鎖的に処理することだけにあるのではない。これは、従来の表計算のソフトウェアにおける関数やこれに類似する処理と比較してみると、明らかである。たとえば、Ｅｘｃｅｌ の関数は、あるデータを使用（検索、表示、更新等）する際に、あらかじめ定義された演算式に基づいて、指定された引数に対する演算を行い、戻り値を返すことにより仮想的に集計を行うものである。【００６２】  また、たと��ば、データベースマネージメントシステムのビュー記述には、演算式を書くことができる。これも、データを使用する時点で、仮想的に集計する点では関数と同様である。さらに、データベースマネージメントシステムによっては、同じテーブル内のデータ項目を使った数式を記述して、値を仮想的に求められるものもある。これも、関数に代わって直接数式を書くところが違うだけで、そのデータを使用する時点で、仮想的に演算や集計が行われることに変わりはない。【００６３】  しかしながら、本実施形態は、上記の関数及びこれに類似する処理のように、仮想的に計算や集計結果を求めるものではない。本実施形態は、データの更新時に、影響を与える関連データを更新しておいて、データベース内に実際にその演算結果のデータを持たせることを特徴とする。たとえば、図４の３１に示したＳＱＬのＩｎｓｅｒｔ文によって、Ａ１がデータベース２４に格納された時点で、Ａ１が影響を与える項目の全て、すなわち、Ａ２，Ａ３，Ａ４，Ｂ１，Ｂ２，Ｂ３，Ｂ４の値が連鎖的に、かつ、自動的に更新される。【００６４】  この点が、本実施形態と関数等とが違うところである。関数型の場合には、データを使用するときに関数が動作するので、非常に時間がかかる。本実施形態では、データベースは、実際に演算して更新されたデータを持つため、それを使用する（読み出す）時には、一切演算が不要となり、即座にデータを持ってくることができる。一般に、データ更新とデータの読み出し利用頻度は、圧倒的に読み出しのほうが多いので、本実施形態によれば、システム全体に対する負荷が軽減されることになる。【００６５】  しかも、本実施形態では、異なるテーブル間にまたがった値も、演算集計して更新される。たとえば、図３の２２４は、表ＡのＡ２を集計して、その合計をＢ４に入れている。このため、関数方式であっても異なるテーブルのデータを集計したり、演算することができない従来のデータベースマネージメントシステムよりも、本実施形態の方が優れているといえる。【００６６】［他の実施形態］  本発明は、上記のような実施形態に限定されるものではなく、スキーマ定義、導出定義、トリガープログラム、データベースアクセスプログラムの具体的な態様は、自由である。また、導出定義における各データ項目間の因果関係から、トリガープログラムの実行順序を判定する基準についても、上記の実施形態で例示したものには限定されない。【００６７】  たとえば、上記の実施形態では、Ａ４＝Ａ１＋５、Ａ２＝Ａ３＋Ａ４であるから、Ａ４とＡ２に直接の因果関係があるので、その順序関係で式の実行順序が決まる。また、Ａ４＝Ａ１＋５、Ａ２＝Ａ３＋１、Ａ３＝Ａ４−１のように、間接であっても因果関係があれば、その順序関係で各々の式の実行順序が決まる。【００６８】  しかし、たとえば、Ａ４＝Ａ１＋５、Ａ２＝Ａ１＋１のように、Ａ４とＡ２に因果関係がなければ、その演算順序は、一義的に決めることはできない。その場合には、上記の判定部２６ａが、それらの式を同レベルの順序と判定し、後述する並行処理を行わせることもできるし、所定の基準に基づいて、実行順序を決めることもできる。以下に、実行順序を決める場合の一例を説明する。なお、こ��は一例に過ぎず、実行順序については、システムの処理のし易さやシステムの都合で決めればよいので、本発明がこの例に限定されるものではない。【００６９】  すなわち、図５に示すようなスキーマ定義による表Ａ、表Ｂ、表Ｃを対象とする場合を想定する。このとき、導出定義として、次のような式があるとする。  Ａ４＝Ａ１＋５  Ａ２＝Ａ１＋１  Ｃ１＝ｓｕｍ（Ａ１）  Ｂ４＝ｓｕｍ（Ａ１）【００７０】  ここで、Ａ１が決められた場合、次のようにして順序を決定することができる。［１．式が同じテーブル内のフィールドで求められる場合（Ａ４＝Ａ１＋５など）］（方法１：スキーマにおけるフィールド記述の順序による方法）  Ａ４とＡ２については、Ａ２のほうが上記表Ａのスキーマ定義において、先に記述されているので、実行順序は、Ａ２，Ａ４となる。（方法２：フィールド名の名称のアルファベット、数字などの文字順序による方法）  Ａ４とＡ２については、Ａ２のほうが文字的に小さいので、実行順序は、Ａ２，Ａ４となる。【００７１】［２．式が他のテーブル内のフィールドによって求められる式も含んでいる場合（Ｂ４＝ｓｕｍ（Ａ１）がある場合など）］  まず、同じテーブル内のフィールドの式（例では、Ａ２，Ａ４）が実行され（その中での実行順序は（１）の方法を適用すればよい）、次に、他テーブル内のフィールドを使った式が実行されるという方法が考えられる。【００７２】  さらに、他テーブル内のフィールドを使った式が複数ある場合には、上記の［１．…］で示したように、スキーマに記述されたテーブルの順序（表Ａ、表Ｂ、表Ｃと言った順序）や、そのテーブル名の文字順などにしたがって、実行されることが考えられる。この例では、データベース内の表定義の順序が、表Ａ、表Ｂ、表Ｃなので、上記の式でＡ１の値が決定された場合は、Ａ２，Ａ４，Ｂ４，Ｃ１の順序となる。【００７３】  また、導出定義文にて定義された式で、同レベルの順序と判定しうる式は、並行処理することもできる。例えば、現在のコンピュータの仕組み上、１つのＣＰＵは遂次的にしか処理を実行できない。しかし、複数のＣＰＵを持ったプロセッサによって、並行処理させることは可能である。これにより、データを並行処理させて、処理速度を向上させることができる。【００７４】  また、本発明は、特定の１台のコンピュータによって実現されるものには限定されず、データベース用、その他のデータ処理用等の複数のサーバ装置により構成したり、各機能ブロックに応じて複数台のコンピュータで処理を分散させる等により、複数台が連繋して処理を行うシステムとして構成することもできる。例えば、上記の並行処理は、分散処理させることもできる。【００７５】  また、因果関係としては、上記の実施形態では、(a)同じテーブル内のフィールドでの因果関係(b)テーブルにまたがったフィールドの因果関係を例示した。ただし、(c)複数のデータベースにまたがったフィールドの因果関係(d)他サーバ内のデータベースにまたがったフィールドの因果関係であってもよい。【００７６】  さらに、本発明が取り扱うデータについても、特定のものには限定されない。本発明は、通常のデータベースにアクセスするプログラムとして、幅広く適用可能である。
【図１】
2009087730.tif 000003
【図２】
2009087730.tif 000004
【図３】
2009087730.tif 000005
【図４】
2009087730.tif 000006
【図５】
2009087730.tif 000007
【図６】
2009087730.tif 000008
【手続補正書】
【提出日】平成22年2月24日(2010.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベースのスキーマ定義を記憶するスキーマ定義記憶手段と、
前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を、個々のデータ項目ごとに独立して記述した導出定義を記憶する導出定義記憶手段と、
前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する導出定義処理手段と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行するデータベースマネージメントシステムと、
を有することを特徴とするデータ駆動型データベース処理装置。
【請求項２】
前記導出定義処理手段は、
前記因果関係に基づいて、前記導出定義を実行する順序を判定する判定部と、
前記判定部によって判定された順序に従って、前記トリガープログラムを生成する生成部と、
を有することを特徴とする請求項１記載のデータ駆動型データベース処理装置。
【請求項３】
前記判定部は、既に決定したデータ項目のみによってデータ項目を導出できる導出定義が、優先的に実行されるように、実行する順序を判定することを特徴とする請求項２記載のデータ駆動型データベース処理装置。
【請求項４】
データ項目に影響を与える他のデータ項目に変化を加えるプログラムであって、前記データベースマネージメントシステムにより実行可能なデータベースアクセスプログラムを記憶するデータベースアクセスプログラム記憶手段を有することを特徴とする請求項１記載のデータ駆動型データベース処理装置。
【請求項５】
コンピュータが、
データベースのスキーマ定義を記憶する処理と、
前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を、個々のデータ項目ごとに独立して記述した導出定義を記憶する処理と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記導出定義に基づいて、データ項目に対して連鎖的に変化を加える処理と、
を実行することを特徴とするデータ駆動型データベース処理方法。
【請求項６】
前記連鎖的に変化を加える処理は、
前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する処理と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行する処理と、
を含むことを特徴とする請求項５記載のデータ駆動型データベース処理方法。
【請求項７】
前記コンピュータが、
データ項目に影響を与える他のデータ項目に変化を加えるデータベースアクセスプログラムを記憶する処理と、
前記データベースアクセスプログラム及び前記トリガープログラムを実行する処理と、
を実行することを特徴とする請求項６記載のデータ駆動型データベース処理方法。
【請求項８】
コンピュータにより実行可能なプログラムであって、
前記コンピュータに、
データベースのスキーマ定義を記憶する処理と、
前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を、個々のデータ項目ごとに独立して記述した導出定義を記憶する処理と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記導出定義に基づいて、データ項目に対して連鎖的に変化を加える処理と、
を実行させることを特徴とするデータ駆動型データベース処理プログラム。
【請求項９】
前記連鎖的に変化を加える処理は、
前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する処理と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行する処理と、
を含むことを特徴とする請求項８記載のデータ駆動型データベース処理プログラム。
【請求項１０】
前記コンピュータに、
データ項目に影響を与える他のデータ項目に変化を加えるデータベースアクセスプログラムを記憶する処理と、
前記データベースアクセスプログラム及び前記トリガープログラムを実行する処理と、
を実行させることを特徴とする請求項９記載のデータ駆動型データベース処理プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記の目的を達成するため、本発明のデータ駆動型データベース処理装置は、データベースのスキーマ定義を記憶するスキーマ定義記憶手段と、前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を、個々のデータ項目ごとに独立して記述した導出定義を記憶する導出定義記憶手段と、前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する導出定義処理手段と、データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行するデータベースマネージメントシステムと、を有することを特徴とする。なお、本発明を、データ駆動型データベース処理方法、データ駆動型データベース処理プログラムとして捉えた発明も、本発明の一態様である。
【手続補正書】
【提出日】平成22年6月22日(2010.6.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベースのスキーマ定義を記憶するスキーマ定義記憶手段と、
前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を、個々のデータ項目ごとに独立して記述した導出定義を記憶する導出定義記憶手段と、
前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する導出定義処理手段と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行するデータベースマネージメントシステムと、
を有することを特徴とするデータ駆動型データベース処理装置。
【請求項２】
前記導出定義処理手段は、
前記因果関係に基づいて、前記導出定義を実行する順序を判定する判定部と、
前記判定部によって判定された順序に従って、前記トリガープログラムを生成する生成部と、
を有することを特徴とする請求項１記載のデータ駆動型データベース処理装置。
【請求項３】
前記判定部は、既に決定したデータ項目のみによってデータ項目を導出できる導出定義が、優先的に実行されるように、実行する順序を判定することを特徴とする請求項２記載のデータ駆動型データベース処理装置。
【請求項４】
データ項目に影響を与える他のデータ項目に変化を加えるプログラムであって、前記データベースマネージメントシステムにより実行可能なデータベースアクセスプログラムを記憶するデータベースアクセスプログラム記憶手段を有することを特徴とする請求項１記載のデータ駆動型データベース処理装置。
【請求項５】
コンピュータが、
データベースのスキーマ定義を記憶する処理と、
前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を、個々のデータ項目ごとに独立して記述した導出定義を記憶する処理と、
前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する処理と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行する処理と、
を実行することを特徴とするデータ駆動型データベース処理方法。
【請求項６】
前記コンピュータが、
データ項目に影響を与える他のデータ項目に変化を加えるデータベースアクセスプログラムを記憶する処理と、
前記データベースアクセスプログラム及び前記トリガープログラムを実行する処理と、
を実行することを特徴とする請求項５記載のデータ駆動型データベース処理方法。
【請求項７】
コンピュータにより実行可能なプログラムであって、
前記コンピュータに、
データベースのスキーマ定義を記憶する処理と、
前記スキーマ定義におけるデータ項目とこれを導出するための他のデータ項目との因果関係を、個々のデータ項目ごとに独立して記述した導出定義を記憶する処理と、
前記導出定義に基づいて、データ項目に対して連鎖的に変化を加えるトリガープログラムを生成する処理と、
データ項目に影響を与える他のデータ項目に変化が加えられたことをきっかけにして、前記トリガープログラムを実行する処理と、
を実行させることを特徴とするデータ駆動型データベース処理プログラム。
【請求項８】
前記コンピュータに、
データ項目に影響を与える他のデータ項目に変化を加えるデータベースアクセスプログラムを記憶する処理と、
前記データベースアクセスプログラム及び前記トリガープログラムを実行する処理と、
を実行させることを特徴とする請求項７記載のデータ駆動型データベース処理プログラム。
【国際調査報告】
2009087730.tif 000009
2009087730.tif 000010