(57)【特許請求の範囲】
【請求項１】
オブジェクト指向トランザクション・システムによるトランザクションの完了時に、リレーショナル・データベース上で実行されるデータベース・オペレーションを順序付ける方法であって、
完了されたトランザクション内のオブジェクトを、前記リレーショナル・データベース内に挿入されるオブジェクトのグループ、前記リレーショナル・データベースから削除されるオブジェクトのグループ、及び前記リレーショナル・データベース内で更新されるオブジェクトのグループにクラスタ化するステップと、
前記リレーショナル・データベースに挿入されるオブジェクトを、関連するオブジェクトの間の制約によって決まる挿入優先順位に従い順序付け、挿入順序を定義するステップと、
前記リレーショナル・データベースから削除されるオブジェクトを、関連するオブジェクトの間の制約によって決まる削除優先順位に従い順序付け、削除順序を定義するステップと、
前記リレーショナル・データベースに挿入されるオブジェクトを、前記挿入順序に従い、前記リレーショナル・データベースに挿入するステップと、
前記挿入するステップの後で、前記リレーショナル・データベースを、前記リレーショナル・データベース内で更新されるオブジェクトにより更新するステップと、
前記更新するステップの後で、前記リレーショナル・データベースから削除されるオブジェクトを、前記削除順序に従い、前記リレーショナル・データベースから削除するステップと
を含む、方法。
【請求項２】
前記更新するステップが、前記リレーショナル・データベースを該リレーショナル・データベース内で更新されるオブジェクトにより、任意の順序で更新するステップを含む、請求項１記載の方法。
【請求項３】
前記リレーショナル・データベースから削除されるオブジェクトを順序付けるステップが、
削除される現オブジェクトに対する関連オブジェクトを識別するステップと、
前記削除される現オブジェクトが、識別された関連オブジェクトより上位の削除優先順位を有するか否かを判断するステップと、
前記削除される現オブジェクトが、前記関連オブジェクトより上位の削除優先順位を有する場合、前記関連オブジェクトが削除されるオブジェクトであれば、前記削除される現オブジェクトを、前記関連オブジェクトより上位に順序付けるステップと、
前記削除される現オブジェクトが、前記関連オブジェクトより上位の削除優先順位を有さない場合、前記関連オブジェクトが削除されるオブジェクトであれば、前記削除される現オブジェクトを、前記関連オブジェクトより下位に順序付けるステップと、
識別された残りの関連オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、繰り返し実行するステップと
を含む、請求項１記載の方法。
【請求項４】
前記削除される現オブジェクトが削除される関連オブジェクトより上位に順序付けられる場合、前記削除される関連オブジェクトに関連付けられる各オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、再帰的に実行するステップを含む、請求項３記載の方法。
【請求項５】
前記リレーショナル・データベースに挿入されるオブジェクトを順序付けるステップが、
挿入される現オブジェクトに対する関連オブジェクトを識別するステップと、
前記挿入される現オブジェクトが、識別された関連オブジェクトより上位の挿入優先順位を有するか否かを判断するステップと、
前記挿入される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位を有する場合、前記関連オブジェクトが挿入されるオブジェクトであれば、前記挿入される現オブジェクトを、前記関連オブジェクトより上位に順序付けるステップと、
前記挿入される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位を有さない場合、前記関連オブジェクトが挿入されるオブジェクトであれば、前記挿入される現オブジェクトを、前記関連オブジェクトより下位に順序付けるステップと、
識別された残りの関連オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、繰り返し実行するステップと
を含む、請求項１記載の方法。
【請求項６】
前記挿入される現オブジェクトが挿入される関連オブジェクトより上位に順序付けられる場合、前記挿入される関連オブジェクトに関連付けられる各オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、再帰的に実行するステップを含む、請求項５記載の方法。
【請求項７】
オブジェクト指向トランザクション・システムによるトランザクションの完了時に、リレーショナル・データベースに挿入、または前記リレーショナル・データベースから削除されるオブジェクトを順序付ける方法であって、
挿入または削除される現オブジェクトに対する関連オブジェクトを識別するステップと、
前記挿入または削除される現オブジェクトが、識別された関連オブジェクトより上位の挿入優先順位または削除優先順位を有するか否かを両オブジェクトの間の制約に基づいて判断するステップと、
前記挿入または削除される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位または削除優先順位を有する場合、前記関連オブジェクトが挿入または削除されるオブジェクトであれば、前記挿入または削除される現オブジェクトを、前記関連オブジェクトより上位に順序付けるステップと、
前記挿入または削除される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位または削除優先順位を有さない場合、前記関連オブジェクトが挿入または削除されるオブジェクトであれば、前記挿入または削除される現オブジェクトを、前記関連オブジェクトより下位に順序付けるステップと、
識別された残りの関連オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、繰り返し実行するステップと
を含む、方法。
【請求項８】
前記挿入または削除される現オブジェクトが挿入または削除される関連オブジェクトより上位に順序付けられる場合、前記挿入または削除される関連オブジェクトに関連付けられる各オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、再帰的に実行するステップを含む、請求項７記載の方法。
【請求項９】
リレーショナル・データベースと、
オブジェクト指向トランザクション・システムと、
完了されたトランザクション内のオブジェクトを、前記リレーショナル・データベース内に挿入されるオブジェクトのグループと、前記リレーショナル・データベースから削除されるオブジェクトのグループと、前記リレーショナル・データベース内で更新されるオブジェクトのグループとにクラスタ化する手段と、
前記リレーショナル・データベースに挿入されるオブジェクトを、関連するオブジェクトの間の制約によって決まる挿入優先順位に従い順序付け、挿入順序を定義する手段と、
前記リレーショナル・データベースから削除されるオブジェクトを、関連するオブジェクトの間の制約によって決まる削除優先順位に従い順序付け、削除順序を定義する手段と、
前記リレーショナル・データベースに挿入されるオブジェクトを、前記挿入順序に従い、前記リレーショナル・データベースに挿入する手段と、
前記挿入手段に応答して、前記リレーショナル・データベースを、前記リレーショナル・データベース内で更新されるオブジェクトにより更新する手段と、
前記更新手段に応答して、前記リレーショナル・データベースから削除されるオブジェクトを、前記削除順序に従い、前記リレーショナル・データベースから削除する手段と
を含む、データ処理システム。
【請求項１０】
前記更新する手段が、前記リレーショナル・データベースを該リレーショナル・データベース内で更新されるオブジェクトにより、任意の順序で更新する手段を含む、請求項９記載のシステム。
【請求項１１】
前記リレーショナル・データベースから削除されるオブジェクトを順序付ける手段が、
削除されるオブジェクトに対する関連オブジェクトを識別する手段と、
前記削除される現オブジェクトが、識別された関連オブジェクトより上位の削除優先順位を有するか否かを判断する手段と、
前記削除される現オブジェクトが、前記関連オブジェクトより上位の削除優先順位を有する場合、前記関連オブジェクトが削除されるオブジェクトであれば、前記削除される現オブジェクトを、前記関連オブジェクトより上位に順序付ける手段と、
前記削除される現オブジェクトが、前記関連オブジェクトより上位の削除優先順位を有さない場合、前記関連オブジェクトが削除されるオブジェクトであれば、前記削除される現オブジェクトを、前記関連オブジェクトより下位に順序付ける手段と
を含む、請求項９記載のシステム。
【請求項１２】
前記リレーショナル・データベースに挿入されるオブジェクトを順序付ける手段が、
挿入される現オブジェクトに対する関連オブジェクトを識別する手段と、
前記挿入される現オブジェクトが、識別された関連オブジェクトより上位の挿入優先順位を有するか否かを判断する手段と、
前記挿入される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位を有する場合、前記関連オブジェクトが挿入されるオブジェクトであれば、前記挿入される現オブジェクトを、前記関連オブジェクトより上位に順序付ける手段と、
前記挿入される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位を有さない場合、前記関連オブジェクトが挿入されるオブジェクトであれば、前記挿入される現オブジェクトを、前記関連オブジェクトより下位に順序付ける手段と
を含む、請求項９記載のシステム。
【請求項１３】
リレーショナル・データベースと、
オブジェクト指向トランザクション・システムと、
挿入または削除される現オブジェクトに対する関連オブジェクトを識別する手段と、
前記挿入または削除される現オブジェクトが、識別された関連オブジェクトより上位の挿入優先順位または削除優先順位を有するか否かを両オブジェクトの間の制約に基づいて判断する手段と、
前記挿入または削除される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位または削除優先順位を有する場合、前記関連オブジェクトが挿入または削除されるオブジェクトであれば、前記挿入または削除される現オブジェクトを、前記関連オブジェクトより上位に順序付ける手段と、
前記挿入または削除される現オブジェクトが、前記関連オブジェクトより上位の挿入優先順位または削除優先順位を有さない場合、前記関連オブジェクトが挿入または削除されるオブジェクトであれば、前記挿入または削除される現オブジェクトを、前記関連オブジェクトより下位に順序付ける手段と
を含む、データ処理システム。
【請求項１４】
請求項１乃至請求項８のいずれかに記載の方法を実行するためのプログラムを記憶したプログラム記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理システム及び方法並びに該方法を実行するためのプログラムを記憶したプログラム記憶媒体に関し、特に、データベース・システム及び方法並びに該方法を実行するためのプログラムを記憶したプログラム記憶媒体に関する。
【０００２】
【従来の技術】
リレーショナル・データベースは、データ処理環境においてデータを記憶するために広く使用されている。当業者には周知のように、リレーショナル・データベースでは、データがデータベース内でのその実際の位置ではなしに、他のデータとの関係にもとづきアドレス指定される。リレーショナル・データベース内のデータ間の関係は、関係キーを用いて示される。例えば、所有者クラスの各データ要素は、それに関連付けられる基本キーを有し、メンバ・クラスの各データ要素は、メンバ要素を所有するデータ要素の基本キーを指し示す外部キーを含み得る。リレーショナル・データベースの設計及び動作は、当業者には周知であり、ここで詳述する必要はない。
【０００３】
オブジェクト指向プログラミング・システム、方法及びコンピュータ・プログラム製品は、データ処理環境において広く使用されている。当業者には周知のように、オブジェクト指向プログラミング・システム、方法及びコンピュータ・プログラム製品は、非常に多くの"オブジェクト"から構成される。オブジェクトはデータ構造と、該データ構造をアクセス可能なオペレーションまたは機能のセットとを含む。同一のデータ構造及び共通の振舞いを有するオブジェクトは、クラスに一緒にグループ化され集合的に識別され得る。オブジェクト指向コンピュータ環境では、オブジェクトにそのメソッドの１つを実行するように要求することにより、データが処理される。継承関係もまた、第１のクラスが第２のクラスの親と見なされ、第２のクラスが第１のクラスの子と見なされるように、２つ以上のクラス間で存在し得る。子クラスのデータ構造は、親クラスの全ての属性を含む。オブジェクト指向プログラミング・システム、方法及びコンピュータ・プログラム製品の設計及び動作は、当業者には周知であり、ここで詳述する必要はない。
【０００４】
オブジェクト指向コンピュータ環境は現在、柔軟性があり、ユーザフレンドリなオブジェクト指向トランザクション・システムを形成するために使用されている。当業者には周知のように、トランザクションは一般に、アトミック式に実行される１つ以上のオブジェクトの変更の論理グループを指し示す。換言すると、トランザクション内の全てのオペレーションが実行されるか、それらのどれも実行されない。トランザクション・アプローチを使用することにより、トランザクションの範囲内でのユーザによるオブジェクトの全ての変更は、持続的な記憶済みオブジェクト自体を実際に更新することなく、最初にオブジェクトの内部コピーに対して実行される。ユーザは最終的に、トランザクションにより達成された変更を永続的にコミットするか、またはそれらを廃棄するかを決定し得る。ユーザがコミットを選択する場合、持続記憶内のオブジェクトが更新される。ユーザが変更の廃棄を選択する場合、持続記憶が未変更のまま維持される。
【０００５】
オブジェクト指向トランザクション・システムは、複雑な事業プロセスを反映する企業アプリケーションにおいて使用され、ユーザはユーザ・インタフェースの異なる要素間を自由にナビゲートできる。例えば、ユーザはあるアプリケーションにおいて、ディスプレイ上で複数のウィンドウを同時にオープンしたいと思う。こうしたアプリケーションのユーザは、異なるウィンドウ間でデータの一貫性を保証するための特殊な予防措置を取る必要なしに、あるウィンドウ内の処理情報から、異なるウィンドウ内の処理情報に切り替われることを期待し得る。
【０００６】
リレーショナル・データベースは一般に、データベースの一貫性を維持するための参照保全制約を含む。これらの制約は一般に、データベース記憶オペレーション及び削除オペレーションが特定の順序で実行されることを要求する。あいにく、この順序はオブジェクト指向トランザクション内において、オブジェクトが生成され、変更され、削除される順序に一致しない。更に、データベース参照保全制約は一般に、論理オブジェクト関係に一貫的にマップされない。参照保全制約は一般に、どのエンティティが関係外部キーにより参照しており、どのエンティティが参照されているかなど、キー情報にもとづき施行される。このキー情報は、オブジェクト関係にマップされるとき、２つ以上の可能な変形を有し得る。従って、アプリケーション事象フローまたはオブジェクト関係論理方向にもとづき、オブジェクトのツリーをリレーショナル・データベースに記憶する順序またはリレーショナル・データベースから削除する順序を推論することは困難であろう。
【０００７】
従って、オブジェクト指向トランザクション・システムによるトランザクションの完了時に、データベース・オペレーションが適切に順序付けられるように、オブジェクト指向トランザクション・システムとリレーショナル・データベースとをインタフェースすることは困難であろう。リレーショナル・データベース参照保全制約を維持しながら、オブジェクト指向トランザクション・システムとリレーショナル・データベースとをインタフェースするために、オペレーション順序付けのカスタマイズ符号化が、オブジェクト指向トランザクション・システムにおいて提供され得る。しかしながら、こうしたカスタム符号化は時間を消費し、プロジェクトの資源の３０％またはそれ以上を消費し得る。これについては、本発明者及びHillによる刊行物"Scalable Object-Persistence Frameworks"、Journal of Object-Oriented Programming、Nov./Dec. 1998、page 18-24を参照されたい。或いはまた、参照保全制約の施行をリレーショナル・データベースにおいて禁止することも考えられるが、そうすると、リレーショナル・データベース全体が破壊され、内部的に不都合が生じることがある。
【０００８】
【発明が解決しようとする課題】
従って、本発明の目的は、オブジェクト指向トランザクション・システムとリレーショナル・データベースとをインタフェース可能なシステム及び方並びに該方法を実行するためのプログラムを記憶したプログラム記憶媒体を提供することである。
【０００９】
本発明の別の目的は、リレーショナル・データベース参照保全制約を守りながら、オブジェクト指向トランザクション・システムとリレーショナル・データベースとをインタフェース可能なシステム及び方法並びに該方法を実行するためのプログラムを記憶したプログラム記憶媒体を提供することである。
【００１０】
【課題を解決するための手段】
これらの及び他の目的が、本発明に従い、トランザクションの完了時に、オブジェクト指向トランザクション・システムによりリレーショナル・データベース上で実行されるデータベース・オペレーションに対応して、自動的にオブジェクトを順序付けるシステム、方法及びコンピュータ・プログラム製品により提供される。完了されたトランザクション内のオブジェクトが、リレーショナル・データベースに挿入されるオブジェクトのグループ、リレーショナル・データベースから削除されるオブジェクトのグループ及びリレーショナル・データベース内で更新されるオブジェクトのグループにクラスタ化される。リレーショナル・データベースに挿入されるオブジェクトが、リレーショナル・データベースへのオブジェクトの挿入優先順位に従い順序付けられ、それにより挿入順序が定義される。リレーショナル・データベースから削除されるオブジェクトが、リレーショナル・データベースからのオブジェクトの削除優先順位に従い順序付けられ、それにより削除順序が定義される。リレーショナル・データベースに挿入されるオブジェクトが、挿入順序に従い、リレーショナル・データベースに挿入される。次に、リレーショナル・データベース内で更新されるオブジェクトが、任意の順序で更新される。最後に、リレーショナル・データベースから削除されるオブジェクトが、削除順序に従いリレーショナル・データベースから削除される。
【００１１】
異なるデータベース・オペレーション間の優先順位は、複雑な前提ツリーを形成する。しかしながら、本発明によれば、オペレーション実行の正しい順序を決定するために、これらの前提条件が完全に解決される必要がないことが判明した。むしろ、前提条件は挿入オペレーションの間及び削除オペレーションの間でのみ解決される必要があり、異なるオペレーション・タイプ間で解決される必要はない。オペレーションが次に３つのフェーズで実行され得る。最初に挿入オペレーション、次に更新オペレーション、そして最後に削除オペレーションの順である。
【００１２】
本発明の別の態様によれば、挿入オペレーション及び更新オペレーションの優先順位を解決するために、同一のオペレーションが使用され得る。例えば、リレーショナル・データベースから削除されるオブジェクトを順序付けるために、削除されるオブジェクト間の関連が識別される。削除される現オブジェクトが定義され、それが削除される関連オブジェクトより上位の削除優先順位を有するか否かが判断される。削除される現オブジェクトが、削除される関連オブジェクトより上位の削除優先順位を有する場合、削除される現オブジェクトが、削除される関連オブジェクトより上位に順序付けられる。削除される現オブジェクトが、削除される関連オブジェクトより上位の削除優先順位を有さない場合、削除される現オブジェクトが、削除される関連オブジェクトより遅れて削除される。これらのオペレーションは、削除される現オブジェクトに関連付けられる残りのオブジェクトに対して、繰り返し実行され得る。これらのオペレーションはまた、削除される関連オブジェクトより上位に順序付けられる削除される現オブジェクトに関連付けられる各オブジェクトに対して、再帰的に実行され得る。
【００１３】
削除されるオブジェクト間の関連は、削除されるオブジェクトのうちで現オブジェクト及び関連オブジェクトを識別し、削除されるオブジェクトの外部キー及び基本キーを識別し、外部キーと基本キーの対の間の、リレーショナル・データベースにおける制約を識別することにより、識別され得る。削除優先順位は、削除される現オブジェクトの外部キーが、削除される関連オブジェクトの基本キーを参照するか否かを判断することにより、決定され得る。削除される現オブジェクトの外部キーと、削除される関連オブジェクトの基本キーとの間で識別される制約が存在する場合、削除される現オブジェクトが、削除される関連オブジェクトより上位の削除優先順位を有する。逆に、削除される現オブジェクトの外部キーと、削除される関連オブジェクトの基本キーとの間で識別される制約が存在しない場合、削除される現オブジェクトは、削除される関連オブジェクトより上位の削除優先順位を有さない。同一のオペレーションが、挿入されるオブジェクトに対しても実行され得る。
【００１４】
これらのオペレーションの完了時に、リレーショナル・データベース上で実行される挿入オペレーション及び削除オペレーションの順序は、自動的にリレーショナル・データベースの参照保全制約に対応する。従って、オブジェクト指向トランザクション・システムによるトランザクションの完了時に、データベース・オペレーションは、リレーショナル・データベース参照保全制約を維持する順序で、リレーショナル・データベース上で自動的に実行される。各特定のアプリケーションに対して、オペレーション順序付けのカスタム符号化が提供される必要はなく、トランザクションの間にオブジェクト指向トランザクション・システムにより実行されたオペレーションのシーケンスにより、データベースが破壊される必要がない。
【００１５】
【発明の実施の形態】
本発明は、本発明の好適な実施例を示す添付の図面を参照しながら、以降で詳述される。しかしながら、本発明は多くの異なる形態で実現され得て、ここで述べられる実施例に限られるものではなく、むしろ、これらの実施例は、本開示が十分且つ完全であるように提供され、当業者に本発明の範囲を完全に伝えるものである。図面を通じて、同一の参照番号は同一の要素を指し示す。
【００１６】
図１を参照すると、トランザクションの完了時に、本発明によるオブジェクト指向トランザクション・システムにより、リレーショナル・データベース上で実行されるデータベース・オペレーションを順序付けるためのシステム、方法及びコンピュータ・プログラム製品が示される。図１に示されるように、リレーショナル・データベース・システム１００はリレーショナル・データベース１１０を含む。リレーショナル・データベース・システム１００は、１つ以上のメインフレーム・コンピュータ、ミッドレンジ・コンピュータまたはパーソナル・コンピュータを含み得、リレーショナル・データベース１１０は、１つ以上のデータ・プロセッサ上に存在する単一のリレーショナル・データベースまたは複数のリレーショナル・データベースである。リレーショナル・データベースの例として、本発明の出願人であるＩＢＭ社のＤＢ２及びＳＱＬコンピュータ・プログラム製品がある。
【００１７】
更に図１を参照すると、オブジェクト指向トランザクション・システム１２０は、１つ以上のメインフレーム・コンピュータ、ミッドレンジ・コンピュータ、またはパーソナル・コンピュータを含む１つ以上のデータ処理システム上で実行される。オブジェクト指向トランザクション・システム１２０は、トランザクションを実行するために一人以上のユーザにより使用されるトランザクション処理システム１３０を含む。トランザクション処理システム１３０は、グラフィック・ユーザ・インタフェースなどの適切なユーザ・インタフェースを含み得、柔軟なトランザクションの実行を可能にする。オブジェクト指向トランザクション処理システム１３０の設計は、当業者には周知であり、ここで詳述する必要はない。
【００１８】
図１に示されるように、トランザクション処理システム１３０はインタフェース１４０を介して、リレーショナル・データベース・システム１００とインタフェースする。リレーショナル・データベース・システム１００及びトランザクション処理システム１３０は、異なる若しくはオーバラップする、または同一のデータ処理システム上で実行され得るので、インタフェース１４０は有線通信ネットワーク、無線通信ネットワーク、ローカル・エリア・ネットワーク、インターネット、２つ以上のコンピュータを接続するバス、単一のコンピュータ内の２つ以上のアプリケーションを接続するアプリケーション・インタフェース及びそれらの組み合わせを含み得る。
【００１９】
更に図１を参照すると、オブジェクト指向トランザクション・システム１２０はまた、データベース・オペレーション順序付けシステム、方法またはコンピュータ・プログラム製品１５０を含む。データベース・オペレーション順序付け１５０は、トランザクションの完了時に、オブジェクト指向トランザクション処理システム１３０によりリレーショナル・データベース１１０上で実行されるデータベース・オペレーションを順序付ける。ここでデータベース・オペレーション順序付け１５０は、トランザクション処理システム１３０及びリレーショナル・データベース・システム１００と異なる若しくはオーバラップする、または同一の１つ以上のメインフレーム・コンピュータ、ミッドレンジ・コンピュータ、またはパーソナル・コンピュータ上に存在し得る。データベース・オペレーション順序付け１５０は、第２のインタフェース１６０を介して、リレーショナル・データベース１１０と通信する。第２のインタフェース１６０は、第１のインタフェース１４０と異なる若しくはオーバラップする、または同一のインタフェースであり、有線通信ネットワーク、無線通信ネットワーク、ローカル・エリア・ネットワーク、インターネット、２つ以上のデータ・プロセッサを接続するバス、アプリケーション・インタフェース及びそれらの組み合わせを含み得る。
【００２０】
データベース・オペレーション順序付け１５０は、方法、システム（装置）またはコンピュータ・プログラム製品として実現され得る。従って、本発明は完全なハードウェア実施例、完全なソフトウェア実施例、またはソフトウェア態様及びハードウェア態様を結合する実施例の形態を取り得る。更に本発明は、コンピュータ読取り可能プログラム・コード手段を実現するコンピュータ読取り可能記憶媒体上のコンピュータ・プログラム製品の形態を取り得る。ハードディスク、ＣＤ−ＲＯＭ、光記憶装置または磁気記憶装置などの、任意の好適なコンピュータ読取り可能媒体が使用され得る。
【００２１】
図２は、従来のリレーショナル・データベース内の関係を示す。簡略化のため、リレーショナル・データベースはテーブルＡ、テーブルＢ及びテーブルＣとして示される３つのテーブルを含むと仮定される。更に、特定の例を提供するために、テーブルＡは組織内の部門のリストを含み、テーブルＢは組織内の従業員のリストを含み、テーブルＣは組織内の従業員アドレスのリストを含む。リレーショナル・データベースは、テーブル以外の技術を用いても表現され得る。また、リレーショナル・データベースは一般に、図２に示されるよりもより多くのテーブル及びデータ・エントリを含むことが理解されよう。
【００２２】
図２に示されるように、部門テーブルＡは部門ｄ１乃至ｄｎを含む。従業員テーブルＢは従業員ｅ１乃至ｅｎを含み、アドレス・テーブルＣはアドレスａ１乃至ａｎを含む。部門テーブルＡと従業員テーブルＢとの関係は、"所有者−メンバ"関係である。部門と従業員間の関係は１対多であるので、部門テーブルＡは基本キーを含み、従業員テーブルＢは、部門テーブルＡの適切な基本キーを参照する外部キーを含む。換言すると、テーブルＡとテーブルＢとの関係は、所有者対メンバの関係であり、メンバ・テーブル内の外部キーが、所有者テーブル内の適切な基本キーを参照する。それとは対照的に、従業員テーブルＢとアドレス・テーブルＣとの関係は１対１であり、この関係は、実線矢印により示されるように、アドレス・テーブルＣを参照する従業員テーブルＢ内の外部キー、または破線矢印により示されるように、従業員テーブルＢを参照するアドレス・テーブルＣ内の外部キーを用いて定義される。
【００２３】
リレーショナル・データベースは一般に、データベースの一貫性を維持するための参照保全制約を含む。これらの制約は一般に、データベース記憶オペレーション及び削除オペレーションが特定の順序またはシーケンスで実行されることを要求する。例えば、図２の参照制約は、従業員の部門が既に存在しない限り、従業員が追加され得ないといったものである。逆に、部門はその全ての従業員が削除されるか、或いは別の部門を参照するように更新されるまで削除され得ない。
【００２４】
あいにく、これらのオペレーションの順序は、オブジェクト指向トランザクション処理システム１３０内でオブジェクトが生成または削除される順序に、必ずしも一致しない。例えば、図３を参照すると、オブジェクト指向トランザクション処理システムは、部門オブジェクトを参照するトランザクション・オブジェクトを含み、部門オブジェクトは集合オブジェクトを参照し、集合オブジェクトは従業員オブジェクトのグループを参照し、これらの全てがトランザクションの間に影響される。図３と図２とを比較すると、オブジェクト、ポインタ及びポインタの方向は一般に異なる。
【００２５】
データベース参照保全制約は一般に、論理的な親−子オブジェクト関係に一貫的にマップされない。なぜなら、参照保全規則は一般に、キー情報にもとづき施行され、論理関係に基づかないからである。例えば、従業員からアドレスへの関連ポインティングが、従業員からアドレスへの、またはアドレスから従業員への外部キー参照として、データベース内で実行される。更に、オブジェクト間の関係は一般に、オブジェクトがデータベースに記憶またはデータベースから削除される順序とは無関係である。従って、オブジェクトのツリーがリレーショナル・データベースに記憶またはそこから削除される必要のある順序は、一般に、トランザクション処理システム１３０内の事象フローから、またはオブジェクト関係論理方向から推論され得ない。
【００２６】
従って、オブジェクト指向トランザクション処理システム１３０によるオブジェクト指向トランザクションの終りには、オブジェクト、実行されたオペレーション、及び結果として生じたデータは一般に既知である。しかしながら、参照保全制約を守るために、リレーショナル・データベース１１０に成されるべき変更の順序またはシーケンスは未知である。
【００２７】
一般に、持続オブジェクトに対して実行され得る３つの種類の関係オペレーション、すなわち挿入、更新及び削除が存在する。これらのオペレーション・タイプの間の依存性は、一般に次のようである。
【００２８】
１）挿入オペレーションは他の挿入に依存し得るが、他の種類のオペレーションには依存しない。例えば、挿入されるデータが、挿入される他のデータを参照し得る。
【００２９】
２）更新オペレーションは他の更新には依存しないが、挿入に依存し得る。例えば、データが挿入されるデータを参照するように更新される。
【００３０】
３）削除オペレーションは他の削除に依存し得る。例えば、削除されるデータが、削除される他のデータを参照する。削除オペレーションはまた、更新に依存し得る。例えば、データが削除されるデータを参照解除するように更新される。
【００３１】
オブジェクトのデータを挿入するとき、被参照データは参照データよりも前に挿入されなければならない。データを更新するとき、被参照データは、参照データを更新する前に挿入されなければならない。データを削除するとき、被参照データを参照解除するために、参照データが被参照データを削除する前に削除または更新されなければならない。
【００３２】
異なるデータベース・オペレーション間の優先順位は、複雑な前提条件ツリーを形成する。関係参照保全制約の性質により、一般にデータベース内で定義される循環制約は存在しない。本発明に従うデータベース・オペレーション順序付け１５０は、オブジェクトのツリーがデータベースに記憶またはデータベースから削除されるとき、リレーショナル・データベース１１０に対して定義される参照保全制約に従い、関係挿入オペレーション及び削除オペレーションを自動的に順序付ける機構を提供する。順序付け機構は、好適には、オブジェクト間の関係がどのようにデータベース内の基本キー／外部キー対にマップされるかに関する情報及び対に対する保全規則を使用する。
【００３３】
図４乃至図８は、本発明に従うデータベース・オペレーション順序付けを示すフロー図である。フロー図の各ブロック及びフロー図内のブロックの組み合わせは、コンピュータ・プログラム命令により実現され得ることが理解できよう。これらのコンピュータ・プログラム命令は、プロセッサまたは他のプログラマブル・データ処理装置に提供されてマシンを生成する。それにより、プロセッサまたは他のプログラマブル・データ処理装置上で実行される命令が、フロー図のブロックで指定される機能を実現する手段を生成する。これらのコンピュータ・プログラム命令はまた、コンピュータ読取り可能メモリ内に記憶され、プロセッサまたは他のプログラマブル・データ処理装置に、特定の態様で機能するように指令する。すなわち、コンピュータ読取り可能メモリに記憶される命令が、フロー図のブロック内で指定される機能を実現する命令手段を含む製造物を生成する。
【００３４】
従って、フロー図のブロックは、指定機能を実行する手段の組み合わせ、指定機能を実行するステップの組み合わせ及び指定機能を実行するプログラム命令手段をサポートする。また、フロー図の各ブロック及びフロー図内のブロックの組み合わせは、指定機能またはステップを実行する特殊目的ハードウェア・ベースのコンピュータ・システムにより、または特殊目的ハードウェアとコンピュータ命令との組み合わせにより実現され得る。
【００３５】
図４を参照すると、本発明によれば、リレーショナル・データベースにおけるオペレーション実行の適切な順序を決定するために、前提条件が完全に解決される必要がない。むしろ、前提条件は挿入オペレーションの間及び削除オペレーションの間でのみ、詳細に解決される必要がある。前提条件は異なるオペレーション・タイプ間では、詳細に解決される必要がない。従って、図４に示されるように、ブロック４１０で、完了済みトランザクション内のオブジェクトを、リレーショナル・データベースに挿入されるオブジェクトのグループ、リレーショナル・データベースから削除されるオブジェクトのグループ及びリレーショナル・データベース内で更新されるオブジェクトのグループにクラスタ化することにより、データベース・オペレーション順序付け１５０が開始する。クラスタ化の詳細なオペレーションについては後述する。
【００３６】
更に図４を参照すると、ブロック４２０で、リレーショナル・データベースに挿入されるオブジェクトが、リレーショナル・データベースへのオブジェクトの挿入優先順位に従い順序付けられ、それにより挿入リスト内の挿入順序が定義される。ブロック４３０で、リレーショナル・データベースから削除されるオブジェクトが、リレーショナル・データベースからのオブジェクトの削除優先順位に従い順序付けられ、それにより削除リスト内の削除順序が定義される。ブロック４２０及びブロック４３０のオペレーションは、図示のシーケンスとは逆に実行されても良いことが理解できよう。これらのオペレーションの実行の詳細については後述する。
【００３７】
更に図４を参照すると、リレーショナル・データベース・オペレーションが３つのフェーズで実行される。最初にブロック４４０で、リレーショナル・データベースに挿入されるオブジェクトを、挿入順序に従いリレーショナル・データベースに挿入することにより、挿入オペレーションが実行される。次に、ブロック４５０で、リレーショナル・データベース内で更新されるオブジェクトにより、リレーショナル・データベースを更新することにより、更新オペレーションが実行される。最後に、ブロック４６０で、リレーショナル・データベースから削除されるオブジェクトを、削除順序に従いリレーショナル・データベースから削除することにより、削除オペレーションが実行される。
【００３８】
図４に示されるように、挿入オペレーションの実行後に更新オペレーションを実行することが安全である。なぜなら、更新されたオブジェクトにより参照され得る全てのオブジェクトは、既にリレーショナル・データベースに挿入されているからである。削除オペレーションは更新オペレーションの後で実行され得る。なぜなら、任意の起こり得る参照解除が更新フェーズの間に生じたかも知れないからである。
【００３９】
図５は、データベース・オペレーション・タイプに従うオブジェクトのクラスタ化（図４のブロック４１０）を示す。これらのオペレーションは、現オブジェクト（ここでは"ＣＯ"と呼ばれる）を指し示す、現オブジェクト・ポインタ（ここでは"ＣＯＰ"と呼ばれる）を用いて、非クラスタ化オブジェクト・リスト（ここではＵＣリストと呼ばれる）上で実行される。
【００４０】
図５のブロック５１０に示されるように、ＣＯＰがＵＣリスト内の最初の位置にセットされる。ブロック５１５で、ＣＯが新たなものであるか否かのテストが実行される。肯定の場合、ブロック５３５で、ＣＯが挿入リストに追加される。否定の場合、ブロック５２０で、ＣＯが削除されるか否かテストされる。肯定の場合、ブロック５４０で、ＣＯが削除リストに追加される。否定の場合、ブロック５２５で、ＣＯが更新リストに追加される。これらのオペレーションは、ブロック５４５でＵＣリストの終りに達するまで繰り返し実行される。一旦ＵＣリストの終りに達すると、挿入リストには、リレーショナル・データベースに挿入されるオブジェクトが収集され、削除リストには、リレーショナル・データベースから削除されるオブジェクトが収集され、更新リストには、リレーショナル・データベース内で更新されるオブジェクトが収集される。
【００４１】
同一のオペレーションが、挿入オペレーション及び更新オペレーションに対する詳細な前提条件を解決するために実行され得る。従って、これらのオペレーションが図６で総称的に述べられる。しかしながら、これらのオペレーションは、リレーショナル・データベースへのオブジェクトの挿入優先順位に従い、リレーショナル・データベースに挿入されるオブジェクトを順序付け、それにより挿入順序を定義するために別々に実行され、またリレーショナル・データベースからのオブジェクトの削除優先順位に従い、リレーショナル・データベースから削除されるオブジェクトを順序付け、それにより削除順序を定義するために別々に実行される。
【００４２】
挿入されるオブジェクトの順序付けは、削除されるオブジェクトの順序付けよりも先に実行され得る。或いは、削除されるオブジェクトの順序付けが、挿入されるオブジェクトの順序付けよりも先に実行され得る。更に、２つの独立のプロセスにおいて、挿入されるオブジェクトの順序付けが、削除されるオブジェクトの順序付けと同時に実行され得る。
【００４３】
最後に、リレーショナル・データベース内で更新されるオブジェクトの順序付けは、実行される必要がないことが理解できよう。換言すると、リレーショナル・データベース内で更新されるオブジェクトは、任意の順序で更新され得る。すなわち、順序付けは要求されない。なぜなら、挿入オペレーションの実行後、更新オペレーションを任意の順序で実行しても安全であるからである。なぜなら、更新されたオブジェクトにより参照され得る全てのオブジェクトは、既にリレーショナル・データベース内に挿入されているからである。
【００４４】
図９を参照すると、図６のオペレーションは、トランザクションに参加するオブジェクトの２つのリストを使用する。それらは未分類オブジェクト・リストまたは"ＵＳリスト"と呼ばれる未分類オブジェクトのリストと、分類済みリストまたは"Ｓリスト"と呼ばれる分類済みオブジェクトのリストである。分類済みオブジェクト・リストは初期には空であり、未分類オブジェクト・リストは初期に、リレーショナル・データベースに挿入される全てのオブジェクト、またはリレーショナル・データベースから削除される全てのオブジェクトを含む。オブジェクトの順序付けのためのオペレーションは、現オブジェクト・ポインタ（ＣＯＰ）を用いて、未分類オブジェクト・リスト内の現オブジェクト（ＣＯ）に対して作用する。
【００４５】
更に図９を参照すると、関連リストまたは"Ａリスト"は、現オブジェクトからその関連オブジェクトへの関連付けのリストを含む。現関連ポインタ（ＣＡＰ）は、現関連（ＣＡ）を指し示す。
【００４６】
オブジェクト間の関連の概念は一般に周知である。関連は関係とも見なされる。実際、用語"関連（association）"は、オブジェクトを使用するアプリケーションを設計するときの、オブジェクトのモデル化において一般に使用され、用語"関係（relationship）"は、データがどのようにデータベースに記憶されるかについて論じるときの、データのモデル化において使用される。オブジェクトのモデル化の１技法は、統合モデル化言語（ＵＭＬ）であり、これはオブジェクト間の関連を図式的に表すために使用される表記法を定義する。その１例を図１０に示す。ＵＭＬはオブジェクト管理グループの規格であり、H. Eriksson、M. Penkerによる"UML Toolkit"（１９９７年、John Wiley and Sons発行）で述べられている。
【００４７】
ＵＭＬモデルに従えば、関連モデルは名前により認識され、１つ以上の関連終端を含む関連から成る。関連終端は次の特性、すなわちこの関連終端が参照するクラスを指定するタイプ、クラスを参照する全ての関連終端に固有の役割名及び関連終端内のメンバの数を定義する多数性（multiplicity）を有する。
【００４８】
図６を再度参照すると、オブジェクトの順序付けが、未分類オブジェクト（ＵＳ）・リスト上で、オブジェクトを繰り返すことにより実行される。従って、ブロック６０２は、ＵＳリスト内の最初の位置が現オブジェクト（ＣＯ）となるように、現オブジェクト・ポインタ（ＣＯＰ）をＵＳリスト内の最初の位置にセットする。現オブジェクトはまた、ブロック６０４で、分類済み（Ｓ）リストの終りに追加される。オペレーションは次に、現オブジェクトが他のオブジェクトとの間で有する関連に渡って繰り返される。従って、ブロック６０６で、現関連ポインタ（ＣＡＰ）が、関連（Ａ）リスト内の最初の位置にセットされる。各関連に対して、オペレーションはブロック６１２で、現オブジェクトが現関連より上位の挿入優先順位（オブジェクトがデータベースに挿入される場合）または削除優先順位（オブジェクトがデータベースから削除される場合）を有するか否かをテストする。現オブジェクトが現関連より上位の順位を有し、関連オブジェクトが既にＳリスト内に、現オブジェクトよりも前の位置に含まれる場合（ブロック６１４）、関連オブジェクト及びその低優先順位の関連オブジェクトが、Ｓリストの終りに再帰的に移動される（ブロック６１６）。
【００４９】
ブロック６１８では、関連オブジェクトが他の関連オブジェクトを含む場合、関連オブジェクトが一時的現オブジェクトとなり（ブロック６０８）、優先順位テスト及び関連オブジェクトのＳリストの終りへの移動が再帰的に実行される。全ての関連オブジェクトがブロック６１８でテストされ、ブロック６２０でＡリストの終りにまだ達しない場合、ＣＡＰがＡリスト内で進められ（ブロック６２２）、再帰オペレーションが再度実行される。ブロック６２０でＡリストの終りに達すると、次にブロック６２４でＵＳリストの終りにまだ達していなければ、ＣＯＰがＵＳリスト内で１つ進められる（ブロック６１０）。従って、図６の処理の完了時に、クラスタ化リスト内のオブジェクトに対して実行される挿入オペレーションまたは削除オペレーションのいずれかの順序が、リレーショナル・データベース内で定義される参照保全規則に対応する。
【００５０】
図７及び図８は、それぞれ、関連の現オブジェクトと関連オブジェクト間の挿入優先順位を決定するための及び関連の現オブジェクトと関連オブジェクト間の削除優先順位を決定するための詳細なオペレーションを示す。図７または図８のオペレーションは、挿入（ブロック６１２ａ）または削除（ブロック６１２ｂ）されるオブジェクトの順序付けが、図６のブロック６１２で実行されているか否かに依存して実行される。
【００５１】
図７に示されるように、現オブジェクトは、関連オブジェクトを保有するテーブルが、現オブジェクトを保有するテーブル内の基本キー列を参照する外部キー列を有し、この基本キー／外部キー列の対に対して定義される制約が存在する場合、関連より上位の挿入優先順位を有する。図８に示されるように、現オブジェクトは、現オブジェクトを保有するテーブルが、関連オブジェクトを保有するテーブル内の基本キー列を参照する外部キー列を有し、この基本キー／外部キー列の対に対して定義される制約が存在する場合、関連より上位の削除優先順位を有する。
【００５２】
従って、ブロック７０２／８０２では、関連が制約を有するか否かをテストされる。有さない場合、ブロック７０８／８０８で、現オブジェクトは優先順位を有さない。制約を有する場合、ブロック７０４で、関連オブジェクトが外部キーを有するか否かがテストされ、ブロック８０４で、現オブジェクトが外部キーを有するか否かがテストされる。外部キーを有する場合、次にブロック７１０／８１０で、現オブジェクトが優先順位を有する。外部キーを有さない場合、ブロック７０６／８０６で、現オブジェクトは優先順位を有さない。一旦優先順位が決定されると、オブジェクトを順序付けるために多くの他の分類オペレーションが実行され得る。
【００５３】
従って、トランザクションの完了時に、オブジェクト指向トランザクション・システムによりデータベースに挿入、またはデータベースから削除されるオブジェクトの相対位置を決定するために関連が使用される。オペレーション順序付けは、カスタム・プログラミングを生成する必要なしに、またオブジェクト指向トランザクション処理システムの有用性を人為的に制約する必要なしに、自動的に実行され得る。
【００５４】
図面及び明細書では、本発明の典型的な好適な実施例について開示し、特定の用語を用いたが、これらは総称的且つ記述的な意味で使用されており、本発明を制限するものではない。
【００５５】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５６】
（１）オブジェクト指向トランザクション・システムによるトランザクションの完了時に、リレーショナル・データベース上で実行されるデータベース・オペレーションを順序付ける方法であって、
完了されたトランザクション内のオブジェクトを、前記リレーショナル・データベース内に挿入されるオブジェクトのグループ、前記リレーショナル・データベースから削除されるオブジェクトのグループ、及び前記リレーショナル・データベース内で更新されるオブジェクトのグループにクラスタ化するステップと、前記リレーショナル・データベースに挿入されるオブジェクトを、前記リレーショナル・データベースへの当該オブジェクトの挿入優先順位に従い順序付け、挿入順序を定義するステップと、
前記リレーショナル・データベースから削除されるオブジェクトを、前記リレーショナル・データベースからの当該オブジェクトの削除優先順位に従い順序付け、削除順序を定義するステップと、
前記リレーショナル・データベースに挿入されるオブジェクトを、前記挿入順序に従い、前記リレーショナル・データベースに挿入するステップと、
前記リレーショナル・データベースを、前記リレーショナル・データベース内で更新されるオブジェクトにより更新するステップと、
前記リレーショナル・データベースから削除されるオブジェクトを、前記削除順序に従い、前記リレーショナル・データベースから削除するステップと
を含む、方法。
（２）前記更新するステップが、前記リレーショナル・データベースを該リレーショナル・データベース内で更新されるオブジェクトにより、任意の順序で更新するステップを含む、前記（１）記載の方法。
（３）前記リレーショナル・データベースから削除されるオブジェクトを順序付けるステップが、
前記削除されるオブジェクト間の関連を識別するステップと、
削除される現オブジェクトが、削除される関連オブジェクトより上位の削除優先順位を有するか否かを判断するステップと、
前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有する場合、前記削除される現オブジェクトを、前記削除される関連オブジェクトより上位に順序付けるステップと、
前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有さない場合、前記削除される現オブジェクトを、前記削除される関連オブジェクトより下位に順序付けるステップと、
前記削除される現オブジェクトに関連付けられる残りのオブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、繰り返し実行するステップと
を含む、前記（１）記載の方法。
（４）前記削除される現オブジェクトが前記削除される関連オブジェクトより上位に順序付けられる場合、前記削除される関連オブジェクトに関連付けられる各オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、再帰的に実行するステップを含む、前記（３）記載の方法。
（５）前記削除されるオブジェクト間の関連を識別するステップが、
前記削除されるオブジェクトについて現オブジェクト及び関連オブジェクトを識別するステップと、
前記削除されるオブジェクトの外部キー及び基本キーを識別するステップと、識別された前記外部キーと前記基本キーの対の間の、前記リレーショナル・データベース内の制約を識別するステップと
を含み、
前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有するか否かを判断するステップが、
前記削除される現オブジェクトの外部キーが、前記削除される関連オブジェクトの基本キーを参照するか否かを判断するステップと、
前記削除される現オブジェクトの前記外部キーと、前記削除される関連オブジェクトの前記基本キーとの間で識別される制約が存在する場合、前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有すると決定するステップと、
前記削除される現オブジェクトの前記外部キーと、前記削除される関連オブジェクトの前記基本キーとの間で識別される制約が存在しない場合、前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有さないと決定するステップと
を含む、前記（３）記載の方法。
（６）前記リレーショナル・データベースに挿入されるオブジェクトを順序付けるステップが、
前記挿入されるオブジェクト間の関連を識別するステップと、
挿入される現オブジェクトが、挿入される関連オブジェクトより上位の挿入優先順位を有するか否かを判断するステップと、
前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有する場合、前記挿入される現オブジェクトを、前記挿入される関連オブジェクトより上位に順序付けるステップと、
前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有さない場合、前記挿入される現オブジェクトを、前記挿入される関連オブジェクトより下位に順序付けるステップと、
前記挿入される現オブジェクトに関連付けられる残りのオブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、繰り返し実行するステップと
を含む、前記（１）記載の方法。
（７）前記挿入される現オブジェクトが前記挿入される関連オブジェクトより上位に順序付けられる場合、前記挿入される関連オブジェクトに関連付けられる各オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、再帰的に実行するステップを含む、前記（６）記載の方法。
（８）前記挿入されるオブジェクト間の関連を識別するステップが、
前記挿入されるオブジェクトについて現オブジェクト及び関連オブジェクトを識別するステップと、
前記挿入されるオブジェクトの外部キー及び基本キーを識別するステップと、識別された前記外部キーと前記基本キーの対の間の、前記リレーショナル・データベース内の制約を識別するステップと
を含み、
前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有するか否かを判断するステップが、
前記挿入される関連オブジェクトの外部キーが、前記挿入される現オブジェクトの基本キーを参照するか否かを判断するステップと、
前記挿入される関連オブジェクトの前記外部キーと、前記挿入される現オブジェクトの前記基本キーとの間で識別される制約が存在する場合、前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有すると決定するステップと、
前記挿入される現オブジェクトの前記基本キーと、前記挿入される関連オブジェクトの前記外部キーとの間で識別される制約が存在しない場合、前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有さないと決定するステップと
を含む、前記（６）記載の方法。
（９）オブジェクト指向トランザクション・システムによるトランザクションの完了時に、リレーショナル・データベースに挿入、または前記リレーショナル・データベースから削除されるオブジェクトを順序付ける方法であって、
前記挿入または削除されるオブジェクト間の関連を識別するステップと、
挿入または削除される現オブジェクトが、挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有するか否かを判断するステップと、
前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有する場合、前記挿入または削除される現オブジェクトを、前記挿入または削除される関連オブジェクトより上位に順序付けるステップと、
前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有さない場合、前記挿入または削除される現オブジェクトを、前記挿入または削除される関連オブジェクトより下位に順序付けるステップと、
前記挿入または削除される現オブジェクトに関連付けられる残りのオブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、繰り返し実行するステップと
を含む、方法。
（１０）前記挿入または削除される現オブジェクトが前記挿入または削除される関連オブジェクトより上位に順序付けられる場合、前記挿入または削除される関連オブジェクトに関連付けられる各オブジェクトに対して、前記判断するステップ、前記上位に順序付けるステップ及び前記下位に順序付けるステップを、再帰的に実行するステップを含む、前記（９）記載の方法。
（１１）前記挿入または削除されるオブジェクト間の関連を識別するステップが、
前記挿入または削除されるオブジェクトについて現オブジェクト及び関連オブジェクトを識別するステップと、
前記挿入または削除されるオブジェクトの外部キー及び基本キーを識別するステップと、
識別された前記外部キーと前記基本キーの対の間の、前記リレーショナル・データベース内の制約を識別するステップと
を含み、
前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有するか否かを判断するステップが、
前記挿入される関連オブジェクトの外部キーが、前記挿入される現オブジェクトの基本キーを参照するか否かを判断するステップと、
前記削除される現オブジェクトの外部キーが、前記削除される関連オブジェクトの基本キーを参照するか否かを判断するステップと、
前記外部キーと前記基本キーとの間で識別される制約が存在する場合、前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有すると決定するステップと、
前記制約が存在しない場合、前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有さないと決定するステップと
を含む、前記（９）記載の方法。
（１２）リレーショナル・データベースと、
オブジェクト指向トランザクション・システムと、
完了されたトランザクション内のオブジェクトを、前記リレーショナル・データベース内に挿入されるオブジェクトのグループと、前記リレーショナル・データベースから削除されるオブジェクトのグループと、前記リレーショナル・データベース内で更新されるオブジェクトのグループとにクラスタ化する手段と、
前記リレーショナル・データベースに挿入されるオブジェクトを、前記リレーショナル・データベースへの当該オブジェクトの挿入優先順位に従い順序付け、挿入順序を定義する手段と、
前記リレーショナル・データベースから削除されるオブジェクトを、前記リレーショナル・データベースからの当該オブジェクトの削除優先順位に従い順序付け、削除順序を定義する手段と、
前記リレーショナル・データベースに挿入されるオブジェクトを、前記挿入順序に従い、前記リレーショナル・データベースに挿入する手段と、
前記挿入手段に応答して、前記リレーショナル・データベースを、前記リレーショナル・データベース内で更新されるオブジェクトにより更新する手段と、
前記更新手段に応答して、前記リレーショナル・データベースから削除されるオブジェクトを、前記削除順序に従い、前記リレーショナル・データベースから削除する手段と
を含む、データ処理システム。
（１３）前記更新する手段が、前記リレーショナル・データベースを該リレーショナル・データベース内で更新されるオブジェクトにより、任意の順序で更新する手段を含む、前記（１２）記載のシステム。
（１４）前記リレーショナル・データベースから削除されるオブジェクトを順序付ける手段が、
前記削除されるオブジェクト間の関連を識別する手段と、
削除される現オブジェクトが、削除される関連オブジェクトより上位の削除優先順位を有するか否かを判断する手段と、
前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有する場合、前記削除される現オブジェクトを、前記削除される関連オブジェクトより上位に順序付ける手段と、
前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有さない場合、前記削除される現オブジェクトを、前記削除される関連オブジェクトより下位に順序付ける手段と
を含む、前記（１２）記載のシステム。
（１５）前記削除されるオブジェクト間の関連を識別する手段が、
前記削除されるオブジェクトについて現オブジェクト及び関連オブジェクトを識別する手段と、
前記削除されるオブジェクトの外部キー及び基本キーを識別する手段と、
識別された前記外部キーと前記基本キーの対の間の、前記リレーショナル・データベース内の制約を識別する手段と
を含み、
前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有するか否かを判断する手段が、
前記削除される現オブジェクトの外部キーが、削除される関連オブジェクトの基本キーを参照するか否かを判断する手段と、
前記削除される現オブジェクトの前記外部キーと、前記削除される関連オブジェクトの前記基本キーとの間で識別される制約が存在する場合、前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有すると決定する手段と、
前記削除される現オブジェクトの前記外部キーと、前記削除される関連オブジェクトの前記基本キーとの間で識別される制約が存在しない場合、前記削除される現オブジェクトが、前記削除される関連オブジェクトより上位の削除優先順位を有さないと決定する手段と
を含む、前記（１４）記載のシステム。
（１６）前記リレーショナル・データベースに挿入されるオブジェクトを順序付ける手段が、
前記挿入されるオブジェクト間の関連を識別する手段と、
挿入される現オブジェクトが、挿入される関連オブジェクトより上位の挿入優先順位を有するか否かを判断する手段と、
前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有する場合、前記挿入される現オブジェクトを、前記挿入される関連オブジェクトより上位に順序付ける手段と、
前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有さない場合、前記挿入される現オブジェクトを、前記挿入される関連オブジェクトより下位に順序付ける手段と
を含む、前記（１２）記載のシステム。
（１７）前記挿入されるオブジェクト間の関連を識別する手段が、
前記挿入されるオブジェクトについて現オブジェクト及び関連オブジェクトを識別する手段と、
前記挿入されるオブジェクトの外部キー及び基本キーを識別する手段と、
識別された前記外部キーと前記基本キーの対の間の、前記リレーショナル・データベース内の制約を識別する手段と
を含み、
前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有するか否かを判断する手段が、
前記挿入される関連オブジェクトの外部キーが、前記挿入される現オブジェクトの基本キーを参照するか否かを判断する手段と、
前記挿入される現オブジェクトの外部キーと、前記挿入される関連オブジェクトの基本キーとの間で識別される制約が存在する場合、前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有すると決定する手段と、
前記挿入される現オブジェクトの基本キーと、前記挿入される関連オブジェクトの外部キーとの間で識別される制約が存在しない場合、前記挿入される現オブジェクトが、前記挿入される関連オブジェクトより上位の挿入優先順位を有さないと決定する手段と
を含む、前記（１６）記載のシステム。
（１８）リレーショナル・データベースと、
オブジェクト指向トランザクション・システムと、
挿入または削除されるオブジェクト間の関連を識別する手段と、
挿入または削除される現オブジェクトが、挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有するか否かを判断する手段と、
前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有する場合、前記挿入または削除される現オブジェクトを、前記挿入または削除される関連オブジェクトより上位に順序付ける手段と、
前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有さない場合、前記挿入または削除される現オブジェクトを、前記挿入または削除される関連オブジェクトより下位に順序付ける手段と
を含む、データ処理システム。
（１９）前記挿入または削除されるオブジェクト間の関連を識別する手段が、前記挿入または削除されるオブジェクトについて現オブジェクト及び関連オブジェクトを識別する手段と、
前記挿入または削除されるオブジェクト内の外部キー及び基本キーを識別する手段と、
識別された前記外部キーと前記基本キーの対の間の、前記リレーショナル・データベース内の制約を識別する手段と
を含み、
前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有するか否かを判断する手段が、
前記挿入される関連オブジェクトの外部キーが、前記挿入される現オブジェクトの基本キーを参照するか否かを判断する手段と、
前記削除される現オブジェクトの外部キーが、前記削除される関連オブジェクトの基本キーを参照するか否かを判断する手段と、
前記外部キーと前記基本キーとの間で識別される制約が存在する場合、前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有すると決定する手段と、
前記制約が存在しない場合、前記挿入または削除される現オブジェクトが、前記挿入または削除される関連オブジェクトより上位の挿入優先順位または削除優先順位を有さないと決定する手段と
を含む、前記（１８）記載のシステム。
（２０）前記（１）乃至（１１）のいずれかに記載の方法を実行するためのプログラムを記憶したプログラム記憶媒体。
【図面の簡単な説明】
【図１】オブジェクト指向トランザクション・システムによるトランザクションの完了時に、リレーショナル・データベース上で実行されるデータベース・オペレーションを順序付けるためのシステム、方法及びコンピュータ・プログラム製品のブロック図である。
【図２】リレーショナル・データベース内の関係を示す図である。
【図３】オブジェクト指向トランザクション内の論理オブジェクト関連を示す図である。
【図４】本発明に従うデータベース・オペレーション順序付けを示すフロー図である。
【図５】本発明に従うデータベース・オペレーション順序付けを示すフロー図である。
【図６】本発明に従うデータベース・オペレーション順序付けを示すフロー図である。
【図７】本発明に従うデータベース・オペレーション順序付けを示すフロー図である。
【図８】本発明に従うデータベース・オペレーション順序付けを示すフロー図である。
【図９】本発明に従うオブジェクトのリストを示す図である。
【図１０】図３のオブジェクト指向トランザクションの関連の例を示す図である。
【符号の説明】
１００  リレーショナル・データベース・システム
１１０  リレーショナル・データベース
１２０  オブジェクト指向トランザクション・システム
１３０  トランザクション処理システム
１４０、１６０  インタフェース
１５０  データベース・オペレーション順序付け
【図１】
0003790650.tif 000002
【図２】
0003790650.tif 000003
【図３】
0003790650.tif 000004
【図４】
0003790650.tif 000005
【図５】
0003790650.tif 000006
【図６】
0003790650.tif 000007
【図７】
0003790650.tif 000008
【図８】
0003790650.tif 000009
【図９】
0003790650.tif 000010
【図１０】
0003790650.tif 000011