(57)【特許請求の範囲】
【請求項１】
データベースへのアクセスの数を制限するリレーショナルデータベース制御システムであって、
上記リレーショナルデータベースは、第一の記憶ユニット中に蓄えられ、少なくとも一連の記録を含み、
上記記録の各々は、少なくとも一つのデータ領域を含み、
上記記録の各々が、少なくとも一つの変数と、上記変数の中の少なくとも一つの変数の値に作用し得る少なくとも一つの方法を含むオブジェクトと関連付けられ、
上記リレーショナルデータベース制御システムは、
上記オブジェクトを記憶するための第二の仮記憶ユニットと、
オブジェクト構造を定義する複数のオブジェクトクラスを定義し、及び上記オブジェクトクラスの一つからクラスの事例またはオブジェクトを生成するように構成されたオブジェクトクラスユニットと、
上記第二の仮記憶ユニット中に蓄えられた少なくとも一つのオブジェクト中の少なくとも一つの変数を読み取り、変更する訂正ユニットと、
上記リレーショナルデータベースと共に用いられるコマンドを生成するように構成されたコマンド生成ユニットであって、上記第一の記憶ユニットと上記第二の仮記憶ユニットの間で伝達されるデータが上記コマンド生成ユニットで制御され、上記第一の記憶ユニットに対するアクセス数を制限するようにしたコマンド生成ユニットと、
上記第一の記憶ユニットと上記第二の仮記憶ユニットの間で各方向にデータを伝達するように構成されたトランスコーディングユニットであって、上記リレーショナルデータベース中の記録を上記オブジェクトと関連させ、ここで、上記記録は、上記オブジェクトの変数に対応する少なくとも一つの領域を含み、上記記録を上記オブジェクトと関連させることが、対応するオブジェクトのクラスの機能及び上記記録の少なくとも一つの領域における情報として、上記オブジェクトの少なくとも幾つかの変数の値を決定することを含むトランスコーディングユニットと、
上記オブジェクトの少なくともいくつかの履歴を管理し、上記オブジェクトの少なくとも一つの変数に対する少なくとも二つの異なる値を関連させ、ここで、上記値の各々が、二つの技術領域、上記変数の値が知られた日付を表す知られた日付の領域、及び上記変数が有効となった日付を表す有効な日付の領域に関連するようにした履歴ユニットとを含む制御ユニットと
を含むリレーショナルデータベース制御システム。
【請求項２】
記録に関連するオブジェクトが、上記第二の仮記憶ユニット中に蓄えられ、上記訂正ユニットによって変更されたときに、上記制御ユニットが、上記リレーショナルデータベース中の記録への変化を防止するように構成されたロック管理システムをさらに含む請求項１記載のシステム。
【請求項３】
上記制御ユニットが、イベントと呼ばれる作業手順を管理し、上記コマンド生成ユニットが、イベントが終結したときにのみ、上記第二の仮記憶ユニットから上記第一の記憶ユニットにデータ伝達コマンドを送るようにした請求項２記載のシステム。
【請求項４】
上記コマンド生成ユニットが、一連の以前に生成したコマンドを蓄えているキャッシュメモリを含む請求項３記載のシステム。
【請求項５】
上記リレーショナルデータベースへのアクセスの数を制限するリレーショナルデータベースを制御する方法であって、上記リレーショナルデータベースは、第一の記憶ユニット中に蓄えられ、少なくとも一連の記録を含み、上記記録の各々は、少なくとも一つのデータ領域を含み、
上記記録の各々は、少なくとも一つの変数と少なくとも一つの変数の値に影響を与える少なくとも一つの方法を含むオブジェクトに関連しており、
上記少なくとも一つの方法は、次の段階、すなわち、
オブジェクト構造を定義するオブジェクトクラスの定義の段階と、
上記オブジェクトクラスの一つからクラスの事例またはオブジェクトを生成する段階と、
第二の仮記憶ユニット中に少なくとも一つのオブジェクトを入れる段階であって、少なくとも一つのオブジェクトを入れることが、
上記第一の記憶ユニット中で、上記オブジェクトの一つに対応する記録を読み取り、
上記オブジェクトのクラスの構造の機能として、上記オブジェクトに上記記録を関連付け、ここで、上記オブジェクトの少なくともいくつかの変数は、上記記録中の上記データ領域の少なくともいくつかに対応し、
上記第二の仮記憶ユニット中に上記オブジェクトを書き込むことを含む
上記第二の仮記憶ユニット中に少なくとも一つのオブジェクトを入れる段階と、
上記第二の仮記憶ユニット中に蓄えられた少なくとも一つのオブジェクトの少なくとも一つの変数を読み取り及び変更する段階と、
上記第一の記憶ユニット中に、上記第二の仮記憶ユニット中に蓄えられた少なくとも一つのオブジェクトに対応する少なくとも一つの記録を蓄える段階であって、少なくとも一つの記録を蓄えることが、
上記第二の仮記憶ユニット中の上記記録に対応するオブジェクトを読み取り、
上記オブジェクトのクラス構造の機能として、上記オブジェクトから上記記録に情報を伝達し、ここで、上記オブジェクトの少なくともいくつかの変数は、上記記録中の上記データ領域の少なくともいくつかに対応し、
上記第一の記憶ユニット中に上記記録を書き込み、ここで、上記リレーショナルデータベースに適用されるコマンドは、オペレータによって付与されるコマンドから生成されることを、各記録のために含むように、
上記第一の記憶ユニット中に、上記第二の仮記憶ユニット中に蓄えられた少なくとも一つのオブジェクトに対応する少なくとも一つの記録を蓄える段階と、
上記オブジェクトの少なくともいくつかの履歴を管理して上記オブジェクトの少なくとも一つの変数に対する少なくとも二つの異なる値を関連させる段階であって、ここで、上記値の各々は、二つの技術領域、上記変数の値が知られた日付を表す知られた日付の領域、及び上記変数の値が有効となった日付を表す有効な日付の領域と関連している段階とを含む
リレーショナルデータベースの制御方法。
【請求項６】
上記方法が、イベントと呼ばれる作業手順を管理し、上記イベントが、少なくとも二つの入れる段階、及び／または少なくとも二つの訂正及び／または変更の段階を含み、単一の蓄える段階で終結することを特徴とする請求項５記載の方法。
【請求項７】
上記記録に関連するオブジェクトが上記第二の仮記憶ユニット中に蓄えられて、変更されたときに、ロックすることによって上記リレーショナルデータベース中の記録の変更を防止する、上記リレーショナルデータベース中の記録へのアクセス制御の段階を含むことを特徴とする請求項６記載の方法。
【請求項８】
一連の以前に生成したコマンドを蓄えるキャッシュメモリの管理を含む、第一のアクセスロジックに従う自動コマンドジェネレータの段階を含む請求項７記載の方法。
【請求項９】
上記オブジェクトの少なくともいくつかが、上記オブジェクトに関連する記録中のデータ領域に対応する少なくとも一つの蓄えられた変数と、少なくとも一つの演繹的な変数であって、該演繹的な変数の値は、上記オブジェクト及び／または上記オブジェクトのクラス構造に関連する記録中の少なくとも一つのデータ領域の値から開始する上記関連付けの段階の間に決定される演繹的な変数とを含むことを特徴とする請求項８記載の方法。
【請求項１０】
予め決定された条件を満足する少なくとも一つのオブジェクトに対する探索が、二つの段階、すなわち、上記第二の仮記憶ユニット中に蓄えられたオブジェクトの中での探索に対応する段階と、仮にその探索が終結されない場合に上記第一の記憶ユニット中に蓄えられた記録の中で行われる第二の段階とで遂行されることを特徴とする請求項９記載の方法。
【発明の詳細な説明】
本発明は、コンピューターシステムの設計、開発、及び使用に関する。より詳しくは、本発明は、制御、換言すれば特にリレーショナルデータベースの訂正(retrieval)及び最新化に関する。
従来、多くのデータベース管理システムが知られている。一般的には、それらは、記憶メモリへの平面的(plane)なリレーショナルアプローチに基づく。記憶メモリは、テーブル、記録、及びデータ領域に分かれる。これらのシステムを用いるのは、アプリケーション開発者や末端ユーザーにとって、複雑であり、習熟が困難である。特に、第一にデータベース構造の、第二に使用可能な命令(order)または要求(request)の十分な知識を要する。
これらのリレーショナルデータベースの使用を簡単にするために、いくつかのツール(tools)が提案されている。すなわち、バイレベル言語、コンパイラ、コードジェネレータ(code generators)、人／機械インターフェース等である。しかし、全ての場合において、それらは、ユーザーとデータベースの間の単なる中間層(intermediate layers)にすぎない。依然として、データベースの構造、特にこれらのデータの間に定義(defined)された関係を知ることが必要である。
さらに、従来のデータベース管理システムにおいては、データベースへの非常に多くの数の読み取り及び書き込みのアクセスがある。訂正及び変更の各々は、データベース記憶ユニットへのアクセスを要求する。これには、多くの欠点、特に処理時間の増加（特にデータベースが遠い場合には、アクセスタイムが非常に長くなる。）、処理の費用の増加（データベースへのアクセスに対し料金が徴収され、及び／または料金支払ネットワークを通じてアクセスした場合である。）、記憶ユニットの摩滅(wear)等がある。
本発明の主な目的の一つは、従来技術のもつこれらの欠点を克服することである。
より詳しくは、本発明の第一の目的は、このデータベースへのアクセスの数を制限することのできるリレーショナルデータベース制御システムを提供することである。換言すれば、本発明の目的は、与えられたアプリケーションのためのデータベースへのアクセスの数が、従来のシステムにおいて必要とされていたよりも、ずっと少なくてすむようなシステムを提供することである。
本発明の他の目的は、データベースの構造やデータ間に定義された関係についての知識をもつ必要が全くないシステムを提供することである。
本発明の他の目的は、間に合うように(in time)データを管理すること、特に、模擬の過去及び未来の日付における訂正や遡及的変更を許可する(authorizing)ことが容易にできるシステムを提供することである。さらに、本発明の補足的な目的は、全てのデータにおけるこの型の遡及的変更の対話(interaction)を許容することである。
これらの目的及び後で明らかにされるその他の目的は、データベースへのアクセスの数を制限するリレーショナルデータベース制御システムを通して、本発明において達成される。該データベースは、第一のリレーショナルアクセスロジック(first relational access logic)に従って制御される第一の記憶ユニット(first storage unit)内に蓄えられ、少なくとも一連の記録を含む。該記録の各々は、少なくとも一つのデータ領域(data field)を含む。該記録の各々がオブジェクトと関わるシステムは、少なくとも一つの変数と、該少なくとも一つの変数の値に影響を及ぼす少なくとも一つの方法を含む。該システムにおいては、データの訂正及び／または変更が、第二オブジェクト指向アクセスロジック(second object oriented access logic)に基づいて、上記オブジェクト上でのみ行われる。該システムは、次のユニット、すなわち、
オブジェクトに対する第二の仮記憶ユニット(second temporary storage unit)と、
オブジェクトクラスを定義するユニット（ここで、オブジェクトクラスは、オブジェクト構造と、該オブジェクトクラスの一つからクラスの事例またはオブジェクトを生成する手段を定義する）と、上記方法を用いて、上記第二のアクセスロジックに適合して、上記第二の仮記憶ユニットの中に蓄えられた少なくとも一つのオブジェクト中の少なくとも一つの変数を訂正及び変更するためのユニットと、上記第二のアクセスロジックに対応するコマンドから開始する、上記第一のアクセスロジックに適合する、上記データベースと共に用いられる自動的に生成するコマンドのためのユニットとを含む制御ユニットと、
第一の記憶ユニットから第二の記憶ユニットへ、または第二の記憶ユニットから第一の記憶ユニットへデータを転送し、トランスコーディング(transcoding)によって上記データベース中の記録を上記オブジェクトと関連させるためのユニット（ここで、該記録は、上記オブジェクトの変数に対応した少なくとも一つの領域を含み、また、上記トランスコーディングは、対応するオブジェクトのクラスの機能(function)である。）とからなる。
上記第一の記憶ユニットと上記第二の記憶ユニットの間のデータの伝達は、上記第一の記憶ユニットへのアクセスの数を制限するように、上記自動コマンドジェネレータユニットによって制御される。
このように、データベースの制御は、たいへん簡略化される。データベースの構造やこのデータベースへのアクセスコマンドについての知識は不要である。ユーザーは、オブジェクト指向として通常言及されるアプローチを用いて、単にオブジェクトを操作すればよい。本発明のシステムは、オブジェクト及びそれに対応する記録を、それ自身で自動的かつ明白に伝達し、トランスコード(transcode)する。
さらに、本発明によれば、オブジェクトと記録は、完全に別個に蓄えられる。オブジェクトは第二の仮記憶ユニットに蓄えられ、記録は第一のデータベース記憶ユニットに蓄えられる。ユーザーは、ただ、オブジェクトを含む第二の記憶ユニットにアクセスすることができる。
したがって、本システムは、第一の記憶ユニットと第二の記憶ユニットの間でデータを伝達するデータ伝達ユニットを含むものであり、該データ転送ユニットは、データベース中に蓄えられた記録及びそれに対応するオブジェクトクラスの構造を利用して、オブジェクトを再建(rebuild)した後、これら再建されたオブジェクトを仮記憶ユニット中に蓄える。逆に、転送ユニットは、第一の記憶ユニット中に蓄えられた記録の中の変更されたオブジェクトをトランスコードする。
これらの伝達またはトランスコーディングの機能は、ユーザーにとって完全に明白(transparent)である。ユーザーは、第二の記憶ユニット中に含まれるオブジェクト上で作業する。このように、データベースへのアクセスの数は制限される。
特に、本発明のシステムは、イベント(events)と呼ばれる作業手順(work sequences)を管理することができる。上記自動コマンドジェネレータユニットは、イベントが終結(terminated)された時にのみ、第二の記憶ユニットから第一の記憶ユニットまで伝達するために、データ伝達コマンドを送る。このようにして、いくつかの変更が、イベントの間にオブジェクト上でなされ得る。しかし、イベントの最後には、データベース中にはただ一つの書き込み機能のみがあるであろう。
有利には、上記コントロールユニットは、記録に関わるオブジェクトが第二の記憶ユニット中に蓄えられ、訂正及び変更ユニットによって変更されたときに、データベース中の記録が変更されるのを防止するロック管理ユニット(lock management unit)を含む。
さらに、本発明の好ましい態様において、上記システムは、上記オブジェクトの少なくともいくつかのための履歴管理ユニット(history management unit)を含み、該履歴管理ユニットは、上記オブジェクトの少なくとも一つの変数を少なくとも二つの別個の値と関連させ、該値の各々は、値の有効性(validity)を示す日付をもつ少なくとも一つの技術領域と関連する。
このように、データ上で訂正を行うのは、もはや平面的(plane)ではない。訂正は、時間の任意の点（過去または未来）において架空のものとしてなされ得る。さらに、変更は、遡及的になすことができ、過去の選ばれた瞬間において発生し得る。
もし、値の少なくともいくつかが、二つの技術領域、すなわち、値が知られた日付を示す知られた日付の領域(knowledge date field)と、値が有効となった日付を示す有効な日付の領域(effective date field)とに関連するのであれば、有利である。
多くのアプリケーション、特に管理アプリケーションにおいて、知られた日付と有効な日付の間の区別を知り、または区別することは、重要である。
好ましくは、自動コマンドジェネレータユニットは、予め生成される一連のコマンドを蓄えるキャッシュメモリを含む。このようにして、コマンドを生成することが、より容易となる。
本発明は、また、上述のシステムに対応するリレーショナルデータベース制御プロセスに関する。特に、このプロセスは、第二の仮記憶ユニット中に少なくとも一つのオブジェクトを入れる(load)ための段階を含み、また、次に掲げる段階、すなわち、第一の記憶ユニット中のオブジェクトの一つに対応する記録を読みとる段階と、オブジェクトのクラス構造の機能として、オブジェクトに記録を第一にトランスコードする段階（ここで、該オブジェクトの変数の少なくともいくつかは、該記録中の少なくともいくつかのデータ領域に対応する。）と、該オブジェクトを第二の仮記憶ユニット中に書き込む段階とを含む。
蓄え(save)は、第一の記憶ユニットの中で釣り合うように(symmetrically)なされる。
好ましくは、オブジェクトの少なくともいくつかは、オブジェクトと関連する記録中のデータ領域に対応する少なくとも一つの蓄えられた変数と、少なくとも１つの演繹的な変数（該変数の値は、第一のトランスコーディングが、オブジェクト及び／またはオブジェクトのクラス構造と関連した記録中の少なくとも一つのデータ領域の値から開始したときに、決定される。）とからなる。
好ましくは、リレーショナルデータベースへのアクセスを制限するために、前もって決定された条件を満たす少なくとも一つのオブジェクトに対する探索は、次の二つの段階、すなわち、第二の記憶ユニット中に蓄えられたオブジェクト中で探索する第一の段階と、仮に探索が終結しない場合に第一の記憶ユニット中に蓄えられた記録中で探索する第二の段階とからなる。
本発明の他の特性及び利点は、説明のために与えられた本発明の好ましい態様の非制限的な記載、及び添付の図面を読むことによって、明らかとなるであろう。
添付された図面において、図１は、本発明のシステムの一般的な構造を表すブロック線図である。
図２は、図１のシステムにおけるデータベース中のオブジェクトクラスとテーブルの間の連結(links)を模式的に示す図である。
図３は、簡略化されたフローチャートの形式で本発明の方法を示す図である。
図４は、本発明のオブジェクトの年代順の管理の原理を示す図である。
したがって、本発明は、オブジェクト指向概念(concept)を利用したリレーショナルデータベース制御システムに関する。換言すれば、本発明のシステムは、リレーショナルデータベースとオブジェクト領域の間の架け橋を自動的かつ明白に構築する。ユーザーは、単にオブジェクトの形でデータを操作すればよい。データは、従来のリレーショナルデータベースの中に蓄えられる。
図１は、本発明のシステムを模式的に示す。
本発明のシステムの本質的な特性は、ユーザーがデータベースに直接アクセスすることなく、従来のリレーショナルデータベース１１（例えば、ＯＲＡＣＬＥフォーマット（登録商標）におけるもの）の制御を許容する点である。他方、ユーザーは、オブジェクト指向制御ユニット１４と対話する（１２、１３）。ユーザーは、制御ユニット１４を利用して、仮記憶ユニット１５中に蓄えられたオブジェクトを単に操作（換言すれば、訂正及び／または変更）する。
本発明のシステムは、表示(representation)と記憶(storage)の二つの全く異なる方法を管理する。すなわち、ユーザーにとって唯一のアクセス可能なモード(mode)である、オブジェクトによる表示に基づくモードＩと、制御ユニット１５によって完全に自動的に遂行される、リレーショナルデータベースに対応するモードＩＩとである。
二つのモードの間の連結は、トランスコーディングユニット１６によってなされる。トランスコーディングユニット１６は、仮記憶ユニット１５中に蓄えられるオブジェクト１８から開始するデータベース記録１１を作り、逆もまた同様である。
このトランスコーディングユニット１６は、フォーマットの簡単な系統的改造品ではない。他方、トランスコーディングユニット１６は、構造１９中の各オブジェクトに対するこのオブジェクトのクラスを考慮に入れている。制御ユニット１５によって定義されるオブジェクトクラス１１０は、オブジェクトクラス記憶ユニット１１１中に蓄えられる。
換言すれば、トランスコーディングユニット１６は、オブジェクトクラス定義(object classes definition)１９の強制下で機能する。
制御ユニット１４は、「クラス−インスタンス(Class-Instance)」モデルに基づいて、オブジェクト認識表示を用いる。クラスは、特性(attributes)、作用(behaviors)（方法）、及び構造（変数）のリスト(list)からなる。特に、この表示は、次の機能を集合させている。すなわち、構造と作用（よりコンパクトなコード、容易なメンテナンス）の再利用を許容する受け継ぎ(inheritance)の機能と、システムが首尾一貫して堅実にアップグレードするような特殊化(specialization)の機能と、作用を構造と関連させ、公のまたは個人的なものとして特性を定義するカプセル化(encapsulation)の機能と、演繹された領域(deduced fields)や入力強制のための式であるリフレックス(reflexes)の機能である。
操作されるオブジェクト１１２は、データベース１１中に関連する実行(implementation)を有する。制御ユニット１４は、データベース１１を自動的に管理するデータベース制御サブアセンブリ１１３を含む。より詳しくは、サブアセンブリ１１３は、次の機能を遂行する。すなわち、オブジェクト指向アクセスロジックに適合するようにユーザーによって作られる要求(requests)１２の機能として、データベース１１アクセスロジック（または制御言語）に依存するコマンド１１４の生成の機能と、仮メモリ１５中に蓄えられたオブジェクトに関連し、かつ変更された記録へのアクセスを防止するための監視管理(look management)機能である。
オブジェクトは、次に続く処理のために仮記憶ユニット１５の中に蓄えられるため、データベース１１に対する質問の数は、従来のデータベース管理システムと比べて大変小さい。いくつかの機能は、一度（トランスコーディングユニット１６を通じて）入れられた(load)としても、遂行することができる。実際、作業手順の間に、オブジェクトは、仮記憶ユニット１５の中にないときにトランスコードされ、手順の最後までは、関連した記録の形で再度データベース中に蓄えられることがない。さらに、データベース１１との対話をより簡略化するために、制御サブアセンブリ１１３は、サブアセンブリ１１３によって生成される最も最近のコマンドを維持するコマンドメモリ１１５を管理する。ユーザーが以前の質問と同様の質問を送ったときに、サブアセンブリ１１３は、対応するデータベース中のコマンドを再び生成する必要はなく、単にメモリ１１５中に蓄えられたコマンドを反復して、適合する。
オブジェクトが、仮記憶ユニット１５中で変更されるとすぐに、サブアセンブリ１１３は、対応する記録がデータベース１１中で変更されるのを防止するロッキングコマンド(locking command)を自動的に送る。例えば、マルチユーザーアプリケーションの場合には、セカンドユーザーは、このオブジェクトを訂正することができるが、変更することはできない。
図２は、オブジェクトクラスの築造と、それに関連するデータベーステーブルとの連結を示す。
オブジェクトクラス２１は、次の特性を含むかもしれない。すなわち、オブジェクトに送られるメッセージを定義する方法２２１から２２Ｎと、オブジェクトの代表的な値を含む蓄えられた変数２３１から２３Ｍと、蓄えられた変数及び／または外部変数（例えば、処理の日付）から開始した、組織的に蓄えられていない計算値を含む演繹的な変数２４１から２４Ｌである。
多くの事例２５１から２５ｉまたはオブジェクトは、このクラスから生成されるであろう。データベーステーブル２６（その中で、記録２７１から２７ｉが各オブジェクト２５１から２５ｉと関連している。）は、源のクラス(father class)から開始する受け継ぎ機構(inheritance mechanism)を用いてこれらのクラスが生成するときには特に、各クラスまたはおそらくクラスのグループと関連する。
これらの記憶は、オブジェクトよりもずっと簡単である。それらは、Ｍ蓄積変数２３１から２３Ｏに対応するＭ領域２８１から２８Ｍを単に含み、データベースメモリに大きさに大きな蓄積(saving)を与える。
しかし、トランスコーディングユニットが多くの機能を遂行する必要のあることが理解される。なぜならば、トランスコーディングユニットは、記録１７を受け取ったときに、対応するオブジェクト１８を生成するために次の操作を遂行しなければならないからである。すなわち、クラスメモリ１１１中でオブジェクトの構造を読みとり、その方法２２１から２２Ｎとそれとを関連させ、領域２８１から２８Ｍを用いて、蓄えられた変数２３１から２３Ｎの値を写し(transcribe)、演繹的な変数２４１から２４Ｌの値を決定するという操作である。
例えば、ある人に対応するオブジェクトの場合において、「Ｍｒｓ．」、「Ｍｉｓｓ」または「Ｍｒ．」に等しいであろう「敬称(title)」の変数を蓄える必要はない。なぜならば、それは、「性」（男性または女性）及び「地位」（独身、既婚、離婚、未亡人）の蓄えられた変数から演繹することができるからである。
本発明で用いられる方法は、図３中の簡略化された演算法でより明瞭に示される。この方法が、ただ理解を容易にするために連続した段階の形で表されていることに注意されたい。これらの段階の順序において強制的なものがなく、また、より一般的には、いくつかの段階がいくつかの回数繰り返されたり、同時に遂行されるかもしれないことは、明らかである。
第一に、この方法は、クラス定義段階３１を含む。この段階３１は、通常、すべてのシステムユーザーにとってアクセス可能な後述する段階３２から３４とは異なり、アプリケーション開発者のために使わずにおく。
クラス定義３１は、クラス構造（方法及び変数）の開発者の定義を含む。この定義は、受け継ぎ機構を用いて、源のクラス(mother class)から開始して作成されるであろう。クラスが定義されたとき、データベース中の対応する記録は、自動的に生成し、また、クラス構造は、システムメモリ中に蓄えられる（３５）。
システムユーザーは、イベント３２上で作業する。イベントは、アプリケーションに入る点を表す処理(processing)であり、通常、オブジェクト上のきっかけのメッセージ(triggering messages)からなる。それは、訂正、模擬または変更モードの中で定義され、該モードは、イベント中のデータ変更（及びベース中の蓄え）の可能性を定義する。
本発明の特性を強調するために、蓄えの段階３３と入れる段階(load steps)は、イベント３２とは独立して示す。イベント３２の間、ほとんどの操作は、データベースとは独立して、オブジェクト上で遂行される。しかし、入れること(loading)と蓄えること(saving)は、必要なときにはいつでも、イベントの間になすことができるであろう。
したがって、イベント３２は、次の操作を含む。すなわち、クラス構造３６からの従来通りのオブジェクトの生成３２１と、過去、現在または未来の任意の時点におけるイベントを設けるための年代別配列の変更(chronology modification)３２２（この技術は、図４を用いて後で詳述する。）と、仮記憶ユニット中に蓄えられたオブジェクトの訂正及び変更３２３である。
オブジェクトの訂正及び変更３２３の操作は、オブジェクトに、（方法に対応する）メッセージを送ることからなる。オブジェクトに送られる各メッセージは、明白な効果に加えて、関連するオブジェクトへのメッセージの伝播を起こすことができる。それは、イベントに関連する反射(reflexes)（または動作）を起こし得る。伝播現象は、クラス上に集められ、それらは、完全に明白に活性化(activated)される。
段階３２３は、自動的かつ明白に、データベース中のロック管理機構を起動する。
本システムは、バッチによる処理を管理することができ、必要なことの全ては、イベントの性質を大変簡単に述べることである。それは、この標準(criterion)の作用として、メモリを管理することができる。対話のイベントまたはバッチのイベントは、ただ、きっかけ(triggering)において異なるだけであり、同じメッセージを活性化することができる。この構造は、リアルタイムイベントとバッチ処理の間の操作上の一貫性を保障する。
本システムは、対話（削除、蓄え、または確認）の最後の段階を制御する。対話を蓄えることは、後までその有効性を延長することを可能にする。最後に、実行されたイベントの追跡を維持することができる。
年代別配列の変更の段階３２２は、過去（履歴の明白な使用）へ、及び未来（模擬または仮定）へ、まったく自然に展望し、また、現在の生成操作を容易にする。
本システムは、間に合うように、直接にオブジェクトを管理する。本システムは、模擬によって、過去または未来の任意の日付における任意のオブジェクトの状況を見出すことができる。時間管理は明白に統合されているので、どのようなアプリケーションであっても、過去または未来の値が未知である場合に値が如何に変化するかの規則以外の事項をコードする必要もなく、ユーザーが過去または未来にユーザー自身を置くことを許容するであろう。
設計者は、彼が保持する履歴の状態の数を制限するために彼が必要とする全てをもっている。
オブジェクトに対して時間の変化を達成することは、管理アプリケーションにおいて特に有用である。
本発明の有利な特性によれば、オブジェクトは、時間における二つの点に対応する起点及び終点をもつ。それゆえ、各オブジェクトに対して、二つの日付の型の起点及び終点の領域がある。しかし、これらの領域は、必ずしも定義されない。
オブジェクトは、その起点及び終点の間に異なる状態を有するかもしれない。その領域の値は、時間と共に変化するかもしれない。各状態は、領域の値によって特徴付けられる。もし、領域の値がオブジェクト上で変更されれば、それは他の状態に変化するであろう。
オブジェクトは、その寿命の間のある時点において、ある状態で存在する。
オブジェクトは、その寿命の間に、一つのまたはいくつかの状態で存在するであろう。
本システムは、オブジェクトの種々の状態を蓄えることができる。オブジェクトの履歴は、管理することができる。
オブジェクトクラスが定義されたとき（３１）、このクラス中のオブジェクトが履歴の中で管理されるべきか否かについては、明記(specified)される。本システムは、データベースにおいて、履歴の中で管理されなければならないオブジェクトの連続的な状態を保持する。
ある状態は、オブジェクトのように、起点及び終点の日付によって特徴付けられる。
時間は、二つの型の日付を考慮することによって管理される。すなわち、知られた日付(knowledge date)（この日付は、システムがその情報を知るようになる日付である。）と、有効な日付(effective date)（この日付は、システムがその情報を考慮する日付である。）である。
オブジェクトは、イベントの間に、生成され、変更され、または削除され、知られた日付と有効な日付と関連されなければならない。
日付の意味は、データベース中における読み取り及び書き込みのアクセスの間、全く同じではない。すなわち、データベースへの書き込みにおいては、データは上記のように定義され、データベースからの読み取りにおいては、訂正された情報は、知られた日付の機能として知られた情報であり、読み取りの有効な日付において有効である。
有効な日付と知られた日付の間の相違は、遡及的な効果を管理するのに用い得る（知られた日付より以前の有効な日付で書き込む。）。
ある状態は、起点と終点の日付で特徴付けられる。それゆえ、各オブジェクトは、次の技術領域を含む。
ＥＤＮ：その状態に対する有効な起点の日付
ＫＤＮ：その状態に対する知られた起点の日付
ＥＤＸ：その状態に対する有効な終点の日付
ＫＤＸ：その状態に対する知られた終点の日付
一つの状態に対する有効な及び知られた「終点」の日付は、次の状態に対する有効な及び知られた「起点」の日付と同じである。
履歴の中で管理されるオブジェクトが訂正されたとき、我々は、その状態（ＥＤＮ）に対する知られた日付と等しいかまたはそれよりも遅い読み取りの知られた日付、及びその状態（ＫＤＮ）に対する有効な日付と等しいかまたはそれよりも遅い読み取りの有効な日付を読み取ることを行って、そのオブジェクトの最も最近の状態を見る。
値を見るために、その読み取りの有効な日付(read effective date)は、また、オブジェクトの起点及び終点の日付の間でなければならない。
図４は、「人」のクラスの中のオブジェクトに対する履歴の管理の例を示す。マチルダ・デュラン嬢（Ｍｉｓｓ  Ｍａｔｈｉｌｄｅ  ＤＵＲＡＮＤ）は、１９９０年２月１日から知られている。彼女は、データベースの管理者に、彼女が１９９０年６月１５日にデュポン氏（Ｍｒ．ＤＵＰＯＮＤ）と結婚するであろうことを知らせた。１９９２年６月５日に、彼女は、彼女が１９９２年４月２５日に離婚したことを知らせた。
それゆえ、
オブジェクトの起点の日付＝第一の有効な日付＝第一の知られた日付（ＥＤ１及びＫＤ１）となり、
オブジェクトの終点の日付＝９９／９９／９９９９（無限と同等）となる。
それゆえ、そのオブジェクトは、次の三つの状態（状態１〜３）を含む。
状態１：デュラン嬢が結婚していない状態
ＥＫ１＝その状態に対する知られた起点の日付
ＥＤ１＝その状態に対する有効な起点の日付
変数の値：
姓＝デュラン
名＝マチルダ
敬称＝Ｍｉｓｓ
地位＝独身
状態２：デュラン嬢がデュポン夫人となった状態
ＥＫ２＝状態２に対する知られた起点の日付（及び状態１に対する終点の日付）＝１９９２年２月１日
ＥＤ２＝状態２に対する有効な起点の日付（及び状態１に対する終点の日付）＝１９９２年６月１５日
変数の値：
姓＝デュポン
名＝マチルダ
敬称＝Ｍｒｓ．
地位＝結婚している
状態３：デュポン夫人が離婚して、結婚時の姓を維持する状態
ＥＫ３＝状態２に対する知られた起点の日付（及び状態１の終点）＝１９９２年２月１日
ＥＤ３＝状態２に対する有効な起点の日付（及び状態１の終点）＝１９９２年６月１５日
変数の値：
姓＝デュポン
名＝マチルダ
敬称＝Ｍｒｓ．
地位＝離婚している
我々は、履歴の訂正の次の三つの例を付与するであろう。
訂正１：
ＥＫ２＞読み取りの知られた日付＞ＥＫ１
及び、ＥＤ２＞読み取りの有効な日付＞ＥＤ１
我々は、オブジェクトの状態１を見る（Ｍｉｓｓ  ＤＵＲＡＮＤ）。
訂正２：
読み取りの知られた日付＞ＥＫ２
しかし、読み取りの有効な日付＜ＥＤ２
我々は、状態２を見ることができない。
読み取りの知られた日付＞ＥＫ１
及び、読み取りの有効な日付＞ＥＤ１
我々は、状態１を見る（Ｍｉｓｓ  ＤＵＲＡＮＤ）
訂正３：
ＥＫ３＞読み取りの知られた日付＞ＥＫ２
及び、読み取りの有効な日付＞ＥＤ３＞ＥＤ２
我々は、オブジェクトの状態２を見る（結婚経験のあるＭｉｓｓ  ＤＵＰＯＮＤ）
仮メモリの中に蓄えられたオブジェクトは、通常、イベントの最後に蓄えられる（３３）。それは、トランスコーディングユニット１６によって自動的に遂行される三つの段階からなる。すなわち、オブジェクトのクラス構造３６を考慮して、オブジェクト及びその関連した記録を読み取り（３３１）、ベータベース１１中でトランスコードされた記録を書き込む（３３３）。
オブジェクトは、仮メモリ１６中に、釣り合うように入れられる（３４）。それゆえ、それは、次の段階、すなわち、データベース中で、対象となるオブジェクトに関連する記録を読み取る段階（３４１）と、オブジェクトのクラス構造３６の機能として、オブジェクトに記録をトランスコードする段階（３４２）と、仮記憶ユニット１５中でオブジェクトを書き込む段階（３４３）を含む。
オブジェクトは、イベントの間にいつでも、入れることができるかもしれない（３４）。より詳しくは、データベース制御サブアセンブリ１１３は、必要なとき、すなわち、ユーザーが仮記憶ユニット１５中にまだ存在しないオブジェクトに関する質問１２を送るときにはいつでも、変更の要求(change request)を生成する。
それゆえ、制御ユニットは、仮記憶ユニット１５中のオブジェクトのリストを明らかに管理する。
しかし、データベース１１へのアクセスの数を削減するために、特定の標準を用いたオブジェクトの探索が、二つの段階でなされる。第一に、探索は、仮記憶ユニット１５の中に蓄えられたオブジェクトの中で行われる。そして、その探索が失敗したときにのみ、サブアセンブリ１１３の管理下でデータベース１１中での探索が続行される。
【図１】
0003859171.tif 000002
【図２】
0003859171.tif 000003
【図４】
0003859171.tif 000004
【図３】
0003859171.tif 000005