JP3895898B2 - Rdbシステム - Google Patents
Rdbシステム Download PDFInfo
- Publication number
- JP3895898B2 JP3895898B2 JP2000029310A JP2000029310A JP3895898B2 JP 3895898 B2 JP3895898 B2 JP 3895898B2 JP 2000029310 A JP2000029310 A JP 2000029310A JP 2000029310 A JP2000029310 A JP 2000029310A JP 3895898 B2 JP3895898 B2 JP 3895898B2
- Authority
- JP
- Japan
- Prior art keywords
- instance
- class
- management table
- rdb
- relationship
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【発明に属する技術分野】
本発明は、RDB(リレーショナルデータベース)をオブジェクト指向的に使用するRDBシステムに関する。
【0002】
【従来の技術】
従来、各ユーザにおいては、図23に示すような管理システム51からCPU内蔵のデータ処理本体部52に対し、OSを初め、ORDBに関する制御情報を送出し、オブジェクト指向であるORDB53を制御するORDBシステムと、図24に示すようにRDBソフトをもつCPU内蔵のデータ処理本体部54がRDB55を制御するRDBシステムとが用いられているが、市場の普及状況を見る限り、RDBシステムが多く出回っている。なお、管理システム51を持たないデータ処理本体部52とORDB53とから成るORDBシステムも用いられている。
【0003】
そこで、ORDBをもつユーザの見地から考えたとき、一般ユーザによるRDBへのアクセス頻度が高いことから、管理システム51ないしデータ処理本体部52としては、ORDBに関する制御情報等を用いてRDBを使用したいという要望が多い。
【0004】
そこで、以上のような要望を満たすために、管理システム51ないしデータ処理本体部52は、ORDBシステムを全面的にRDB用ソフトやRDB54に交換することが考えられるが、それではシステムの稼動を中止させたり、プログラム作成作業に多くの時間を要したり、さらにコスト増となる問題がある。
【0005】
そこで、一般的な方法としては、新たに管理テーブルを設け、ORDB用ソフトによる制御情報に基づいて管理テーブルがRDB用に変換し、オブジェクト指向的に構造をもたせてRDBを使用することが考えられる。
【0006】
【発明が解決しようとする課題】
ところで、以上述べたように新たに管理テーブルを設け、ORDBシステムを用いてRDBを使用することは可能であるが、これはあくまでも1つの考え方であって、実際にはオブジェクト指向的な構造の場合には継承関係やHas−a関係の検索など、非常に変換上の難しい問題があり、また性能劣化という問題が出てくる。
【0007】
本発明は上記事情に鑑みてなされたもので、RDB上にオブジェクト指向的な構造をもたせてORDB的に使用し、また極力性能劣化を起こさずにRDBにオブジェクト指向的な構造をもたせるRDBシステムを提供することにある。
【0009】
【課題を解決するための手段】
(1) 上記課題を解決するために、本発明は、RDBと当該RDBに対して処理を実行するデータ処理本体部とを有するRDBシステムにおいて、前記RDB上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むようなHas−a関係を規定するHas−a関係管理テーブルと、前記各クラスに基づく実態を表すインスタンスを一意に発行するインスタンスIDを管理するインスタンスID管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDと子となる複数のインスタンスIDとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記RDBから発行される一意の番号であるインスタンスIDをインスタンスID管理テーブルに生成し、また、前記データ処理本体部は、2つのクラスのインスタンスID指定のもとにインスタンス接続処理の指示を受けたとき、前記 Has − a 関係管理テーブルから前記2つのクラスが集合型の Has − a 関係にあれば、中間インスタンス管理テーブルに両インスタンスIDの接続関係を設定し、また、前記データ処理本体部は、あるクラスのインスタンスID指定のもとに前記集合型の Has − a クラスのインスタンス検索指示を受けたとき、前記中間インスタンス管理テーブルに前記あるクラスと接続関係を有する属性値が設定されていれば、これら両クラスの中間クラスのインスタンスIDをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから前記接続関係にあるクラス及びインスタンスを検索するRDBシステムである。
【0011】
(2) また、本発明は、RDBと当該RDBに対して処理を実行するデータ処理本体部とを有するRDBシステムにおいて、前記RDB上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むような Has − a 関係を規定する Has − a 関係管理テーブルと、前記各クラスの実態を表すインスタンスを一意に発行するインスタンスIDを管理するインスタンスID管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDと子となる複数のインスタンスIDとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDに対し、子となるインスタンスIDが前記親となるインスタンスID及び属性を規定する親ポインタとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記RDBから発行される一意の番号であるインスタンスIDをインスタンスID管理テーブルに生成し、また、前記データ処理本体部は、あるクラスのインスタンスID指定のもとに前記親インスタンスの検索指示を受けたとき、前記あるクラスのインスタンスの親ポインタに属性値が設定されていれば、その親ポインタの属性値から前記中間インスタンス管理テーブルを特定し、あるクラス及び接続関係をもつクラスの中間クラスのインスタンスIDをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから親インスタンスを検索するRDBシステムである。
【0012】
以上のようにコンピュータが記録媒体に記録されるインスタンス生成用プログラムを読取って実行すれば、ORDBの継承関係のインスタンスを容易に生成可能となる。
【0013】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【0014】
図1は本発明に係るRDBシステムの一実施の形態を示すハードウエア構成図である。
【0015】
このRDBシステムは、所要とする制御指示を入力するキーボード,マウス等のデータ入力手段1と、ORDBに関する処理プログラム,その他必要な固定データ等を記憶するプログラム記憶手段2と、RDB3と、データ入力手段1からの制御指示を受け、ORDB処理用プログラムに従ってRDB3に対して必要な処理を実行し、その処理結果を表示手段4に表示するCPUで構成されたデータ処理本体部5と、後記するインスタンスを生成するためのインスタンス生成用プログラムを記録する記録媒体6とで構成されている。
【0016】
なお、これらプログラム記憶手段2および記録媒体6は別体として説明したが、同一の記憶媒体に格納する構成であってもよい。
【0017】
このプログラム記憶手段2および記憶媒体6としては、一般的には磁気ディスクやCD−ROMが用いられるが、それ以外にも例えば磁気テープ、DVD−ROM、フロッピーディスク、MO、CD−R、メモリカードなどを用いてもよい。
【0018】
前記RDB3上には後記するようにデータ処理本体部5からORDBに関する制御情報を受けて当該RDBを使用するためのオブジェクト指向的な構造をもつ変換用テーブル21が設けられている。
【0019】
図2はDB管理システムを用いた場合のRDBシステムの他の実施形態を示すハードウエア構成図である。なお、同図において図1と同一部分には同一符号を付してその詳しい説明を省略する。
【0020】
このDB管理システムは、RDB3およびCPUで構成されたデータ処理本体部5からなるRDBシステムに対し、ORDBに関する制御情報を送出し、特にRDB3をオブジェクト指向的に使用する管理システム12が設けられている。この管理システム12には後記するオブジェクト指向的な構造をもつ変換用テーブル21が搭載されている。
【0021】
以上のようにRDB3をオブジェクト指向的な構造を持たせるに際し、図1および図2に示す種々のシステムにより実現可能である。
【0022】
ところで、以上のような各種のシステムにおいて、ORDBに関する制御情報を用いてRDBを使用するに際し、ORDBとRDBには次のような相違点が挙げられる。
【0023】
(1) 継承関係
(2) Has−a関係
(3) インスタンスIDの管理
(4) 集合型インスタンスの管理
(5) 親ポインタ属性
従って、ORDBの制御情報を用いて、RDBをORDBの構造に見せかけるためには、以上の相違点を考慮した変換用テーブル21を作成する必要がある。
【0024】
(1) 継承関係について
継承関係とは、他のクラスの属性を自分のクラスの属性として扱えることをいう。今、図3に示すようにORDBの構造でクラスを宣言している場合、子クラスBは親クラスAの属性を持つことを意味し、換言すれば、子クラスBはより大きい親クラスAの属性を受け継いだもの,つまり継承関係にあると考えることができる。
【0025】
この図3はORDBの特徴であるが、RDB3には存在しない機能である。そこで、ORDBシステムが図4の上段のようなクラスを宣言している場合、RDB3、データ処理本体部5または管理システム12などには、下段に示す継承関係管理テーブル21aを作成し用意する。
【0026】
この図4に示す下段の継承関係管理テーブル21aはクラスAとクラスBとの間の継承関係を表している。つまり、クラスAはクラスBと継承関係にあるが、この継承関係にあるクラスBは「子クラス(1)」であること、またクラスBはクラスAと継承関係にあり、この継承関係にあるクラスAは「親クラス(0)」であることを表している。従って、データ処理本体部5がデータ構造を見る場合、継承関係管理テーブル21aをアクセスし、継承関係であることを確認することにより、RDB3上で継承関係を実現することが可能となる。
【0027】
(2) Has−a関係について
このHas−a関係とは、クラスが属性として他のクラスを持つことをいう。今、ORDBシステムが図5に示すようなクラスを宣言している場合、クラスBはクラスAの属性を持つことができる。これは、クラスBは属性B2にてクラスAという要素を含むことを意味する。
【0028】
この図5はORDBの特徴であるが、RDBには存在しない機能である。そこで、図6の上段のようにクラスを宣言している場合、RDB3,データ処理本体部5または管理システム12上に図6の下段に示すHas−a関係管理テーブル21bを作成し用意する。なお、このHas−a関係管理テーブル21bはクラスBのみについてHas−a関係を記述しているが、他の多数のクラス例えばクラスAについても記述されている。
【0029】
この図6の下段テーブル21bでは、クラス名Bは属性B2としてクラスAを持っていることを表している。従って、データ処理本体部5がデータ構造を見る場合、Has−a関係管理テーブル21bをアクセスし、Has−a関係であることを確認することにより、RDB3上でHas−a関係を実現することが可能である。
【0030】
(3) インスタンスIDの管理について
このインスタンスとは、各クラスの中身ないし実態を意味し、クラスのより具体的な内容であると言える。通常,ORDBでは、生成したインスタンスをORDB上に一意の番号(インスタンスID)で管理する機能をもっているので、ORDBを用いたORDBシステムの場合には、インスタンスIDを用いて処理する場合があるので、RDB3を使用する場合には、インスタンスIDについても考慮する必要がある。
【0031】
ところで、RDB3上でインスタンスIDを管理する場合、RDB上の順番号発行機能を用いて、インスタンス生成時にRDB3上で一意の番号を発行するようにする。すなわち、図7左側に記述するORDBのクラステーブルに対し、この順番号発行機能により発行される番号は同図右側のように作成されるテーブルのMy−id属性に設定する。これにより、生成されたインスタンス毎にIDを割り当てることができる。
【0032】
しかし、図7の右側に示すテーブルだけでは、インスタンスIDだけの指定を受けて何らかの操作を行おうとした場合、どのクラスのインスタンスなのか判断することが難しい。
【0033】
そこで、図8に示すようなインスタンスID管理テーブル21cを作成し、発行された番号が何れのクラスに属するかが分かるようにする。つまり、発行されたインスタンスID「0000001」はAクラスであること、また継承関係で作成されるインスタンスについても、生成された各テーブルのインスタンスIDを例えば「0000002」のように同じIDとすることにより、同一のインスタンスと見なすようにする。
【0034】
(4) 集合型インスタンスの管理について
一般に、ORDBシステムにおいては、1つの属性に複数のインスタンスを関連付けできる機能をもっている。例えばある人が複数の車両を保有する場合、図9に示すようにある人AのインスタンスID「00001」に車AのインスタンスID「00011」と車BのインスタンスID「00012」とを関連付けされて管理することが可能となっている。
【0035】
一方、RDB3においては、属性に他クラスのインスタンスを設定することもできないし、1つの属性に複数の属性値も設定できないので、インスタンス間の関連付けもできない。
【0036】
ゆえに、ORDBに関する制御情報を用いて、RDB3を使用するに際し、インスタンス間を関連付けるために、既にORDBが所有する図9に示すインスタンスIDに対し、図10に示すような中間インスタンス管理テーブルを作成することにより、集合型インスタンスの管理を行う必要がある。
【0037】
ところで、以上のような場合、RDB上において1つの中間インスタンス管理テーブルだけを用いて、全てのインスタンスを管理することになり、インスタンスの検索や生成などの性能に影響が出てくる。
【0038】
そこで、図10に示すテーブルに代えて図11に示す命名規則「−親クラス−属性名」を付けた中間インスタンス管理テーブル12dを作成し、1つの管理テーブル12dにて1つの集合型構造の関係を規定することにより、インスタンスの分散および性能劣化を防ぐことができる。
【0039】
よって、以上のような中間インスタンス管理テーブル12dを用意すれば、RDB上で1つの属性に複数の属性を接続できる。
【0040】
従って、以上述べたような管理テーブル12a〜12dを用意することにより、RDB3上にORDBの構造を構築できる。
【0041】
(5) 親ポインタ属性について
この親ポインタ属性とは、インスタンスがどの属性に接続されているかを簡単に分かるようにするための属性をいう。この属性は、RDB3上にORDBのオブジェクト指向的な構造を構築する場合、必ずしも必要としないが、性能面を考慮した場合に必要となる。
【0042】
そこで、図12の上段左側の親テーブルAに対し、同じく上段右側の子テーブルBで属性の命名規則や接続される親テーブルと属性名とが分かるようにするためには、下段左側の記述に対し、下段右側に示すように作成する必要がある。すなわち、子テーブルBは、整数型の命名規則をもち、親テーブルAの属性AAをもつことを意味する。従って、下段左側の親テーブルAの属性AAの「integer」=Bを意味する。
【0043】
但し、集合属性でないHas−a属性の場合であっても、1つのインスタンスは複数のインスタンスに接続されているので、中間インスタンス管理テーブル12dを設け、管理する必要がある。インスタンス相互の関係は、図13に示すようになる。
【0044】
なお、親ポインタ属性が無い場合と有る場合とがあるが、その親ポインタ属性の有無に応じて図14に示す如くアクセスするテーブル数が異なる。親ポインタが無い場合には、どのテーブルに接続されているかHas−a関係管理テーブル(図6参照)でヒットした全ての親テーブルを検索する必要があるが、親ポインタ属性がある場合には、親ポインタ属性に値が設定されているか確認するだけで、どのテーブルに接続されているかが分かり、仮に接続されていても、親ポインタ属性の名前からテーブル名が検索でき、データ構造によっては無い場合に比べてテーブルへのアクセス数を大幅に減らすことができる。
【0045】
次に、インスタンス生成を含む各種の処理例について説明する。但し、各種の処理に際しては、該当処理用プログラムが図1および図2に示す記録媒体6に記録され、データ処理本体部5がそのプログラムを読取って必要な処理を実行することになる。
【0046】
なお、以下に述べる各種の処理は、図15に示すサンプル構造を用いた場合について説明する。
【0047】
(a) インスタンスの生成処理について(図16参照)
継承関係を含むインスタンスの生成処理は、データ入力手段1からクラスBを指定し、インスタンスの生成を指示すると、データ処理本体部5,管理システム12は、図4に示す継承関係管理テーブル21aをアクセスし、クラスBが継承されているテーブル21aの有無を調べ、継承関係を調べる(S1〜S3:クラス継承テーブル有無確認機能)。
【0048】
ステップS3において、継承関係が有れば、クラスAおよびクラスBに対するインスタンスを生成する。この生成されたクラスAとクラスBのインスタンスに対し、DBMS(データベース・マネジメント・システム)の順番号発行機能を用いて、クラスA,Bに同じインスタンス番号を一意に発行する(S4〜S6:インスタンス生成機能)。
【0049】
そして、生成されたインスタンスIDとクラス名とを図8に示すインスタンスID管理テーブル21cに登録する(S7:インスタンス登録機能)。
【0050】
従って、以上のようなインスタンスの生成処理では、あるクラスのインスタンス生成指示に基づき、継承関係管理テーブル21aからあるクラスが継承されているテーブルを検索し、この検索によって取得されたテーブルのクラスに対してインスタンスを生成するが、これら生成されたインスタンスにはすべて同一のインスタンスIDを設定することにより、複数のテーブルのインスタンスを同一のインスタンスと見なすことが可能となる。これによって、同じインスタンスIDをもつインスタンスは同一インスタンスとみなすことができ、RDB上でORDBの継承関係のインスタンスと同じ機能を果たすことができる。
【0051】
(b) インスタンスの検索について(図17参照)
インスタンスの検索処理は、データ入力手段1からクラスBのインスタンスの検索を指示すると(S11)、データ処理本体部5,管理システム12は、クラスBのインスタンスはヒットされたか,つまり検索されたかを否かを判断し(S12)、検索された場合にはその検索されたクラスBのインスタンスからインスタンスIDを取出し、このインスタンスIDに基づいて図8に示すインスタンスID管理テーブル21cを検索し、クラスBと同じインスタンスIDを持つ他のクラスがあるか否かを調べる(S13,S14)。他のクラスがあれば、当該インスタンスID管理テーブル21cから新たに取出した他のクラスのインスタンスIDをキーにクラスAを検索し、ヒットしたインスタンスの属性値を取得する(S15)。同じくクラスBでヒットしたインスタンスの属性値を取得する(S16)。
【0052】
従って、以上のようなインスタンスの検索処理によれば、承継関係のインスタンスの下位テーブルを指定して検索を指示すると、その指定されたテーブルのインスタンスを検索し、ヒットしたインスタンスのインスタンスIDをキーとし、図8に示すインスタンスID管理テーブル21cを検索する。そして、ヒットしたインスタンスのインスタンスIDとテーブル名とを取得することにより、継承関係にある全てのテーブル名とインスタンスIDとを取得でき、継承関係にある全てのテーブルのインスタンスを取得できる。これによって、ORDBにおいて下位クラスを指定し検索した場合、承継の上位クラスの情報も取得できることと同じ効果を得ることができる。
【0053】
(c) インスタンスの削除について(図18参照)
インスタンスの削除処理は、データ入力手段1からインスタンスIDを指定し、クラスBのインスタンスの削除を指示する(S21)。データ処理本体部5,管理システム12は、指定されたインスタンスIDのクラス名Bを図8のインスタンスID管理テーブル21cから検索する(S22)。
【0054】
ここで、インスタンスIDのクラス名Bが検索されたか否かを判断し(S23)、該当クラス名Bが検索された場合、BのインスタンスのクラスCに対する属性に値が設定されているかを確認する(S24)。クラスCの属性に値が設定されている場合には、クラスBとクラスCの中間インスタンス管理テーブル21dの対象インスタンスを削除する(S25,S26)。
【0055】
同様に、BのインスタンスのクラスDに対する属性に値が設定されているかを確認する(S27)。クラスDの属性に値が設定されている場合には、クラスBとクラスDの中間インスタンス管理テーブル21dの対象インスタンスを削除する(S28,S29)。
【0056】
しかる後、検索されたインスタンスIDからインスタンスIDとクラス名を取得し(S30)、対象クラスのインスタンスを削除する。さらに、図8に示すインスタンスID管理テーブル21cから対応するクラスA,Bのインスタンスを削除する(S31)。
【0057】
従って、以上のように実施の形態によれば、インスタンスIDのみを指定しインスタンスの削除指示を行うと、指定されたインスタンスIDをキーとし、図8に示すインスタンスID管理テーブル21cを検索する。この検索されたインスタンスからテーブル名を取得する。このとき、承継関係にあるすべてのテーブル名を取得できる。そして、この取得したテーブルにHas−a属性がある場合、このHas−a属性に値が設定されているか否かを確認し、値が設定されている場合には中間インスタンス管理テーブル21dのインスタンスを削除する。承継関係管理テーブル21aから取得したテーブルをインスタンスIDをキーとして検索し、この検索されたインスタンスを削除する。これによりインスタンスIDを指定して削除した場合、承継関係にある全てのテーブルのインスタンスの削除とHas−a関係で接続されるインスタンスの切り離しを行うことから、ORDBの削除と同じ効果が得られる。
【0058】
よって、インスタンスID管理テーブル21cにアクセスすることにより、指定したインスタンスIDの他に継承関係のインスタンスを削除できる。
【0059】
(4) インスタンスの接続について(図19参照)
データ入力手段1から接続すべきクラスBとクラスCのインスタンスIDを指定し、インスタンスの接続を指示すると(S41)、データ処理本体部5は、図6に示すHas−a関係管理テーブル21bからクラスBとクラスCとがHas−a関係にあるか否かを調べる(S42)。ここで、Has−a関係にあれば(S43)、クラスCのインスタンスIDをクラスBのインスタンスの対象属性の値とし(S44)、BとCとの中間インスタンス管理テーブル21dに設定する(S45)。
【0060】
さらに、クラスCのクラスBに対する親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを設定する(S46)。
【0061】
従って、以上のような実施の形態によれば、2つのテーブルと2つのインスタンスIDとを指定し接続指示を行うと、図6に示すHas−a関係管理テーブル21bを検索し、2つのテーブルがHas−a関係にあるかを確認する。Has−a関係にあれば、親インスタンスの対象属性に子インスタンスのインスタンスIDを設定し、図11に示す中間インスタンス管理テーブル21dに親と子のインスタンスを登録し、子インスタンスの親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを登録する。これにより、ORDBのインスタンスの接続と同じ効果を得ることができる。
【0062】
よって、このインスタンスの接続処理は、Has−a関係管理テーブル21bにアクセスすることにより、指定されたクラスがHas−a関係に有ることが分かり、インスタンスの接続を実行できる。
【0063】
(5) 集合型インスタンスの接続について(図20参照)
データ入力手段1から接続すべきクラスBとクラスDとのインスタンスIDを指定し、インスタンスの接続を指示すると(S51)、データ処理本体部5は、図6に示すHas−a関係管理テーブル21bからクラスBとクラスDとが集合型のHas−a関係にあるか否かを調べる(S52)。ここで、Has−a関係にあれば(S53)、クラスDのインスタンスIDをクラスBのインスタンスの対象属性の値とし(S54)、BとDとの中間インスタンス管理テーブル21dに設定する(S55)。
【0064】
さらに、クラスDのクラスBに対する親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを設定する(S46)。
【0065】
従って、この実施の形態によれば、2つのテーブルと2つのインスタンスIDとを指定し接続指示を行うと、図6に示すHas−a関係管理テーブル21bを検索し、2つのテーブルがHas−a関係にあるかを確認する。Has−a関係にあれば、中間インスタンス管理テーブル21dに親テーブルと子テーブルのインスタンスIDを登録し、親テーブルの属性と子テーブルの親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを登録する。新たに親インスタンスIDに接続したい場合、同一の中間インスタンス管理テーブル21dにインスタンスIDを登録することにより、1つのインスタンスに複数のインスタンスが接続されるように見せることが出来る。これにより、ORDBの集合型インスタンスの接続と同じ効果が得られる。つまり、集合型インスタンスの接続処理は、Has−a関係管理テーブル21bと中間インスタンス管理テーブル21dとを用いて、集合型インスタンスの接続を実行できる。
【0066】
(6) 集合型インスタンスの検索について(図21参照)
集合型インスタンスの検索処理は、データ入力手段1からクラスBのインスタンスIDを指定し、集合型Has−aクラスのインスタンスの検索を指示すると(S61)、データ処理本体部5は、クラスBのインスタンスのクラスDに対する属性に値が設定されているかを調べる(S62)。ここで、値が設定されていれば(S63)、クラスBとクラスDとの中間クラスを指定されたインスタンスIDをキーに検索する(S64)。中間クラスのインスタンスが検索された場合(S65)、検索された中間クラスのインスタンスからクラスDのインスタンスIDを取得するとともに、この取得された中間インスタンス管理テーブル21dのインスタンスIDをキーにクラスDを調べる(S66,S67)。クラスDのインスタンスが検索された場合(S68)、当該クラスDのインスタンスの属性値を取得する(S69)。
【0067】
従って、以上のような実施の形態によれば、指定されたインスタンスの集合型属性に値が設定されているかどうかを確認する。設定されていない場合には接続されていないので、ここで終了する。設定されている場合には、設定されている値をキーに中間インスタンス管理テーブル21dを検索する。このとき、中間インスタンス管理テーブル21dの名前は、命名規則によって管理テーブルアクセスすることなく指定できる。中間インスタンス管理テーブル21dから検索されたインスタンスから子インスタンスIDを取得し、子テーブルを検索し、接続先のインスタンスを取得できる。これにより、ORDBの集合型インスタンスの検索と同じ結果が得られる。このとき、インスタンスID管理テーブル21cはデータベース上で1つではなく、Has−a関係ごとに1つずつもっているので、検索性能にそれほど影響しない。よって、このインスタンス検索処理にあっては、中間インスタンス管理テーブル21dを検索することにより、インスタンスに接続された複数のインスタンスを検索できる。
【0068】
(7) 親インスタンスの検索について(図22参照)
親インスタンスの検索処理は、データ入力手段1からクラスCのインスタンスIDを指定し、親インスタンスの検索を指示すると(S71)、データ処理本体部5は、クラスCのインスタンスの親ポインタに値が設定されているかを調べる(S72)。ここで、値が設定されている場合(S73)、クラスBとクラスDとの中間クラスを指定されたインスタンスIDをキーに検索する(S74)。中間クラスのインスタンスが検索された場合(S75)、検索された中間クラスのインスタンスから親テーブルのインスタンスIDを取得するとともに、この取得された中間インスタンス管理テーブル21dのインスタンスIDをキーにクラスBを調べる(S76,S77)。クラスBのインスタンスが検索された場合(S78)、その検索されたクラスBのインスタンスの属性値を取得する(S79)。
【0069】
従って、以上のような実施の形態によれば、指定したインスタンスの親インスタンスを検索する場合、通常ならば承継関係管理テーブル21aやHas−a関係管理テーブル21bを検索することによりデータ構造を確認した後、指定されたインスタンスIDをキーに各テーブルを検索する必要があるが、図12にあるように親ポインタ属性を設けることにより、その属性値に値が設定されているか否かから判断する。親ポインタ属性がない場合は、Has−a関係管理テーブル21bなどを検索し、対象テーブルを検索する必要があるので、大幅な性能劣化が考えられる。一方、親ポインタに値が設定されている場合、親ポインタ属性名から中間インスタンス管理テーブル12dを特定でき、接続されている親のインスタンスを探すことが容易となる。
【0070】
なお、本発明はその要旨を逸脱しない範囲で種々変形して実施できる。
【0071】
【発明の効果】
以上説明したように本発明によれば、RDB上にオブジェクト指向的な構造をもたせてORDB的に使用でき、またRDBにオブジェクト指向的な構造をもたせつつ性能劣化を回避することができるRDBシステムを提供できる。
【図面の簡単な説明】
【図1】 本発明に係るRDBシステムの一実施の形態を示す構成図。
【図2】 DB管理システムを用いた本発明に係るRDBシステムの他の実施形態を示す構成図。
【図3】 ORDBの構造によってクラスを宣言している図。
【図4】 承継関係管理テーブルのデータ配列図。
【図5】 ORDBの構造によってクラスを宣言している図。
【図6】 Has−a関係管理テーブルのデータ配列図。
【図7】 各クラスに対するインスタンスIDを生成するための説明図。
【図8】 インスタンスID管理テーブルのデータ配列図。
【図9】 1つの属性に複数のインスタンスのデータ配列図。
【図10】 中間インスタンス管理テーブルの説明図。
【図11】 命名規則を付けた中間インスタンス管理テーブルのデータ配列図。
【図12】 親ポインタ属性を説明する図。
【図13】 インスタンス相互の関係を示す図。
【図14】 親ポインタ属性有りの場合と無しの場合とにおける必要テーブルの説明図。
【図15】 動作説明のためのサンプル図。
【図16】 インスタンスの生成処理を説明するフローチャート。
【図17】 インスタンスの検索処理を説明するフローチャート。
【図18】 インスタンスの削除処理を説明するフローチャート。
【図19】 インスタンスの接続処理を説明するフローチャート。
【図20】 集合型インスタンスの接続処理を説明するフローチャート。
【図21】 集合型インスタンスの検索処理を説明するフローチャート。
【図22】 親インスタンスの検索処理を説明するフローチャート。
【図23】 従来のORDBシステムの構成図。
【図24】 従来のRDBシステムの構成図。
【符号の説明】
3…RDB
5,11…データ処理本体部
6…記録媒体
12…管理システム
21…管理テーブル
21a…継承関係管理テーブル
21b…Has−a関係管理テーブル
21c…インスタンスID管理テーブル
21d…中間インスタンス管理テーブル
【発明に属する技術分野】
本発明は、RDB(リレーショナルデータベース)をオブジェクト指向的に使用するRDBシステムに関する。
【0002】
【従来の技術】
従来、各ユーザにおいては、図23に示すような管理システム51からCPU内蔵のデータ処理本体部52に対し、OSを初め、ORDBに関する制御情報を送出し、オブジェクト指向であるORDB53を制御するORDBシステムと、図24に示すようにRDBソフトをもつCPU内蔵のデータ処理本体部54がRDB55を制御するRDBシステムとが用いられているが、市場の普及状況を見る限り、RDBシステムが多く出回っている。なお、管理システム51を持たないデータ処理本体部52とORDB53とから成るORDBシステムも用いられている。
【0003】
そこで、ORDBをもつユーザの見地から考えたとき、一般ユーザによるRDBへのアクセス頻度が高いことから、管理システム51ないしデータ処理本体部52としては、ORDBに関する制御情報等を用いてRDBを使用したいという要望が多い。
【0004】
そこで、以上のような要望を満たすために、管理システム51ないしデータ処理本体部52は、ORDBシステムを全面的にRDB用ソフトやRDB54に交換することが考えられるが、それではシステムの稼動を中止させたり、プログラム作成作業に多くの時間を要したり、さらにコスト増となる問題がある。
【0005】
そこで、一般的な方法としては、新たに管理テーブルを設け、ORDB用ソフトによる制御情報に基づいて管理テーブルがRDB用に変換し、オブジェクト指向的に構造をもたせてRDBを使用することが考えられる。
【0006】
【発明が解決しようとする課題】
ところで、以上述べたように新たに管理テーブルを設け、ORDBシステムを用いてRDBを使用することは可能であるが、これはあくまでも1つの考え方であって、実際にはオブジェクト指向的な構造の場合には継承関係やHas−a関係の検索など、非常に変換上の難しい問題があり、また性能劣化という問題が出てくる。
【0007】
本発明は上記事情に鑑みてなされたもので、RDB上にオブジェクト指向的な構造をもたせてORDB的に使用し、また極力性能劣化を起こさずにRDBにオブジェクト指向的な構造をもたせるRDBシステムを提供することにある。
【0009】
【課題を解決するための手段】
(1) 上記課題を解決するために、本発明は、RDBと当該RDBに対して処理を実行するデータ処理本体部とを有するRDBシステムにおいて、前記RDB上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むようなHas−a関係を規定するHas−a関係管理テーブルと、前記各クラスに基づく実態を表すインスタンスを一意に発行するインスタンスIDを管理するインスタンスID管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDと子となる複数のインスタンスIDとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記RDBから発行される一意の番号であるインスタンスIDをインスタンスID管理テーブルに生成し、また、前記データ処理本体部は、2つのクラスのインスタンスID指定のもとにインスタンス接続処理の指示を受けたとき、前記 Has − a 関係管理テーブルから前記2つのクラスが集合型の Has − a 関係にあれば、中間インスタンス管理テーブルに両インスタンスIDの接続関係を設定し、また、前記データ処理本体部は、あるクラスのインスタンスID指定のもとに前記集合型の Has − a クラスのインスタンス検索指示を受けたとき、前記中間インスタンス管理テーブルに前記あるクラスと接続関係を有する属性値が設定されていれば、これら両クラスの中間クラスのインスタンスIDをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから前記接続関係にあるクラス及びインスタンスを検索するRDBシステムである。
【0011】
(2) また、本発明は、RDBと当該RDBに対して処理を実行するデータ処理本体部とを有するRDBシステムにおいて、前記RDB上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むような Has − a 関係を規定する Has − a 関係管理テーブルと、前記各クラスの実態を表すインスタンスを一意に発行するインスタンスIDを管理するインスタンスID管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDと子となる複数のインスタンスIDとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDに対し、子となるインスタンスIDが前記親となるインスタンスID及び属性を規定する親ポインタとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記RDBから発行される一意の番号であるインスタンスIDをインスタンスID管理テーブルに生成し、また、前記データ処理本体部は、あるクラスのインスタンスID指定のもとに前記親インスタンスの検索指示を受けたとき、前記あるクラスのインスタンスの親ポインタに属性値が設定されていれば、その親ポインタの属性値から前記中間インスタンス管理テーブルを特定し、あるクラス及び接続関係をもつクラスの中間クラスのインスタンスIDをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから親インスタンスを検索するRDBシステムである。
【0012】
以上のようにコンピュータが記録媒体に記録されるインスタンス生成用プログラムを読取って実行すれば、ORDBの継承関係のインスタンスを容易に生成可能となる。
【0013】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【0014】
図1は本発明に係るRDBシステムの一実施の形態を示すハードウエア構成図である。
【0015】
このRDBシステムは、所要とする制御指示を入力するキーボード,マウス等のデータ入力手段1と、ORDBに関する処理プログラム,その他必要な固定データ等を記憶するプログラム記憶手段2と、RDB3と、データ入力手段1からの制御指示を受け、ORDB処理用プログラムに従ってRDB3に対して必要な処理を実行し、その処理結果を表示手段4に表示するCPUで構成されたデータ処理本体部5と、後記するインスタンスを生成するためのインスタンス生成用プログラムを記録する記録媒体6とで構成されている。
【0016】
なお、これらプログラム記憶手段2および記録媒体6は別体として説明したが、同一の記憶媒体に格納する構成であってもよい。
【0017】
このプログラム記憶手段2および記憶媒体6としては、一般的には磁気ディスクやCD−ROMが用いられるが、それ以外にも例えば磁気テープ、DVD−ROM、フロッピーディスク、MO、CD−R、メモリカードなどを用いてもよい。
【0018】
前記RDB3上には後記するようにデータ処理本体部5からORDBに関する制御情報を受けて当該RDBを使用するためのオブジェクト指向的な構造をもつ変換用テーブル21が設けられている。
【0019】
図2はDB管理システムを用いた場合のRDBシステムの他の実施形態を示すハードウエア構成図である。なお、同図において図1と同一部分には同一符号を付してその詳しい説明を省略する。
【0020】
このDB管理システムは、RDB3およびCPUで構成されたデータ処理本体部5からなるRDBシステムに対し、ORDBに関する制御情報を送出し、特にRDB3をオブジェクト指向的に使用する管理システム12が設けられている。この管理システム12には後記するオブジェクト指向的な構造をもつ変換用テーブル21が搭載されている。
【0021】
以上のようにRDB3をオブジェクト指向的な構造を持たせるに際し、図1および図2に示す種々のシステムにより実現可能である。
【0022】
ところで、以上のような各種のシステムにおいて、ORDBに関する制御情報を用いてRDBを使用するに際し、ORDBとRDBには次のような相違点が挙げられる。
【0023】
(1) 継承関係
(2) Has−a関係
(3) インスタンスIDの管理
(4) 集合型インスタンスの管理
(5) 親ポインタ属性
従って、ORDBの制御情報を用いて、RDBをORDBの構造に見せかけるためには、以上の相違点を考慮した変換用テーブル21を作成する必要がある。
【0024】
(1) 継承関係について
継承関係とは、他のクラスの属性を自分のクラスの属性として扱えることをいう。今、図3に示すようにORDBの構造でクラスを宣言している場合、子クラスBは親クラスAの属性を持つことを意味し、換言すれば、子クラスBはより大きい親クラスAの属性を受け継いだもの,つまり継承関係にあると考えることができる。
【0025】
この図3はORDBの特徴であるが、RDB3には存在しない機能である。そこで、ORDBシステムが図4の上段のようなクラスを宣言している場合、RDB3、データ処理本体部5または管理システム12などには、下段に示す継承関係管理テーブル21aを作成し用意する。
【0026】
この図4に示す下段の継承関係管理テーブル21aはクラスAとクラスBとの間の継承関係を表している。つまり、クラスAはクラスBと継承関係にあるが、この継承関係にあるクラスBは「子クラス(1)」であること、またクラスBはクラスAと継承関係にあり、この継承関係にあるクラスAは「親クラス(0)」であることを表している。従って、データ処理本体部5がデータ構造を見る場合、継承関係管理テーブル21aをアクセスし、継承関係であることを確認することにより、RDB3上で継承関係を実現することが可能となる。
【0027】
(2) Has−a関係について
このHas−a関係とは、クラスが属性として他のクラスを持つことをいう。今、ORDBシステムが図5に示すようなクラスを宣言している場合、クラスBはクラスAの属性を持つことができる。これは、クラスBは属性B2にてクラスAという要素を含むことを意味する。
【0028】
この図5はORDBの特徴であるが、RDBには存在しない機能である。そこで、図6の上段のようにクラスを宣言している場合、RDB3,データ処理本体部5または管理システム12上に図6の下段に示すHas−a関係管理テーブル21bを作成し用意する。なお、このHas−a関係管理テーブル21bはクラスBのみについてHas−a関係を記述しているが、他の多数のクラス例えばクラスAについても記述されている。
【0029】
この図6の下段テーブル21bでは、クラス名Bは属性B2としてクラスAを持っていることを表している。従って、データ処理本体部5がデータ構造を見る場合、Has−a関係管理テーブル21bをアクセスし、Has−a関係であることを確認することにより、RDB3上でHas−a関係を実現することが可能である。
【0030】
(3) インスタンスIDの管理について
このインスタンスとは、各クラスの中身ないし実態を意味し、クラスのより具体的な内容であると言える。通常,ORDBでは、生成したインスタンスをORDB上に一意の番号(インスタンスID)で管理する機能をもっているので、ORDBを用いたORDBシステムの場合には、インスタンスIDを用いて処理する場合があるので、RDB3を使用する場合には、インスタンスIDについても考慮する必要がある。
【0031】
ところで、RDB3上でインスタンスIDを管理する場合、RDB上の順番号発行機能を用いて、インスタンス生成時にRDB3上で一意の番号を発行するようにする。すなわち、図7左側に記述するORDBのクラステーブルに対し、この順番号発行機能により発行される番号は同図右側のように作成されるテーブルのMy−id属性に設定する。これにより、生成されたインスタンス毎にIDを割り当てることができる。
【0032】
しかし、図7の右側に示すテーブルだけでは、インスタンスIDだけの指定を受けて何らかの操作を行おうとした場合、どのクラスのインスタンスなのか判断することが難しい。
【0033】
そこで、図8に示すようなインスタンスID管理テーブル21cを作成し、発行された番号が何れのクラスに属するかが分かるようにする。つまり、発行されたインスタンスID「0000001」はAクラスであること、また継承関係で作成されるインスタンスについても、生成された各テーブルのインスタンスIDを例えば「0000002」のように同じIDとすることにより、同一のインスタンスと見なすようにする。
【0034】
(4) 集合型インスタンスの管理について
一般に、ORDBシステムにおいては、1つの属性に複数のインスタンスを関連付けできる機能をもっている。例えばある人が複数の車両を保有する場合、図9に示すようにある人AのインスタンスID「00001」に車AのインスタンスID「00011」と車BのインスタンスID「00012」とを関連付けされて管理することが可能となっている。
【0035】
一方、RDB3においては、属性に他クラスのインスタンスを設定することもできないし、1つの属性に複数の属性値も設定できないので、インスタンス間の関連付けもできない。
【0036】
ゆえに、ORDBに関する制御情報を用いて、RDB3を使用するに際し、インスタンス間を関連付けるために、既にORDBが所有する図9に示すインスタンスIDに対し、図10に示すような中間インスタンス管理テーブルを作成することにより、集合型インスタンスの管理を行う必要がある。
【0037】
ところで、以上のような場合、RDB上において1つの中間インスタンス管理テーブルだけを用いて、全てのインスタンスを管理することになり、インスタンスの検索や生成などの性能に影響が出てくる。
【0038】
そこで、図10に示すテーブルに代えて図11に示す命名規則「−親クラス−属性名」を付けた中間インスタンス管理テーブル12dを作成し、1つの管理テーブル12dにて1つの集合型構造の関係を規定することにより、インスタンスの分散および性能劣化を防ぐことができる。
【0039】
よって、以上のような中間インスタンス管理テーブル12dを用意すれば、RDB上で1つの属性に複数の属性を接続できる。
【0040】
従って、以上述べたような管理テーブル12a〜12dを用意することにより、RDB3上にORDBの構造を構築できる。
【0041】
(5) 親ポインタ属性について
この親ポインタ属性とは、インスタンスがどの属性に接続されているかを簡単に分かるようにするための属性をいう。この属性は、RDB3上にORDBのオブジェクト指向的な構造を構築する場合、必ずしも必要としないが、性能面を考慮した場合に必要となる。
【0042】
そこで、図12の上段左側の親テーブルAに対し、同じく上段右側の子テーブルBで属性の命名規則や接続される親テーブルと属性名とが分かるようにするためには、下段左側の記述に対し、下段右側に示すように作成する必要がある。すなわち、子テーブルBは、整数型の命名規則をもち、親テーブルAの属性AAをもつことを意味する。従って、下段左側の親テーブルAの属性AAの「integer」=Bを意味する。
【0043】
但し、集合属性でないHas−a属性の場合であっても、1つのインスタンスは複数のインスタンスに接続されているので、中間インスタンス管理テーブル12dを設け、管理する必要がある。インスタンス相互の関係は、図13に示すようになる。
【0044】
なお、親ポインタ属性が無い場合と有る場合とがあるが、その親ポインタ属性の有無に応じて図14に示す如くアクセスするテーブル数が異なる。親ポインタが無い場合には、どのテーブルに接続されているかHas−a関係管理テーブル(図6参照)でヒットした全ての親テーブルを検索する必要があるが、親ポインタ属性がある場合には、親ポインタ属性に値が設定されているか確認するだけで、どのテーブルに接続されているかが分かり、仮に接続されていても、親ポインタ属性の名前からテーブル名が検索でき、データ構造によっては無い場合に比べてテーブルへのアクセス数を大幅に減らすことができる。
【0045】
次に、インスタンス生成を含む各種の処理例について説明する。但し、各種の処理に際しては、該当処理用プログラムが図1および図2に示す記録媒体6に記録され、データ処理本体部5がそのプログラムを読取って必要な処理を実行することになる。
【0046】
なお、以下に述べる各種の処理は、図15に示すサンプル構造を用いた場合について説明する。
【0047】
(a) インスタンスの生成処理について(図16参照)
継承関係を含むインスタンスの生成処理は、データ入力手段1からクラスBを指定し、インスタンスの生成を指示すると、データ処理本体部5,管理システム12は、図4に示す継承関係管理テーブル21aをアクセスし、クラスBが継承されているテーブル21aの有無を調べ、継承関係を調べる(S1〜S3:クラス継承テーブル有無確認機能)。
【0048】
ステップS3において、継承関係が有れば、クラスAおよびクラスBに対するインスタンスを生成する。この生成されたクラスAとクラスBのインスタンスに対し、DBMS(データベース・マネジメント・システム)の順番号発行機能を用いて、クラスA,Bに同じインスタンス番号を一意に発行する(S4〜S6:インスタンス生成機能)。
【0049】
そして、生成されたインスタンスIDとクラス名とを図8に示すインスタンスID管理テーブル21cに登録する(S7:インスタンス登録機能)。
【0050】
従って、以上のようなインスタンスの生成処理では、あるクラスのインスタンス生成指示に基づき、継承関係管理テーブル21aからあるクラスが継承されているテーブルを検索し、この検索によって取得されたテーブルのクラスに対してインスタンスを生成するが、これら生成されたインスタンスにはすべて同一のインスタンスIDを設定することにより、複数のテーブルのインスタンスを同一のインスタンスと見なすことが可能となる。これによって、同じインスタンスIDをもつインスタンスは同一インスタンスとみなすことができ、RDB上でORDBの継承関係のインスタンスと同じ機能を果たすことができる。
【0051】
(b) インスタンスの検索について(図17参照)
インスタンスの検索処理は、データ入力手段1からクラスBのインスタンスの検索を指示すると(S11)、データ処理本体部5,管理システム12は、クラスBのインスタンスはヒットされたか,つまり検索されたかを否かを判断し(S12)、検索された場合にはその検索されたクラスBのインスタンスからインスタンスIDを取出し、このインスタンスIDに基づいて図8に示すインスタンスID管理テーブル21cを検索し、クラスBと同じインスタンスIDを持つ他のクラスがあるか否かを調べる(S13,S14)。他のクラスがあれば、当該インスタンスID管理テーブル21cから新たに取出した他のクラスのインスタンスIDをキーにクラスAを検索し、ヒットしたインスタンスの属性値を取得する(S15)。同じくクラスBでヒットしたインスタンスの属性値を取得する(S16)。
【0052】
従って、以上のようなインスタンスの検索処理によれば、承継関係のインスタンスの下位テーブルを指定して検索を指示すると、その指定されたテーブルのインスタンスを検索し、ヒットしたインスタンスのインスタンスIDをキーとし、図8に示すインスタンスID管理テーブル21cを検索する。そして、ヒットしたインスタンスのインスタンスIDとテーブル名とを取得することにより、継承関係にある全てのテーブル名とインスタンスIDとを取得でき、継承関係にある全てのテーブルのインスタンスを取得できる。これによって、ORDBにおいて下位クラスを指定し検索した場合、承継の上位クラスの情報も取得できることと同じ効果を得ることができる。
【0053】
(c) インスタンスの削除について(図18参照)
インスタンスの削除処理は、データ入力手段1からインスタンスIDを指定し、クラスBのインスタンスの削除を指示する(S21)。データ処理本体部5,管理システム12は、指定されたインスタンスIDのクラス名Bを図8のインスタンスID管理テーブル21cから検索する(S22)。
【0054】
ここで、インスタンスIDのクラス名Bが検索されたか否かを判断し(S23)、該当クラス名Bが検索された場合、BのインスタンスのクラスCに対する属性に値が設定されているかを確認する(S24)。クラスCの属性に値が設定されている場合には、クラスBとクラスCの中間インスタンス管理テーブル21dの対象インスタンスを削除する(S25,S26)。
【0055】
同様に、BのインスタンスのクラスDに対する属性に値が設定されているかを確認する(S27)。クラスDの属性に値が設定されている場合には、クラスBとクラスDの中間インスタンス管理テーブル21dの対象インスタンスを削除する(S28,S29)。
【0056】
しかる後、検索されたインスタンスIDからインスタンスIDとクラス名を取得し(S30)、対象クラスのインスタンスを削除する。さらに、図8に示すインスタンスID管理テーブル21cから対応するクラスA,Bのインスタンスを削除する(S31)。
【0057】
従って、以上のように実施の形態によれば、インスタンスIDのみを指定しインスタンスの削除指示を行うと、指定されたインスタンスIDをキーとし、図8に示すインスタンスID管理テーブル21cを検索する。この検索されたインスタンスからテーブル名を取得する。このとき、承継関係にあるすべてのテーブル名を取得できる。そして、この取得したテーブルにHas−a属性がある場合、このHas−a属性に値が設定されているか否かを確認し、値が設定されている場合には中間インスタンス管理テーブル21dのインスタンスを削除する。承継関係管理テーブル21aから取得したテーブルをインスタンスIDをキーとして検索し、この検索されたインスタンスを削除する。これによりインスタンスIDを指定して削除した場合、承継関係にある全てのテーブルのインスタンスの削除とHas−a関係で接続されるインスタンスの切り離しを行うことから、ORDBの削除と同じ効果が得られる。
【0058】
よって、インスタンスID管理テーブル21cにアクセスすることにより、指定したインスタンスIDの他に継承関係のインスタンスを削除できる。
【0059】
(4) インスタンスの接続について(図19参照)
データ入力手段1から接続すべきクラスBとクラスCのインスタンスIDを指定し、インスタンスの接続を指示すると(S41)、データ処理本体部5は、図6に示すHas−a関係管理テーブル21bからクラスBとクラスCとがHas−a関係にあるか否かを調べる(S42)。ここで、Has−a関係にあれば(S43)、クラスCのインスタンスIDをクラスBのインスタンスの対象属性の値とし(S44)、BとCとの中間インスタンス管理テーブル21dに設定する(S45)。
【0060】
さらに、クラスCのクラスBに対する親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを設定する(S46)。
【0061】
従って、以上のような実施の形態によれば、2つのテーブルと2つのインスタンスIDとを指定し接続指示を行うと、図6に示すHas−a関係管理テーブル21bを検索し、2つのテーブルがHas−a関係にあるかを確認する。Has−a関係にあれば、親インスタンスの対象属性に子インスタンスのインスタンスIDを設定し、図11に示す中間インスタンス管理テーブル21dに親と子のインスタンスを登録し、子インスタンスの親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを登録する。これにより、ORDBのインスタンスの接続と同じ効果を得ることができる。
【0062】
よって、このインスタンスの接続処理は、Has−a関係管理テーブル21bにアクセスすることにより、指定されたクラスがHas−a関係に有ることが分かり、インスタンスの接続を実行できる。
【0063】
(5) 集合型インスタンスの接続について(図20参照)
データ入力手段1から接続すべきクラスBとクラスDとのインスタンスIDを指定し、インスタンスの接続を指示すると(S51)、データ処理本体部5は、図6に示すHas−a関係管理テーブル21bからクラスBとクラスDとが集合型のHas−a関係にあるか否かを調べる(S52)。ここで、Has−a関係にあれば(S53)、クラスDのインスタンスIDをクラスBのインスタンスの対象属性の値とし(S54)、BとDとの中間インスタンス管理テーブル21dに設定する(S55)。
【0064】
さらに、クラスDのクラスBに対する親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを設定する(S46)。
【0065】
従って、この実施の形態によれば、2つのテーブルと2つのインスタンスIDとを指定し接続指示を行うと、図6に示すHas−a関係管理テーブル21bを検索し、2つのテーブルがHas−a関係にあるかを確認する。Has−a関係にあれば、中間インスタンス管理テーブル21dに親テーブルと子テーブルのインスタンスIDを登録し、親テーブルの属性と子テーブルの親ポインタ属性に中間インスタンス管理テーブル21dのインスタンスIDを登録する。新たに親インスタンスIDに接続したい場合、同一の中間インスタンス管理テーブル21dにインスタンスIDを登録することにより、1つのインスタンスに複数のインスタンスが接続されるように見せることが出来る。これにより、ORDBの集合型インスタンスの接続と同じ効果が得られる。つまり、集合型インスタンスの接続処理は、Has−a関係管理テーブル21bと中間インスタンス管理テーブル21dとを用いて、集合型インスタンスの接続を実行できる。
【0066】
(6) 集合型インスタンスの検索について(図21参照)
集合型インスタンスの検索処理は、データ入力手段1からクラスBのインスタンスIDを指定し、集合型Has−aクラスのインスタンスの検索を指示すると(S61)、データ処理本体部5は、クラスBのインスタンスのクラスDに対する属性に値が設定されているかを調べる(S62)。ここで、値が設定されていれば(S63)、クラスBとクラスDとの中間クラスを指定されたインスタンスIDをキーに検索する(S64)。中間クラスのインスタンスが検索された場合(S65)、検索された中間クラスのインスタンスからクラスDのインスタンスIDを取得するとともに、この取得された中間インスタンス管理テーブル21dのインスタンスIDをキーにクラスDを調べる(S66,S67)。クラスDのインスタンスが検索された場合(S68)、当該クラスDのインスタンスの属性値を取得する(S69)。
【0067】
従って、以上のような実施の形態によれば、指定されたインスタンスの集合型属性に値が設定されているかどうかを確認する。設定されていない場合には接続されていないので、ここで終了する。設定されている場合には、設定されている値をキーに中間インスタンス管理テーブル21dを検索する。このとき、中間インスタンス管理テーブル21dの名前は、命名規則によって管理テーブルアクセスすることなく指定できる。中間インスタンス管理テーブル21dから検索されたインスタンスから子インスタンスIDを取得し、子テーブルを検索し、接続先のインスタンスを取得できる。これにより、ORDBの集合型インスタンスの検索と同じ結果が得られる。このとき、インスタンスID管理テーブル21cはデータベース上で1つではなく、Has−a関係ごとに1つずつもっているので、検索性能にそれほど影響しない。よって、このインスタンス検索処理にあっては、中間インスタンス管理テーブル21dを検索することにより、インスタンスに接続された複数のインスタンスを検索できる。
【0068】
(7) 親インスタンスの検索について(図22参照)
親インスタンスの検索処理は、データ入力手段1からクラスCのインスタンスIDを指定し、親インスタンスの検索を指示すると(S71)、データ処理本体部5は、クラスCのインスタンスの親ポインタに値が設定されているかを調べる(S72)。ここで、値が設定されている場合(S73)、クラスBとクラスDとの中間クラスを指定されたインスタンスIDをキーに検索する(S74)。中間クラスのインスタンスが検索された場合(S75)、検索された中間クラスのインスタンスから親テーブルのインスタンスIDを取得するとともに、この取得された中間インスタンス管理テーブル21dのインスタンスIDをキーにクラスBを調べる(S76,S77)。クラスBのインスタンスが検索された場合(S78)、その検索されたクラスBのインスタンスの属性値を取得する(S79)。
【0069】
従って、以上のような実施の形態によれば、指定したインスタンスの親インスタンスを検索する場合、通常ならば承継関係管理テーブル21aやHas−a関係管理テーブル21bを検索することによりデータ構造を確認した後、指定されたインスタンスIDをキーに各テーブルを検索する必要があるが、図12にあるように親ポインタ属性を設けることにより、その属性値に値が設定されているか否かから判断する。親ポインタ属性がない場合は、Has−a関係管理テーブル21bなどを検索し、対象テーブルを検索する必要があるので、大幅な性能劣化が考えられる。一方、親ポインタに値が設定されている場合、親ポインタ属性名から中間インスタンス管理テーブル12dを特定でき、接続されている親のインスタンスを探すことが容易となる。
【0070】
なお、本発明はその要旨を逸脱しない範囲で種々変形して実施できる。
【0071】
【発明の効果】
以上説明したように本発明によれば、RDB上にオブジェクト指向的な構造をもたせてORDB的に使用でき、またRDBにオブジェクト指向的な構造をもたせつつ性能劣化を回避することができるRDBシステムを提供できる。
【図面の簡単な説明】
【図1】 本発明に係るRDBシステムの一実施の形態を示す構成図。
【図2】 DB管理システムを用いた本発明に係るRDBシステムの他の実施形態を示す構成図。
【図3】 ORDBの構造によってクラスを宣言している図。
【図4】 承継関係管理テーブルのデータ配列図。
【図5】 ORDBの構造によってクラスを宣言している図。
【図6】 Has−a関係管理テーブルのデータ配列図。
【図7】 各クラスに対するインスタンスIDを生成するための説明図。
【図8】 インスタンスID管理テーブルのデータ配列図。
【図9】 1つの属性に複数のインスタンスのデータ配列図。
【図10】 中間インスタンス管理テーブルの説明図。
【図11】 命名規則を付けた中間インスタンス管理テーブルのデータ配列図。
【図12】 親ポインタ属性を説明する図。
【図13】 インスタンス相互の関係を示す図。
【図14】 親ポインタ属性有りの場合と無しの場合とにおける必要テーブルの説明図。
【図15】 動作説明のためのサンプル図。
【図16】 インスタンスの生成処理を説明するフローチャート。
【図17】 インスタンスの検索処理を説明するフローチャート。
【図18】 インスタンスの削除処理を説明するフローチャート。
【図19】 インスタンスの接続処理を説明するフローチャート。
【図20】 集合型インスタンスの接続処理を説明するフローチャート。
【図21】 集合型インスタンスの検索処理を説明するフローチャート。
【図22】 親インスタンスの検索処理を説明するフローチャート。
【図23】 従来のORDBシステムの構成図。
【図24】 従来のRDBシステムの構成図。
【符号の説明】
3…RDB
5,11…データ処理本体部
6…記録媒体
12…管理システム
21…管理テーブル
21a…継承関係管理テーブル
21b…Has−a関係管理テーブル
21c…インスタンスID管理テーブル
21d…中間インスタンス管理テーブル
Claims (2)
- RDB(リレーショナル・データベース)と当該RDBに対して処理を実行するデータ処理本体部とを有するRDBシステムにおいて、
前記RDB上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むようなHas−a関係を規定するHas−a関係管理テーブルと、前記各クラスに基づく実態を表すインスタンスを一意に発行するインスタンスIDを管理するインスタンスID管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDと子となる複数のインスタンスIDとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記RDBから発行される一意の番号であるインスタンスIDをインスタンスID管理テーブルに生成し、
また、前記データ処理本体部は、2つのクラスのインスタンスID指定のもとにインスタンス接続処理の指示を受けたとき、前記 Has − a 関係管理テーブルから前記2つのクラスが集合型の Has − a 関係にあれば、中間インスタンス管理テーブルに両インスタンスIDの接続関係を設定し、
また、前記データ処理本体部は、あるクラスのインスタンスID指定のもとに前記集合型の Has − a クラスのインスタンス検索指示を受けたとき、前記中間インスタンス管理テーブルに前記あるクラスと接続関係を有する属性値が設定されていれば、これら両クラスの中間クラスのインスタンスIDをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから前記接続関係にあるクラス及びインスタンスを検索することを特徴とするRDBシステム。 - RDB(リレーショナル・データベース)と当該RDBに対して処理を実行するデータ処理本体部とを有するRDBシステムにおいて、
前記RDB上には、複数のクラスの継承関係を規定する継承関係管理テーブルと、前記自クラスが属性として前記他クラスを含むような Has − a 関係を規定する Has − a 関係管理テーブルと、前記各クラスに基づく実態を表すインスタンスを一意に発行するインスタンスIDを管理するインスタンスID管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDと子となる複数のインスタンスIDとを関連付けした集合型インスタンスを規定する中間インスタンス管理テーブルと、このインスタンスID管理テーブルの親となるインスタンスIDに対し、子となるインスタンスIDが前記親となるインスタンスID及び属性を規定する親ポインタとを設け、
前記データ処理本体部は、クラス指定のもとにインスタンス生成処理の指示を受けたとき、前記継承関係管理テーブルから指定されたクラス及び承継関係にあるクラスのインスタンスを生成し、この生成された両クラスのインスタンスに基づいて前記RDBから発行される一意の番号であるインスタンスIDをインスタンスID管理テーブルに生成し、
また、前記データ処理本体部は、あるクラスのインスタンスID指定のもとに前記親インスタンスの検索指示を受けたとき、前記あるクラスのインスタンスの親ポインタに属性値が設定されていれば、その親ポインタの属性値から前記中間インスタンス管理テーブルを特定し、あるクラス及び接続関係をもつクラスの中間クラスのインスタンスIDをキーに中間クラスのインスタンスを検索し、この検索された中間クラスのインスタンスから親インスタンスを検索することを特徴とするRDBシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000029310A JP3895898B2 (ja) | 2000-02-07 | 2000-02-07 | Rdbシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000029310A JP3895898B2 (ja) | 2000-02-07 | 2000-02-07 | Rdbシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001222460A JP2001222460A (ja) | 2001-08-17 |
JP3895898B2 true JP3895898B2 (ja) | 2007-03-22 |
Family
ID=18554588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000029310A Expired - Fee Related JP3895898B2 (ja) | 2000-02-07 | 2000-02-07 | Rdbシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3895898B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114339353B (zh) * | 2021-12-31 | 2023-09-29 | 晶晨半导体科技(北京)有限公司 | 音视频同步方法和装置及电子设备和计算机可读存储介质 |
-
2000
- 2000-02-07 JP JP2000029310A patent/JP3895898B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001222460A (ja) | 2001-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6460043B1 (en) | Method and apparatus for operating on data with a conceptual data manipulation language | |
US6601071B1 (en) | Method and system for business to business data interchange using XML | |
US7499915B2 (en) | Index for accessing XML data | |
US6772172B2 (en) | Method, system, program, and computer readable medium for indexing object oriented objects in an object oriented database | |
US6978260B2 (en) | System and method for storing data | |
US7685561B2 (en) | Storage API for a common data platform | |
US7921101B2 (en) | Index maintenance for operations involving indexed XML data | |
CN100535894C (zh) | 数据库对象脚本生成方法和系统 | |
US7051030B2 (en) | Method and system for managing a directory with a template | |
US20050165807A1 (en) | Method and system for representing and accessing object-oriented data in a relational database system | |
US20080126397A1 (en) | RDF Object Type and Reification in the Database | |
US6886016B2 (en) | Method and system for supporting multivalue attributes in a database system | |
US7617211B2 (en) | System and method for automatically synchronizing security-relevant information between a relational database and a multidimensional database | |
US6954760B2 (en) | Method and system for multidimensional database management | |
US6944627B2 (en) | Content management system and methodology employing a tree-based table hierarchy featuring arbitrary information retrieval from different locations in the hierarchy | |
US8560498B2 (en) | Propagate delta information from an enterprise information system | |
JPH0727487B2 (ja) | 探索項構築の制御テーブルの導入方法 | |
JP3895898B2 (ja) | Rdbシステム | |
JP4724177B2 (ja) | Xmlデータにアクセスするためのインデックス | |
US20080109254A1 (en) | Interoperability across heterogeneous taxonomies | |
US9400814B2 (en) | Hierarchy nodes derived based on parent/child foreign key and/or range values on parent node | |
US6460028B1 (en) | System and method for data organization | |
US20020062303A1 (en) | Data management method and storage medium storing data management program | |
Crowe | Object systems over relational databases | |
JP3175128B2 (ja) | データベース,ファイルおよびプログラムの統合管理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060801 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061002 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061212 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061215 |
|
LAPS | Cancellation because of no payment of annual fees |