(57)【特許請求の範囲】
【請求項１】
ＲＤＢ（リレーショナル・データベース）と当該ＲＤＢに対して処理を実行するデータ処理本体部とを有するＲＤＢシステムにおいて、
前記ＲＤＢ上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むようなHas−a関係を規定するHas−a関係管理テーブルと、前記各クラスに基づく実態を表すインスタンスを一意に発行するインスタンスＩＤを管理するインスタンスＩＤ管理テーブルと、このインスタンスＩＤ管理テーブルの親となるインスタンスＩＤと子となる複数のインスタンスＩＤとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記ＲＤＢから発行される一意の番号であるインスタンスＩＤをインスタンスＩＤ管理テーブルに生成し、
また、前記データ処理本体部は、２つのクラスのインスタンスＩＤ指定のもとにインスタンス接続処理の指示を受けたとき、前記Has−a関係管理テーブルから前記２つのクラスが集合型のHas−a関係にあれば、中間インスタンス管理テーブルに両インスタンスＩＤの接続関係を設定し、
また、前記データ処理本体部は、あるクラスのインスタンスＩＤ指定のもとに前記集合型のHas−aクラスのインスタンス検索指示を受けたとき、前記中間インスタンス管理テーブルに前記あるクラスと接続関係を有する属性値が設定されていれば、これら両クラスの中間クラスのインスタンスＩＤをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから前記接続関係にあるクラス及びインスタンスを検索することを特徴とするＲＤＢシステム。
【請求項２】
ＲＤＢ（リレーショナル・データベース）と当該ＲＤＢに対して処理を実行するデータ処理本体部とを有するＲＤＢシステムにおいて、
前記ＲＤＢ上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むようなHas−a関係を規定するHas−a関係管理テーブルと、前記各クラスに基づく実態を表すインスタンスを一意に発行するインスタンスＩＤを管理するインスタンスＩＤ管理テーブルと、このインスタンスＩＤ管理テーブルの親となるインスタンスＩＤと子となる複数のインスタンスＩＤとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルと、このインスタンスＩＤ管理テーブルの親となるインスタンスＩＤに対し、子となるインスタンスＩＤが前記親となるインスタンスＩＤ及び属性を規定する親ポインタとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記ＲＤＢから発行される一意の番号であるインスタンスＩＤをインスタンスＩＤ管理テーブルに生成し、
また、前記データ処理本体部は、あるクラスのインスタンスＩＤ指定のもとに前記親インスタンスの検索指示を受けたとき、前記あるクラスのインスタンスの親ポインタに属性値が設定されていれば、その親ポインタの属性値から前記中間インスタンス管理テーブルを特定し、あるクラス及び接続関係をもつクラスの中間クラスのインスタンスＩＤをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから親インスタンスを検索することを特徴とするＲＤＢシステム。
【発明の詳細な説明】
【０００１】
【発明に属する技術分野】
本発明は、ＲＤＢ（リレーショナルデータベース）をオブジェクト指向的に使用するＲＤＢシステムに関する。
【０００２】
【従来の技術】
従来、各ユーザにおいては、図２３に示すような管理システム５１からＣＰＵ内蔵のデータ処理本体部５２に対し、ＯＳを初め、ＯＲＤＢに関する制御情報を送出し、オブジェクト指向であるＯＲＤＢ５３を制御するＯＲＤＢシステムと、図２４に示すようにＲＤＢソフトをもつＣＰＵ内蔵のデータ処理本体部５４がＲＤＢ５５を制御するＲＤＢシステムとが用いられているが、市場の普及状況を見る限り、ＲＤＢシステムが多く出回っている。なお、管理システム５１を持たないデータ処理本体部５２とＯＲＤＢ５３とから成るＯＲＤＢシステムも用いられている。
【０００３】
そこで、ＯＲＤＢをもつユーザの見地から考えたとき、一般ユーザによるＲＤＢへのアクセス頻度が高いことから、管理システム５１ないしデータ処理本体部５２としては、ＯＲＤＢに関する制御情報等を用いてＲＤＢを使用したいという要望が多い。
【０００４】
そこで、以上のような要望を満たすために、管理システム５１ないしデータ処理本体部５２は、ＯＲＤＢシステムを全面的にＲＤＢ用ソフトやＲＤＢ５４に交換することが考えられるが、それではシステムの稼動を中止させたり、プログラム作成作業に多くの時間を要したり、さらにコスト増となる問題がある。
【０００５】
そこで、一般的な方法としては、新たに管理テーブルを設け、ＯＲＤＢ用ソフトによる制御情報に基づいて管理テーブルがＲＤＢ用に変換し、オブジェクト指向的に構造をもたせてＲＤＢを使用することが考えられる。
【０００６】
【発明が解決しようとする課題】
ところで、以上述べたように新たに管理テーブルを設け、ＯＲＤＢシステムを用いてＲＤＢを使用することは可能であるが、これはあくまでも１つの考え方であって、実際にはオブジェクト指向的な構造の場合には継承関係やHａｓ−ａ関係の検索など、非常に変換上の難しい問題があり、また性能劣化という問題が出てくる。
【０００７】
本発明は上記事情に鑑みてなされたもので、ＲＤＢ上にオブジェクト指向的な構造をもたせてＯＲＤＢ的に使用し、また極力性能劣化を起こさずにＲＤＢにオブジェクト指向的な構造をもたせるＲＤＢシステムを提供することにある。
【０００９】
【課題を解決するための手段】
（１）  上記課題を解決するために、本発明は、ＲＤＢと当該ＲＤＢに対して処理を実行するデータ処理本体部とを有するＲＤＢシステムにおいて、前記ＲＤＢ上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むようなHas−a関係を規定するHas−a関係管理テーブルと、前記各クラスに基づく実態を表すインスタンスを一意に発行するインスタンスＩＤを管理するインスタンスＩＤ管理テーブルと、このインスタンスＩＤ管理テーブルの親となるインスタンスＩＤと子となる複数のインスタンスＩＤとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記ＲＤＢから発行される一意の番号であるインスタンスＩＤをインスタンスＩＤ管理テーブルに生成し、また、前記データ処理本体部は、２つのクラスのインスタンスＩＤ指定のもとにインスタンス接続処理の指示を受けたとき、前記Has−a関係管理テーブルから前記２つのクラスが集合型のHas−a関係にあれば、中間インスタンス管理テーブルに両インスタンスＩＤの接続関係を設定し、また、前記データ処理本体部は、あるクラスのインスタンスＩＤ指定のもとに前記集合型のHas−aクラスのインスタンス検索指示を受けたとき、前記中間インスタンス管理テーブルに前記あるクラスと接続関係を有する属性値が設定されていれば、これら両クラスの中間クラスのインスタンスＩＤをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから前記接続関係にあるクラス及びインスタンスを検索するＲＤＢシステムである。
【００１１】
（２）  また、本発明は、ＲＤＢと当該ＲＤＢに対して処理を実行するデータ処理本体部とを有するＲＤＢシステムにおいて、前記ＲＤＢ上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むようなHas−a関係を規定するHas−a関係管理テーブルと、前記各クラスの実態を表すインスタンスを一意に発行するインスタンスＩＤを管理するインスタンスＩＤ管理テーブルと、このインスタンスＩＤ管理テーブルの親となるインスタンスＩＤと子となる複数のインスタンスＩＤとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルと、このインスタンスＩＤ管理テーブルの親となるインスタンスＩＤに対し、子となるインスタンスＩＤが前記親となるインスタンスＩＤ及び属性を規定する親ポインタとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記ＲＤＢから発行される一意の番号であるインスタンスＩＤをインスタンスＩＤ管理テーブルに生成し、また、前記データ処理本体部は、あるクラスのインスタンスＩＤ指定のもとに前記親インスタンスの検索指示を受けたとき、前記あるクラスのインスタンスの親ポインタに属性値が設定されていれば、その親ポインタの属性値から前記中間インスタンス管理テーブルを特定し、あるクラス及び接続関係をもつクラスの中間クラスのインスタンスＩＤをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから親インスタンスを検索するＲＤＢシステムである。
【００１２】
以上のようにコンピュータが記録媒体に記録されるインスタンス生成用プログラムを読取って実行すれば、ＯＲＤＢの継承関係のインスタンスを容易に生成可能となる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【００１４】
図１は本発明に係るＲＤＢシステムの一実施の形態を示すハードウエア構成図である。
【００１５】
このＲＤＢシステムは、所要とする制御指示を入力するキーボード,マウス等のデータ入力手段１と、ＯＲＤＢに関する処理プログラム，その他必要な固定データ等を記憶するプログラム記憶手段２と、ＲＤＢ３と、データ入力手段１からの制御指示を受け、ＯＲＤＢ処理用プログラムに従ってＲＤＢ３に対して必要な処理を実行し、その処理結果を表示手段４に表示するＣＰＵで構成されたデータ処理本体部５と、後記するインスタンスを生成するためのインスタンス生成用プログラムを記録する記録媒体６とで構成されている。
【００１６】
なお、これらプログラム記憶手段２および記録媒体６は別体として説明したが、同一の記憶媒体に格納する構成であってもよい。
【００１７】
このプログラム記憶手段２および記憶媒体６としては、一般的には磁気ディスクやＣＤ−ＲＯＭが用いられるが、それ以外にも例えば磁気テープ、ＤＶＤ−ＲＯＭ、フロッピーディスク、ＭＯ、ＣＤ−Ｒ、メモリカードなどを用いてもよい。
【００１８】
前記ＲＤＢ３上には後記するようにデータ処理本体部５からＯＲＤＢに関する制御情報を受けて当該ＲＤＢを使用するためのオブジェクト指向的な構造をもつ変換用テーブル２１が設けられている。
【００１９】
図２はＤＢ管理システムを用いた場合のＲＤＢシステムの他の実施形態を示すハードウエア構成図である。なお、同図において図１と同一部分には同一符号を付してその詳しい説明を省略する。
【００２０】
このＤＢ管理システムは、ＲＤＢ３およびＣＰＵで構成されたデータ処理本体部５からなるＲＤＢシステムに対し、ＯＲＤＢに関する制御情報を送出し、特にＲＤＢ３をオブジェクト指向的に使用する管理システム１２が設けられている。この管理システム１２には後記するオブジェクト指向的な構造をもつ変換用テーブル２１が搭載されている。
【００２１】
以上のようにＲＤＢ３をオブジェクト指向的な構造を持たせるに際し、図１および図２に示す種々のシステムにより実現可能である。
【００２２】
ところで、以上のような各種のシステムにおいて、ＯＲＤＢに関する制御情報を用いてＲＤＢを使用するに際し、ＯＲＤＢとＲＤＢには次のような相違点が挙げられる。
【００２３】
（１）  継承関係
（２）  Has−a関係
（３）  インスタンスＩＤの管理
（４）  集合型インスタンスの管理
（５）  親ポインタ属性
従って、ＯＲＤＢの制御情報を用いて、ＲＤＢをＯＲＤＢの構造に見せかけるためには、以上の相違点を考慮した変換用テーブル２１を作成する必要がある。
【００２４】
（１）  継承関係について
継承関係とは、他のクラスの属性を自分のクラスの属性として扱えることをいう。今、図３に示すようにＯＲＤＢの構造でクラスを宣言している場合、子クラスＢは親クラスＡの属性を持つことを意味し、換言すれば、子クラスＢはより大きい親クラスＡの属性を受け継いだもの，つまり継承関係にあると考えることができる。
【００２５】
この図３はＯＲＤＢの特徴であるが、ＲＤＢ３には存在しない機能である。そこで、ＯＲＤＢシステムが図４の上段のようなクラスを宣言している場合、ＲＤＢ３、データ処理本体部５または管理システム１２などには、下段に示す継承関係管理テーブル２１ａを作成し用意する。
【００２６】
この図４に示す下段の継承関係管理テーブル２１ａはクラスＡとクラスＢとの間の継承関係を表している。つまり、クラスＡはクラスＢと継承関係にあるが、この継承関係にあるクラスＢは「子クラス（１）」であること、またクラスＢはクラスＡと継承関係にあり、この継承関係にあるクラスＡは「親クラス（０）」であることを表している。従って、データ処理本体部５がデータ構造を見る場合、継承関係管理テーブル２１ａをアクセスし、継承関係であることを確認することにより、ＲＤＢ３上で継承関係を実現することが可能となる。
【００２７】
（２）  Has−a関係について
このHas−a関係とは、クラスが属性として他のクラスを持つことをいう。今、ＯＲＤＢシステムが図５に示すようなクラスを宣言している場合、クラスＢはクラスＡの属性を持つことができる。これは、クラスＢは属性Ｂ２にてクラスＡという要素を含むことを意味する。
【００２８】
この図５はＯＲＤＢの特徴であるが、ＲＤＢには存在しない機能である。そこで、図６の上段のようにクラスを宣言している場合、ＲＤＢ３，データ処理本体部５または管理システム１２上に図６の下段に示すHas−a関係管理テーブル２１ｂを作成し用意する。なお、このHas−a関係管理テーブル２１ｂはクラスＢのみについてHas−a関係を記述しているが、他の多数のクラス例えばクラスＡについても記述されている。
【００２９】
この図６の下段テーブル２１ｂでは、クラス名Ｂは属性Ｂ２としてクラスＡを持っていることを表している。従って、データ処理本体部５がデータ構造を見る場合、Has−a関係管理テーブル２１ｂをアクセスし、Has−a関係であることを確認することにより、ＲＤＢ３上でHas−a関係を実現することが可能である。
【００３０】
（３）  インスタンスＩＤの管理について
このインスタンスとは、各クラスの中身ないし実態を意味し、クラスのより具体的な内容であると言える。通常,ＯＲＤＢでは、生成したインスタンスをＯＲＤＢ上に一意の番号（インスタンスＩＤ）で管理する機能をもっているので、ＯＲＤＢを用いたＯＲＤＢシステムの場合には、インスタンスＩＤを用いて処理する場合があるので、ＲＤＢ３を使用する場合には、インスタンスＩＤについても考慮する必要がある。
【００３１】
ところで、ＲＤＢ３上でインスタンスＩＤを管理する場合、ＲＤＢ上の順番号発行機能を用いて、インスタンス生成時にＲＤＢ３上で一意の番号を発行するようにする。すなわち、図７左側に記述するＯＲＤＢのクラステーブルに対し、この順番号発行機能により発行される番号は同図右側のように作成されるテーブルのMy−id属性に設定する。これにより、生成されたインスタンス毎にＩＤを割り当てることができる。
【００３２】
しかし、図７の右側に示すテーブルだけでは、インスタンスＩＤだけの指定を受けて何らかの操作を行おうとした場合、どのクラスのインスタンスなのか判断することが難しい。
【００３３】
そこで、図８に示すようなインスタンスＩＤ管理テーブル２１ｃを作成し、発行された番号が何れのクラスに属するかが分かるようにする。つまり、発行されたインスタンスＩＤ「００００００１」はＡクラスであること、また継承関係で作成されるインスタンスについても、生成された各テーブルのインスタンスＩＤを例えば「００００００２」のように同じＩＤとすることにより、同一のインスタンスと見なすようにする。
【００３４】
（４）  集合型インスタンスの管理について
一般に、ＯＲＤＢシステムにおいては、1つの属性に複数のインスタンスを関連付けできる機能をもっている。例えばある人が複数の車両を保有する場合、図９に示すようにある人ＡのインスタンスＩＤ「００００１」に車ＡのインスタンスＩＤ「０００１１」と車ＢのインスタンスＩＤ「０００１２」とを関連付けされて管理することが可能となっている。
【００３５】
一方、ＲＤＢ３においては、属性に他クラスのインスタンスを設定することもできないし、１つの属性に複数の属性値も設定できないので、インスタンス間の関連付けもできない。
【００３６】
ゆえに、ＯＲＤＢに関する制御情報を用いて、ＲＤＢ３を使用するに際し、インスタンス間を関連付けるために、既にＯＲＤＢが所有する図９に示すインスタンスＩＤに対し、図１０に示すような中間インスタンス管理テーブルを作成することにより、集合型インスタンスの管理を行う必要がある。
【００３７】
ところで、以上のような場合、ＲＤＢ上において１つの中間インスタンス管理テーブルだけを用いて、全てのインスタンスを管理することになり、インスタンスの検索や生成などの性能に影響が出てくる。
【００３８】
そこで、図１０に示すテーブルに代えて図１１に示す命名規則「−親クラス−属性名」を付けた中間インスタンス管理テーブル１２ｄを作成し、１つの管理テーブル１２ｄにて１つの集合型構造の関係を規定することにより、インスタンスの分散および性能劣化を防ぐことができる。
【００３９】
よって、以上のような中間インスタンス管理テーブル１２ｄを用意すれば、ＲＤＢ上で１つの属性に複数の属性を接続できる。
【００４０】
従って、以上述べたような管理テーブル１２ａ〜１２ｄを用意することにより、ＲＤＢ３上にＯＲＤＢの構造を構築できる。
【００４１】
（５）  親ポインタ属性について
この親ポインタ属性とは、インスタンスがどの属性に接続されているかを簡単に分かるようにするための属性をいう。この属性は、ＲＤＢ３上にＯＲＤＢのオブジェクト指向的な構造を構築する場合、必ずしも必要としないが、性能面を考慮した場合に必要となる。
【００４２】
そこで、図１２の上段左側の親テーブルＡに対し、同じく上段右側の子テーブルＢで属性の命名規則や接続される親テーブルと属性名とが分かるようにするためには、下段左側の記述に対し、下段右側に示すように作成する必要がある。すなわち、子テーブルＢは、整数型の命名規則をもち、親テーブルＡの属性ＡＡをもつことを意味する。従って、下段左側の親テーブルＡの属性ＡＡの「ｉｎｔｅｇｅｒ」＝Ｂを意味する。
【００４３】
但し、集合属性でないHａｓ−ａ属性の場合であっても、１つのインスタンスは複数のインスタンスに接続されているので、中間インスタンス管理テーブル１２ｄを設け、管理する必要がある。インスタンス相互の関係は、図１３に示すようになる。
【００４４】
なお、親ポインタ属性が無い場合と有る場合とがあるが、その親ポインタ属性の有無に応じて図１４に示す如くアクセスするテーブル数が異なる。親ポインタが無い場合には、どのテーブルに接続されているかHａｓ−ａ関係管理テーブル（図６参照）でヒットした全ての親テーブルを検索する必要があるが、親ポインタ属性がある場合には、親ポインタ属性に値が設定されているか確認するだけで、どのテーブルに接続されているかが分かり、仮に接続されていても、親ポインタ属性の名前からテーブル名が検索でき、データ構造によっては無い場合に比べてテーブルへのアクセス数を大幅に減らすことができる。
【００４５】
次に、インスタンス生成を含む各種の処理例について説明する。但し、各種の処理に際しては、該当処理用プログラムが図１および図２に示す記録媒体６に記録され、データ処理本体部５がそのプログラムを読取って必要な処理を実行することになる。
【００４６】
なお、以下に述べる各種の処理は、図１５に示すサンプル構造を用いた場合について説明する。
【００４７】
（ａ）  インスタンスの生成処理について（図１６参照）
継承関係を含むインスタンスの生成処理は、データ入力手段１からクラスＢを指定し、インスタンスの生成を指示すると、データ処理本体部５，管理システム１２は、図４に示す継承関係管理テーブル２１ａをアクセスし、クラスＢが継承されているテーブル２１ａの有無を調べ、継承関係を調べる（Ｓ１〜Ｓ３：クラス継承テーブル有無確認機能）。
【００４８】
ステップＳ３において、継承関係が有れば、クラスＡおよびクラスＢに対するインスタンスを生成する。この生成されたクラスＡとクラスＢのインスタンスに対し、ＤＢＭＳ（データベース・マネジメント・システム）の順番号発行機能を用いて、クラスＡ，Ｂに同じインスタンス番号を一意に発行する（Ｓ４〜Ｓ６：インスタンス生成機能）。
【００４９】
そして、生成されたインスタンスＩＤとクラス名とを図８に示すインスタンスＩＤ管理テーブル２１ｃに登録する（Ｓ７：インスタンス登録機能）。
【００５０】
従って、以上のようなインスタンスの生成処理では、あるクラスのインスタンス生成指示に基づき、継承関係管理テーブル２１ａからあるクラスが継承されているテーブルを検索し、この検索によって取得されたテーブルのクラスに対してインスタンスを生成するが、これら生成されたインスタンスにはすべて同一のインスタンスＩＤを設定することにより、複数のテーブルのインスタンスを同一のインスタンスと見なすことが可能となる。これによって、同じインスタンスＩＤをもつインスタンスは同一インスタンスとみなすことができ、ＲＤＢ上でＯＲＤＢの継承関係のインスタンスと同じ機能を果たすことができる。
【００５１】
（ｂ）  インスタンスの検索について（図１７参照）
インスタンスの検索処理は、データ入力手段１からクラスＢのインスタンスの検索を指示すると（Ｓ１１）、データ処理本体部５，管理システム１２は、クラスＢのインスタンスはヒットされたか，つまり検索されたかを否かを判断し（Ｓ１２）、検索された場合にはその検索されたクラスＢのインスタンスからインスタンスＩＤを取出し、このインスタンスＩＤに基づいて図８に示すインスタンスＩＤ管理テーブル２１ｃを検索し、クラスＢと同じインスタンスＩＤを持つ他のクラスがあるか否かを調べる（Ｓ１３，Ｓ１４）。他のクラスがあれば、当該インスタンスＩＤ管理テーブル２１ｃから新たに取出した他のクラスのインスタンスＩＤをキーにクラスＡを検索し、ヒットしたインスタンスの属性値を取得する（Ｓ１５）。同じくクラスＢでヒットしたインスタンスの属性値を取得する（Ｓ１６）。
【００５２】
従って、以上のようなインスタンスの検索処理によれば、承継関係のインスタンスの下位テーブルを指定して検索を指示すると、その指定されたテーブルのインスタンスを検索し、ヒットしたインスタンスのインスタンスＩＤをキーとし、図８に示すインスタンスＩＤ管理テーブル２１ｃを検索する。そして、ヒットしたインスタンスのインスタンスＩＤとテーブル名とを取得することにより、継承関係にある全てのテーブル名とインスタンスＩＤとを取得でき、継承関係にある全てのテーブルのインスタンスを取得できる。これによって、ＯＲＤＢにおいて下位クラスを指定し検索した場合、承継の上位クラスの情報も取得できることと同じ効果を得ることができる。
【００５３】
（ｃ）  インスタンスの削除について（図１８参照）
インスタンスの削除処理は、データ入力手段１からインスタンスＩＤを指定し、クラスＢのインスタンスの削除を指示する（Ｓ２１）。データ処理本体部５，管理システム１２は、指定されたインスタンスＩＤのクラス名Ｂを図８のインスタンスＩＤ管理テーブル２１ｃから検索する（Ｓ２２）。
【００５４】
ここで、インスタンスＩＤのクラス名Ｂが検索されたか否かを判断し（Ｓ２３）、該当クラス名Ｂが検索された場合、ＢのインスタンスのクラスＣに対する属性に値が設定されているかを確認する（Ｓ２４）。クラスＣの属性に値が設定されている場合には、クラスＢとクラスＣの中間インスタンス管理テーブル２１ｄの対象インスタンスを削除する（Ｓ２５，Ｓ２６）。
【００５５】
同様に、ＢのインスタンスのクラスＤに対する属性に値が設定されているかを確認する（Ｓ２７）。クラスＤの属性に値が設定されている場合には、クラスＢとクラスＤの中間インスタンス管理テーブル２１ｄの対象インスタンスを削除する（Ｓ２８，Ｓ２９）。
【００５６】
しかる後、検索されたインスタンスＩＤからインスタンスＩＤとクラス名を取得し（Ｓ３０）、対象クラスのインスタンスを削除する。さらに、図８に示すインスタンスＩＤ管理テーブル２１ｃから対応するクラスＡ,Ｂのインスタンスを削除する（Ｓ３１）。
【００５７】
従って、以上のように実施の形態によれば、インスタンスＩＤのみを指定しインスタンスの削除指示を行うと、指定されたインスタンスＩＤをキーとし、図８に示すインスタンスＩＤ管理テーブル２１ｃを検索する。この検索されたインスタンスからテーブル名を取得する。このとき、承継関係にあるすべてのテーブル名を取得できる。そして、この取得したテーブルにHas−a属性がある場合、このHas−a属性に値が設定されているか否かを確認し、値が設定されている場合には中間インスタンス管理テーブル２１ｄのインスタンスを削除する。承継関係管理テーブル２１ａから取得したテーブルをインスタンスＩＤをキーとして検索し、この検索されたインスタンスを削除する。これによりインスタンスＩＤを指定して削除した場合、承継関係にある全てのテーブルのインスタンスの削除とHas−a関係で接続されるインスタンスの切り離しを行うことから、ＯＲＤＢの削除と同じ効果が得られる。
【００５８】
よって、インスタンスＩＤ管理テーブル２１ｃにアクセスすることにより、指定したインスタンスＩＤの他に継承関係のインスタンスを削除できる。
【００５９】
（４）  インスタンスの接続について（図１９参照）
データ入力手段１から接続すべきクラスＢとクラスＣのインスタンスＩＤを指定し、インスタンスの接続を指示すると（Ｓ４１）、データ処理本体部５は、図６に示すHas−a関係管理テーブル２１ｂからクラスＢとクラスＣとがHas−a関係にあるか否かを調べる（Ｓ４２）。ここで、Has−a関係にあれば（Ｓ４３）、クラスＣのインスタンスＩＤをクラスＢのインスタンスの対象属性の値とし（Ｓ４４）、ＢとＣとの中間インスタンス管理テーブル２１ｄに設定する（Ｓ４５）。
【００６０】
さらに、クラスＣのクラスＢに対する親ポインタ属性に中間インスタンス管理テーブル２１ｄのインスタンスＩＤを設定する（Ｓ４６）。
【００６１】
従って、以上のような実施の形態によれば、２つのテーブルと２つのインスタンスＩＤとを指定し接続指示を行うと、図６に示すHas−a関係管理テーブル２１ｂを検索し、２つのテーブルがHas−a関係にあるかを確認する。Has−a関係にあれば、親インスタンスの対象属性に子インスタンスのインスタンスＩＤを設定し、図１１に示す中間インスタンス管理テーブル２１ｄに親と子のインスタンスを登録し、子インスタンスの親ポインタ属性に中間インスタンス管理テーブル２１ｄのインスタンスＩＤを登録する。これにより、ＯＲＤＢのインスタンスの接続と同じ効果を得ることができる。
【００６２】
よって、このインスタンスの接続処理は、Has−a関係管理テーブル２１ｂにアクセスすることにより、指定されたクラスがHas−a関係に有ることが分かり、インスタンスの接続を実行できる。
【００６３】
（５）  集合型インスタンスの接続について（図２０参照）
データ入力手段１から接続すべきクラスＢとクラスＤとのインスタンスＩＤを指定し、インスタンスの接続を指示すると（Ｓ５１）、データ処理本体部５は、図６に示すHas−a関係管理テーブル２１ｂからクラスＢとクラスＤとが集合型のHas−a関係にあるか否かを調べる（Ｓ５２）。ここで、Has−a関係にあれば（Ｓ５３）、クラスＤのインスタンスＩＤをクラスＢのインスタンスの対象属性の値とし（Ｓ５４）、ＢとＤとの中間インスタンス管理テーブル２１ｄに設定する（Ｓ５５）。
【００６４】
さらに、クラスＤのクラスＢに対する親ポインタ属性に中間インスタンス管理テーブル２１ｄのインスタンスＩＤを設定する（Ｓ４６）。
【００６５】
従って、この実施の形態によれば、２つのテーブルと２つのインスタンスＩＤとを指定し接続指示を行うと、図６に示すHas−a関係管理テーブル２１ｂを検索し、２つのテーブルがHas−a関係にあるかを確認する。Has−a関係にあれば、中間インスタンス管理テーブル２１ｄに親テーブルと子テーブルのインスタンスＩＤを登録し、親テーブルの属性と子テーブルの親ポインタ属性に中間インスタンス管理テーブル２１ｄのインスタンスＩＤを登録する。新たに親インスタンスＩＤに接続したい場合、同一の中間インスタンス管理テーブル２１ｄにインスタンスＩＤを登録することにより、１つのインスタンスに複数のインスタンスが接続されるように見せることが出来る。これにより、ＯＲＤＢの集合型インスタンスの接続と同じ効果が得られる。つまり、集合型インスタンスの接続処理は、Has−a関係管理テーブル２１ｂと中間インスタンス管理テーブル２１ｄとを用いて、集合型インスタンスの接続を実行できる。
【００６６】
（６）  集合型インスタンスの検索について（図２１参照）
集合型インスタンスの検索処理は、データ入力手段１からクラスＢのインスタンスＩＤを指定し、集合型Has−aクラスのインスタンスの検索を指示すると（Ｓ６１）、データ処理本体部５は、クラスＢのインスタンスのクラスＤに対する属性に値が設定されているかを調べる（Ｓ６２）。ここで、値が設定されていれば（Ｓ６３）、クラスＢとクラスＤとの中間クラスを指定されたインスタンスＩＤをキーに検索する（Ｓ６４）。中間クラスのインスタンスが検索された場合（Ｓ６５）、検索された中間クラスのインスタンスからクラスＤのインスタンスＩＤを取得するとともに、この取得された中間インスタンス管理テーブル２１ｄのインスタンスＩＤをキーにクラスＤを調べる（Ｓ６６，Ｓ６７）。クラスＤのインスタンスが検索された場合（Ｓ６８）、当該クラスＤのインスタンスの属性値を取得する（Ｓ６９）。
【００６７】
従って、以上のような実施の形態によれば、指定されたインスタンスの集合型属性に値が設定されているかどうかを確認する。設定されていない場合には接続されていないので、ここで終了する。設定されている場合には、設定されている値をキーに中間インスタンス管理テーブル２１ｄを検索する。このとき、中間インスタンス管理テーブル２１ｄの名前は、命名規則によって管理テーブルアクセスすることなく指定できる。中間インスタンス管理テーブル２１ｄから検索されたインスタンスから子インスタンスＩＤを取得し、子テーブルを検索し、接続先のインスタンスを取得できる。これにより、ＯＲＤＢの集合型インスタンスの検索と同じ結果が得られる。このとき、インスタンスＩＤ管理テーブル２１ｃはデータベース上で１つではなく、Has−a関係ごとに１つずつもっているので、検索性能にそれほど影響しない。よって、このインスタンス検索処理にあっては、中間インスタンス管理テーブル２１ｄを検索することにより、インスタンスに接続された複数のインスタンスを検索できる。
【００６８】
（７）  親インスタンスの検索について（図２２参照）
親インスタンスの検索処理は、データ入力手段１からクラスＣのインスタンスＩＤを指定し、親インスタンスの検索を指示すると（Ｓ７１）、データ処理本体部５は、クラスＣのインスタンスの親ポインタに値が設定されているかを調べる（Ｓ７２）。ここで、値が設定されている場合（Ｓ７３）、クラスＢとクラスＤとの中間クラスを指定されたインスタンスＩＤをキーに検索する（Ｓ７４）。中間クラスのインスタンスが検索された場合（Ｓ７５）、検索された中間クラスのインスタンスから親テーブルのインスタンスＩＤを取得するとともに、この取得された中間インスタンス管理テーブル２１ｄのインスタンスＩＤをキーにクラスＢを調べる（Ｓ７６，Ｓ７７）。クラスＢのインスタンスが検索された場合（Ｓ７８）、その検索されたクラスＢのインスタンスの属性値を取得する（Ｓ７９）。
【００６９】
従って、以上のような実施の形態によれば、指定したインスタンスの親インスタンスを検索する場合、通常ならば承継関係管理テーブル２１ａやHas−a関係管理テーブル２１ｂを検索することによりデータ構造を確認した後、指定されたインスタンスＩＤをキーに各テーブルを検索する必要があるが、図１２にあるように親ポインタ属性を設けることにより、その属性値に値が設定されているか否かから判断する。親ポインタ属性がない場合は、Has−a関係管理テーブル２１ｂなどを検索し、対象テーブルを検索する必要があるので、大幅な性能劣化が考えられる。一方、親ポインタに値が設定されている場合、親ポインタ属性名から中間インスタンス管理テーブル１２ｄを特定でき、接続されている親のインスタンスを探すことが容易となる。
【００７０】
なお、本発明はその要旨を逸脱しない範囲で種々変形して実施できる。
【００７１】
【発明の効果】
以上説明したように本発明によれば、ＲＤＢ上にオブジェクト指向的な構造をもたせてＯＲＤＢ的に使用でき、またＲＤＢにオブジェクト指向的な構造をもたせつつ性能劣化を回避することができるＲＤＢシステムを提供できる。
【図面の簡単な説明】
【図１】  本発明に係るＲＤＢシステムの一実施の形態を示す構成図。
【図２】  ＤＢ管理システムを用いた本発明に係るＲＤＢシステムの他の実施形態を示す構成図。
【図３】  ＯＲＤＢの構造によってクラスを宣言している図。
【図４】  承継関係管理テーブルのデータ配列図。
【図５】  ＯＲＤＢの構造によってクラスを宣言している図。
【図６】  Has−a関係管理テーブルのデータ配列図。
【図７】  各クラスに対するインスタンスＩＤを生成するための説明図。
【図８】  インスタンスＩＤ管理テーブルのデータ配列図。
【図９】  １つの属性に複数のインスタンスのデータ配列図。
【図１０】  中間インスタンス管理テーブルの説明図。
【図１１】  命名規則を付けた中間インスタンス管理テーブルのデータ配列図。
【図１２】  親ポインタ属性を説明する図。
【図１３】  インスタンス相互の関係を示す図。
【図１４】  親ポインタ属性有りの場合と無しの場合とにおける必要テーブルの説明図。
【図１５】  動作説明のためのサンプル図。
【図１６】  インスタンスの生成処理を説明するフローチャート。
【図１７】  インスタンスの検索処理を説明するフローチャート。
【図１８】  インスタンスの削除処理を説明するフローチャート。
【図１９】  インスタンスの接続処理を説明するフローチャート。
【図２０】  集合型インスタンスの接続処理を説明するフローチャート。
【図２１】  集合型インスタンスの検索処理を説明するフローチャート。
【図２２】  親インスタンスの検索処理を説明するフローチャート。
【図２３】  従来のＯＲＤＢシステムの構成図。
【図２４】  従来のＲＤＢシステムの構成図。
【符号の説明】
３…ＲＤＢ
５，１１…データ処理本体部
６…記録媒体
１２…管理システム
２１…管理テーブル
２１ａ…継承関係管理テーブル
２１ｂ…Has−a関係管理テーブル
２１ｃ…インスタンスＩＤ管理テーブル
２１ｄ…中間インスタンス管理テーブル
【図１】
0003895898.tif 000002
【図２】
0003895898.tif 000003
【図３】
0003895898.tif 000004
【図４】
0003895898.tif 000005
【図５】
0003895898.tif 000006
【図６】
0003895898.tif 000007
【図７】
0003895898.tif 000008
【図８】
0003895898.tif 000009
【図９】
0003895898.tif 000010
【図１０】
0003895898.tif 000011
【図１１】
0003895898.tif 000012
【図１２】
0003895898.tif 000013
【図１３】
0003895898.tif 000014
【図１４】
0003895898.tif 000015
【図１５】
0003895898.tif 000016
【図１６】
0003895898.tif 000017
【図１７】
0003895898.tif 000018
【図１８】
0003895898.tif 000019
【図１９】
0003895898.tif 000020
【図２０】
0003895898.tif 000021
【図２１】
0003895898.tif 000022
【図２２】
0003895898.tif 000023
【図２３】
0003895898.tif 000024
【図２４】
0003895898.tif 000025