JPH0652531B2 - リレーシヨナル・データベース管理システム - Google Patents
リレーシヨナル・データベース管理システムInfo
- Publication number
- JPH0652531B2 JPH0652531B2 JP1245366A JP24536689A JPH0652531B2 JP H0652531 B2 JPH0652531 B2 JP H0652531B2 JP 1245366 A JP1245366 A JP 1245366A JP 24536689 A JP24536689 A JP 24536689A JP H0652531 B2 JPH0652531 B2 JP H0652531B2
- Authority
- JP
- Japan
- Prior art keywords
- descriptor
- parent
- constraint
- database
- dependent
- 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 - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
に関し、具体的には、データベース・マネージャ内の参
照制約の構造的表示に関する。
コンピュータ・システムである。リレーショナル・デー
タベース管理システムでは、データが「テーブル」に記
憶される。テーブルは、水平の行と垂直の列をもつもの
と考えることができるインターナショナル・ビジネス・
マシーンズ・コーポレーションのDatabase2プ
ロダクトは、代表的なリレーショナル・データベース管
理システムの例である。
照一貫性」機能である。参照一貫性は、テーブルの列間
で必要な関係を強制することにより、2つの異なるテー
ブル(または同じテーブル)の関係する列間のデータ値
の一貫性を保証する。こうした必要な関係は、「参照制
約」と呼ばれている。「従属テーブル」の行は、その
「外部キー」の値が「親テーブル」のある行の「基本キ
ー」の値と一致する場合、またはその外部キーの値が
空、すなわち値を持たない場合に、ある制約に関して参
照一貫性をもつ。言い替えれば、空でない値をもつ従属
テーブルのすべての行は、親テーブルに対応する親行を
もたなければならない。従属行の外部キーが親テーブル
中に一致する基本キー値をもたない場合、その参照制約
に違反することになり、これらのテーブルを含むデータ
ベースの参照一貫性が失われる。参照制約を強制し、そ
れによってデータベースの参照一貫性を維持するため
に、システムは、空でない外部キー値が常に対応する基
本キー値をもつことを保証しなければならない。参照一
貫性を実施する際、システムはまた、基本キー値が一義
的であること、すなわち「実体一貫性」と呼ばれる特性
も保証する。
YEEテーブルと、部門番号を含むDEPARTMEN
Tテーブルを考えてみる。参照一貫性のため、EMPL
OYEEテーブル中のすべての部門番号に対して、DE
PARTMENTテーブル中に同じ一義的な部門番号が
なければならない。それには、EMPLOYEEテーブ
ルで定義された参照制約が必要になる。DEPARTM
ENTテーブルの部門番号が基本キーとなり、EMPL
OYEEテーブルの部門番号はこの制約では外部キーと
なる。
響を与えるような操作を受けるときは常に、参照一貫性
が強制されなければならない。構造化照会言語(SQ
L)を使用するリレーショナル・データベース管理シス
テムでは、データは、主としてLOAD、INSER
T、DELETE及びUPDATEコマンドとそれらの
結果生じる動作によって修正される。LOAD及びIN
SERTコマンドは共にデータをデータベースに追加
(挿入)する。LOADは通常多くの行を追加し、IN
SERTは僅かの行しか追加しない。DELETEは1
行または複数の行を削除し、UPDATEは1行または
複数の行の内容を変更する。これらの動作の1つが発生
するときは常に、データベースの参照一貫性を確保する
ため、修正された行に関する参照制約が強制されなけれ
ばならない。
照一貫性を維持する一方法は、いくつかの事前定義した
事象が発生するときに実行される、システムの外部に常
駐する手続き(プログラムまたはルーチン)を支援する
手段を、システムに設けるものである。こうした手続き
の例は、データが特定のテーブルに挿入されるとき常に
特定のプログラムを実行することである。手続きは、テ
ーブルのインデックスを更新したり、新しく挿入された
データに対して参照制約を強制したりする。後者は、参
照一貫性の「手続き的」実施の例である。いくつかのリ
レーショナル・データベース管理プロダクトに参照一貫
性の手続き的実施が加えられている。
そのため速度が遅くなり効率が低くなる。手続きは外部
(システム外)にあるので、システムと手続きの間のイ
ンターフェースで余分の処理が必要である。この処理オ
ーバーヘッドを、全体システム内の内部サブシステムは
蒙らない。したがって、外部手続きに関連する処理オー
バーヘッドのない参照一貫性の実施が求められている。
前後(ただし修正中ではない)に外部手続きが呼び出さ
れるので、データが2回アクセスされなければならな
い。1回はシステムにより、2回目は手続きによる。デ
ータ・アクセスの回数が2倍になるため、システム全体
の速度が大幅に低下することがある。したがって、新し
く修正されたデータに1回だけアクセスし、手続き的実
施に付随する冗長な2重アクセスが不要な、参照一貫性
の実施も求められている。
なわちそれらが実施する制約は、コンピュータ・プログ
ラムにしか理解できない。手続きを書くのに使われるプ
ログラミング言語は、データベース・ユーザにはほとん
ど理解できず、また制約を変更する処理はデータベース
の通常のユーザには不可能である。プログラマ以外の人
が参照制約を容易に理解し修正できる、参照一貫性の実
施が求められている。
下のように要約される本発明によって満たされる。
コンピュータで実施したリレーショナル・データベース
管理システムからなる。このシステムは、データのレコ
ードを含む少なくとも2つのリレーショナル・テーブル
と、少なくとも1つの関係記述子を含む。関係記述子は
テーブル間の参照制約を記述し、制約の親のテーブルと
従属テーブル及び基本キーと外部キーを識別する。関係
記述子は、実施態様にそのオブジェクティブ文字をもた
らす、データベース・システム内の独立したオブジェク
トである。このシステムはまた、テーブルが修正される
とき関係記述子にアクセスする手段と、テーブルが修正
されるとき関係記述子によって記述される参照制約を強
制する手段も含む。
ため、コンパイルしデータベース・マネージャに記憶す
ることが好ましい。関係記述子にアクセスする手段は、
関係記述子とデータベース・テーブルを記述するレコー
ド記述子の間にシンボリック・ポインタの2つの連鎖を
含むことが好ましい。
のテーブルを示す。DEPARTMENTテーブル10
は、番号DEPTNOと名前DEPTNAMEによって
ある企業の各部門を記述し、そのマネージャMGRNO
とそれが属する部門の番号ADMRDEPTを識別す
る。EMPLOYEEテーブル12は、すべての従業員
を従業員番号EMPNOによって識別して、基本的個人
情報をリストし、その従業員が働く部門WORKDEP
Tを識別する。PROJECTテーブル14は、その企
業が現在取り組んでいる各プロジェクトを記述し、プロ
ジェクト番号PROJNO、プロジェクト名PROJN
AME、従業員責任者及び責任部門をリストし、その個
別プロジェクトが属する大プロジェクトMAJPROJ
を識別する。第3図ないし第5図にこれらのテーブルの
サンプル・データを示す。
の参照制約によって互いにかつそれ自体に関係づけられ
ている。制約R1 16は、DEPARTMENTテー
ブル10の統轄部門AMRDEPTがDEPARTME
NTテーブルの有効部門番号DEPTNOであることを
必要とする。すなわち、制約R1 16の親テーブルは
DEPARTMENTであり、基本キーはDEPART
MENTテーブルのDEPTNO列であり、基本インデ
ックスはDEPTNOインデックスである。制約R1
16の外部キーは、DEPARTMENTテーブル10
のADMRDEPT列であり、DEPARTMENTを
従属テーブル及び親テーブルにする。制約R1 16
は、その親テーブルと従属テーブルが同じなので、自己
参照制約である。
12の各従業員の勤務部門WORKDEPT(外部キ
ー)が、DEPARTMENT(親)テーブル10の有
効部門DEPTNO(基本キー)であることを必要とす
る。制約R3 20は、PROJECTテーブル10の
責任部門RESPDEPTが、DEPARTMENテー
ブル10の有効部門DEPTNOであることを必要とす
る。制約R4 22は、DEPARTMENTテーブル
10の部門のマネージャMGRNOが、EMPLOYE
Eテーブル12の有効従業員EMPNOであることを必
要とする。制約R5 24は、PROJECTテーブル
14のプロジェクトの責任従業員RESPEMPが、E
MPLOYEEテーブル12の有効従業員EMPNOで
あることを必要とする。最後に、制約R6 26は、P
ROJECTテーブル14のプロジェクトの主プロジェ
クトMAJPROJが、それ自体PROJECTテーブ
ル16の有効プロジェクト番号PROJNOであること
を必要とする。R6も自己参照制約である。
テーブル中にあるレコードの外観を指し、「レコード」
は、データベース内に記憶されているその行のデータの
内部表示を指す。「親行」は「親テーブル」の行であ
り、1つまたは複数の従属行の外部キー値と一致する
「基本キー値」をもつ。「従属行」は「従属テーブル」
の行であり、ある親行の基本キー値と一致する「外部キ
ー値」をもつ。「自己参照制約」とは、同じテーブル内
で定義される制約である。すなわち外部キーと基本キー
が同じテーブルにある。自己参照テーブル内に、外部キ
ーが同じ行の基本キーと一致する「自己参照行」がある
ことがある。制約R1 16とR6 26が自己参照制
約である。「サイクル」とは、サイクル内のテーブルが
それ自体の従属テーブルであるような1組の制約であ
る。制約R2 18及びR4 22は1サイクルを形成
する。サイクル内に、所与の行がそれ自体の従属行とな
っている行のサイクルがあることがある。
及び「更新規則」を含む。これらの規則は、データベー
スの修正が行なわれるときに参照制約に関してどんな活
動が行なわれるかを指定する。
れは、従属テーブルに挿入されたどの行も、それが参照
する親テーブルの基本キーの値に等しい外部キー値をも
つことを必要とする。言い替えれば、空でない外部キー
値をもつすべての従属テーブルのすべての行は、その当
該の親テーブルに対する行をもたなければならない。
こるかを指定する。削除規則には3つのオプションがあ
る。DELETE RESTRICTでは、レコードの
基本キー値に等しい外部キー値をもつ従属テーブルの行
がある場合、親テーブルの行は削除できない。すなわ
ち、従属行をもつ間は親行は削除できない。DELET
E CASCADEでは、親テーブルの行が削除される
場合、この行の基本キー値に等しい外部キー値をもつ従
属テーブルのすべての行も削除される。言い替えれば、
親行を削除すると、その従属行(及びそれらの従属行な
ど)のすべてが自動的に削除される。最後に、DELE
TE SET NULLでは、親テーブルの行が削除さ
れる場合、削除されている親行の基本キー値に等しい従
属テーブルのすべてのレコードの外部キーが空の値に設
定される(すなわち、外部キーが値をもたないことを示
す状態)。SET NULLオプションは、従属行が、
従属行の無差別的削除を避けながら、存在しない親行を
参照しないことを保証する。
に何が起こるかを指定する。外部キーの更新規則は、外
部キーが空でない値に更新される場合、その値が親テー
ブルのある行の基本キーに一致しなければならないこと
を保証する。基本キーの更新規則は、削除規則と同じ3
つのオプションをもつが、それらの動作のしかたは幾分
異なる。UPDATE RESTRICTは、従属テー
ブルに親行の基本キー値に等しい外部キー値をもつ行が
ある場合、親テーブルの基本キーが更新されないように
する。すなわち、親行の基本キーは、その従属行の外部
キーが更新されるまで更新できない。UPDATE C
ASCADEは、親行の基本キーの更新をその行の従属
行の外部キーに伝播する。親テーブルの基本キーがある
値に更新される場合、元の外部キーの値が親テーブルの
元の基本キーの値に等しかった従属テーブルのすべての
行のすべての外部キーが、基本キーの新しい値の一致す
るように更新され、これらの従属行に従属する行も更新
される。UPDATE SETNULLでは、親テーブ
ルの基本キーが更新される場合、その基本キーが更新さ
れている親行の基本キーの値に等しい従属テーブルのす
べての行の外部キーが空の値に設定される(すなわち、
外部キーが値をもたないことを示す状態)。
ド記述子」によって記述される。レコード記述子は、テ
ーブルの名前と、テーブルの各レコードを含むフィール
ドの記述を含む。各レコード記述子は、データベース・
システム内で独立したオブジェクトとして存在し、シス
テム内の他のテーブル記述子に影響を及ぼすことなく
(テーブルの定義を修正するために)修正することがで
きる。このために、こうした記述子は「オブジェクティ
ブ」と呼ばれる。
は、「インデックス記述子」によって記述される。イン
デックス記述子は、インデックスが定義される対象とな
るキーの記述子を含む。すなわち、親テーブルの基本キ
ーのインデックス記述子(「基本キー・インデックス記
述子」)は、フィールドの数と基本キー列の親テーブル
の関連フィールド番号のリストを含む。インデックス記
述子も、データベース・システム中で独立したオブジェ
クトとして存在し、個別に修正できるので、オブジェク
ティブである。
ブジェクトにコンパイルする。このオブジェクトは、そ
れぞれ単一の制約のメタ・データ記述子を含む。コンパ
イルの特徴は、本発明の参照一貫性の実施と従来技術の
実施の主な相違点であり、メタ・データ記述子中で表現
される規則に応じて参照規制を強制するために、データ
ベース・マネージャに埋め込まれた単一の共用手続きを
構成できるようにする。オブジェクティブの特徴は、本
発明の実施を、従来技術による参照一貫性の手続き的実
施から区別するものである。
ルの基本インデックス、及び外部キーを構成する列を識
別して、単一の参照制約を完全に記述する。基本インデ
ックスの記述子は基本キーの列を識別する。(任意選択
の)インデックスが、外部キーの列で定義されたり、イ
ンデックス・キーの一番左の列が外部キーを含むような
列で定義されたりしている場合、関係記述子はこの外部
キー・インデックスも識別する。関係記述子はまた制約
の削除規則と更新規制も指定する。本発明のオブジェク
ティブ関係記述子は、参照制約を強制する処理を大いに
単純にする。というのは、参照一貫性の他の実施で見ら
れる様々な手続きの代わりに、単一の強制手続きが使用
できるからである。さらに、オブジェクティブ関係記述
子は、システム動作中に、コンピュータの高速揮発性メ
モリにおけるデータベース・システムの指定の一環とし
て配置及びアクセスされる。これにより、システムは、
データベース管理システムのメモリ常駐指定の外部に制
約記述子を記憶する、従来技術による参照一貫性の実施
に比べて、参照制約の記述に対して非常に迅速なアクセ
スができる。
子から連鎖される。関係記述子は、2組のポインタによ
って2重にレコード記述子から連鎖される。1組の関係
記述子ポインタは、所与のテーブルを親テーブルとする
関係を識別する、「親テーブル連鎖」を形成する。もう
1組の関係記述子ポインタは、所与のテーブルが従属テ
ーブルとなる関係を識別する、「従属テーブル連鎖」を
形成する。これらの連鎖は、迅速な識別とテーブルの修
正に影響を及ぼす参照制約の強制を可能にする。
参加する単一オブジェクトにコンパイルされるので、制
約の除去の管理が大幅に単純になる。制約を除去する方
法は2つある。第1に、2つのテーブル間の参照一貫性
がもはや望まれないときに制約は明示的に除去される。
第2に、関係のテーブルの1つがなくなるとき、その制
約が暗示的に除去される。
がすべての連鎖から取り除かれパージされて、2つのテ
ーブルの間の関係が終了する。
落するとき、脱落したテーブルに関係するすべての関係
が除去されなければならない。脱落したテーブルのレコ
ード記述子は、それが親テーブルとなる関係記述子の連
鎖、及びそれが従属テーブルとなる関係記述子の連鎖に
対するアンカを含むので、脱落したテーブルに関係する
制約をすべて除去するには、各アンカから開始して、そ
の連鎖中の各関係記述子をパージする必要がある。これ
は、脱落したテーブルと他のテーブルの間のすべての関
係を除去する効率のよい方法である。
6図を参照すると最もよくわかる。第6図は、第1図な
いし第5図に示した3つのテーブルのレコード、インデ
ックス、及び関係記述子を概略的に示したものである。
データベースB30を示す。データベースA20は、第
3図と第4図に示した上記のDEPARMENTテーブ
ル10とEMPLOYEEテーブル12を含む。データ
ベースA28はさらに、これらのテーブルのレコード、
インデックス及び関係記述子を含む。データベースB3
0は、第5図のPROJECTテーブル14とそのテー
ブルに関連するインデックス及び記述子を含む。
RTMENTテーブル10のレコードを記述する情報を
含む。こうした情報には、たとえばテーブル10を含む
列の形式と長さがある。こうした情報は本発明の理解ま
たは説明に必要でないので、これ以上説明しない。DE
PARMENTレコード記述子32は、DEPTNOイ
ンデックス38のインデックス記述子36を指すポイン
タ34を含む。DEPTNOインデックス38は、DE
PARMENTテーブル10の基本キーであるDEPT
NO列に定義されている。すなわち、DEPTNOイン
デックス38は、DEPARTMENTテーブル10の
基本キー・インデックスである。
EPARTMENTテーブル10のDEPTNAME列
に定義され、DEPARTMENTテーブルの行を部門
名のアルファベット順に並べる手段をもたらす。DEP
TNAMEインデックス40は、その関連するインデッ
クス記述子42によって記述される。DEPTNOイン
デックス記述子36からのポインタ44は、DEPTN
AMEインデックス記述子42を識別する。したがっ
て、ポインタ34、44は、DEPTNOインデックス
36及びDEPTNAMEインデックス記述子42を、
DEPARTMENTレコード記述子32から始まる連
鎖に入れる。
子は、そのデータベースのレコード記述子から2重に連
鎖される。1組の連鎖は様々な関係記述子をその当該の
親テーブルに接続し、第2組の連鎖は、関係記述子をそ
れらの従属テーブルに接続する。
コード記述子32は、2つのポインタ46、48を含
む。第1のポインタ46は、DEPARTMENTテー
ブル10が親テーブルとなる第1の関係記述子を指す。
第2のポインタ48は、DEPARTMENTテーブル
が従属テーブルとなる第1の関係記述子を指す。参照を
容易にするため、第6図の関係記述子との間のポインタ
は、関係記述子の「親連鎖」中のポインタが「従属連
鎖」中の上記ポインタとなるように引かれる。
第1の関係記述子は、参照制約R1 16の記述子50
である。制約R1 16は自己参照制約であり、その親
テーブル及び従属テーブルとして同じテーブルDEPA
RTMENT10をもつ。R1関係記述子50はDEP
ARTMENT親連鎖中の最初の記述子であるが、DE
PARTMENT従属連鎖中の最後の記述子である。す
なわち、ポインタ46は、DEPARTMENTレコー
ド記述子32からR1関係記述子50を指すが、ポイン
タ48は、DEPARTMENTレコード記述子48か
らDEPARTMENT従属連鎖の第1のメンバ、すな
わちR4関係記述子56を指す。DEPARTMENT
レコード記述子32からの従属連鎖は、R4記述子56
からR1関係記述子50に続く。
鎖は、R1関係記述子50からR2関係記述子52に、
またそこからR3関係記述子54に続く。制約R3の親
テーブルと従属テーブルは、異なるデータベース中にあ
る。その親テーブルDEPARTMENT10はデータ
ベースA28中にあるが、その従属テーブルPROJE
CT76はデータベースB30中にある。1つのR3関
係記述子54は、上記のようにデータベースA28中に
ある。第2のR3関係記述子55は、データベースB3
0中にあり、2つの逆向きのポインタ57によって第1
のR3関係記述子に接続される。第2のR3記述子55
は、PROJECTレコード記述子76から始まる従属
連鎖の先頭にある。
は、DEPARTMENTテーブル10と同様に2つの
インデックスをもつ。EMPLOYEEテーブル12の
EMPNO列のEMPNOインデックス58は、そのテ
ーブルの基本キー・インデックスであり、EMPNOイ
ンデックス記述子60によって記述される。WORKD
EPTインデックス62は、WORKDEPT列のEM
PLOYEEテーブル12を指し、従業員が勤務する部
門に応じた従業員の行の配列を維持する。WORKDE
PTインデックス62は、WORKDEPTインデック
ス記述子64によって記述される。EMPNOインデッ
クス記述子60もWORKDEPTインデックス記述子
64も、EMPLOYEEレコード記述子66から連鎖
されている。
は、EMPLOYEEレコード記述子66から始まる。
EMPLOYEEテーブルをその親テーブルとする第1
の参照制約は、制約R4 22であり、R4関係記述子
56によって記述される。すなわち、EMPLOYEE
レコード記述子66は、R4関係記述子56を指すポイ
ンタ68を含む。EMPLOYEEテーブル12の親連
鎖は、R4関係記述子56からR5関係記述子70に続
く。EMPLOYEEテーブル12は唯一の参照制約R
2 18の従属テーブルである。すなわち、EMPLO
YEEレコード記述子66からの従属連鎖は、R2関係
記述子52だけに延びる。
は、1つのインデックス、すなわちそれに関連するイン
デックス記述子74によって記述される、その基本キー
・インデックスPROJNO72だけをもつ。PROJ
NOインデックス記述子74は、PROJECTレコー
ド記述子76から連鎖される。PROJECTテーブル
14は、唯一の参照制約、すなわち自己参照制約R6
26だけの親テーブルである。したがって、(PROJ
ECTレコード記述子76から始まる)PROJECT
親連鎖は、1つのメンバーR6関係記述子78しかもた
ない。
20、R5 24、R6 26の従属テーブルであ
る。制約R6 26は自己参照制約であり、その関係記
述子78はPROJECT親連鎖中の第1のかつ唯一の
記述子である。R6記述子78は、PROJECT従属
連鎖中の最後のメンバーである。
なるデータベース中にある。その親テーブルEMPLO
YEE12はデータベースA28中にあるが、その従属
テーブルPROJECT76はデータベースB30中に
ある。制約R3と同様に、第1のR5関係記述子70は
データベースA28中にあり、第2のR5記述子80は
データベースB30中にある。したがって、PROJE
CTレコード記述子76からの従属連鎖は、まずデータ
ベースB30のR3関係記述子55へ、そこからデータ
ベースBのR5関係記述子80へ、最後にR6記述子7
8へ延びる。この場合も、2つの逆向きのポインタが、
第1及び第2の関係記述子70、80をリンクする。
発明の好ましい実施例の範囲内で動作するために、2つ
のポインタ・フィールドしか必要としない。これらのフ
ィールドの1つは、レコード記述子のテーブルが親テー
ブルとなる第1の関係記述子を指すポインタ、すなわち
レコード記述子の親連鎖中の第1の関係記述子を指すポ
インタを含む。もう一方のフィールドは、従属連鎖中の
第1の関係記述子を指す。これらのポインタを下記の表
1にリストする。
述子を指すポインタ REC.B そのレコードを従属連鎖とする第1の関係
記述子を指すポインタ REC.Aは、関係記述子の親連鎖中の第1の関係記述
子を指すポインタである。関係記述子のREL.Eフィ
ールド(以下で説明する)は、親連鎖を、このレコード
記述子テーブルが親テーブルとなる任意の追加関係記述
子に続ける。
を指すポインタである。その連鎖中では、このテーブル
はその関係の従属テーブルである。関係記述子のRE
L.Jフィールドは、従属連鎖を、このレコード記述子
のテーブルを従属テーブルとする任意の追加関係記述子
に続ける。
る。
の制約の親テーブルと従属テーブル、外部キー、親テー
ブルと従属テーブルにアクセスするためのアクセス経路
(インデックスまたは走査)、削除規則及び更新規則を
記述する。親テーブルは、常に基本キー・インデックス
を介してアクセスされるので、制約の基本キーの記述
は、基本キー・インデックス記述子から取り出される。
親テーブルと従属テーブルが同じデータベース中にある
場合、各制約ごとに1つの関係記述子があり、親テーブ
ルも従属テーブルもそれを指す。2つのテーブルが異な
るデータベース中にある場合、関係記述子のコピーが各
データベースに存在している。
含む。当然、より記述的な関係名、たとえば“ADMR
DEPT”を使ってもよい。
ックス記述子を指すポインタを含む。制約が定義される
と、基本キー値の一義性の制約(実体一貫性)を強制す
る、Bツリー・インデックス・タイプのアクセス機構が
存在するかどうかが判定される。こうした一義的なイン
デックスが存在する場合、そのインデックス記述子を指
すポインタが、REL.Bに入れられる。これは、IN
SERT動作で基本キーの一義性の制約に違反したかど
うかを迅速に決定するための手段をもたらす。基本キー
の一義性の制約を強制する他の機構も利用できるが、好
ましい実施例ではそれは実施されない。こうした機構が
存在しない場合、INSERTは制約が1つ定義される
まで禁止される。それが定義されたとき、その条件が現
在満たされているかどうか判定するため、すべての関係
記述子が照会され、REL.Bフィールドはインデック
ス記述子を指すようになる。
約の強制中に基本キー・フィールドの属性に対するアク
セスを可能にする。代わりに、基本キー・フィールドの
属性を関係記述子中で複製することもできるが、こうし
た複製は親テーブルのレコード記述子を指す方法ほど望
ましくはないと考えられる。
る場合、REL.Dフィールドは、そのデータベース内
の対応する関係記述子の記号アドレスを含む。REL.
Dの記号アドレスは、他方のデータベースの名前と、そ
のデータベース内の対応する関係記述子を指すポインタ
からなる。
同じ親テーブルをもつ次の関係記述子を指す。REL.
Fフィールドは、外部キーの記述を含む。具体的には、
外部キーのフィールド数とレコード内の元のフィールド
位置を含む。
合、それを指すポインタを含む。制約が定義されると、
その外部キーに一致するBツリー・インデックス、また
はその一番左の列が外部キーに一致するインデックス・
キーをもつBツリー・インデックスが存在するかどうか
判定される。そのようなBツリー・インデックスが存在
する場合、そのインデックスの記述子を指すポインタが
REL.B中に置かれる。外部キー・インデックスが存
在すると、DELETE及びUPDATE演算子が親レ
コードのDELETEまたは基本キーのUPDATEに
続いて従属テーブルに直接アクセスする手段がもたらさ
れ、そのためそれらの実行速度が上がる。外部キー・イ
ンデックスが存在しない場合、基本キーのDELTEと
UPDATEが単にゆっくりと進行する。親レコードに
対するこうした活動のたびに一致する従属レコードを見
つけるため、テーブルがすっかり走査される。一致する
アクセス機構が後で定義される場合、関連するインデッ
クス記述子を指すポインタがここで供給される。
子を指すポインタを含む。これは、制約強制中に外部キ
ー・フィールドの属性を供給する。代わりに、外部キー
・フィールドの属性を、関係記述子中で複製することも
できるがこうした複製は、従属テーブルのレコード記述
子を指示する方法ほど望ましくはないと考えられる。
場合、REL.Iフィールドはそのデータベース内に対
応する関係記述子の記号アドレスを含む。REL.Dフ
ィールドの記号アドレスと同様に、このアドレスは、他
方のデータベースの名前とそのデータベース内の対応す
る関係記述子を指すポインタからなる。
現記述子と同じ従属テーブルをもつ次の関係記述子を指
すポインタを含む。
“CASCADE”、または“SET NULL”のど
れかを含む。同様に、REL.Lも、制約更新規則“R
ESTRICT”、“CASCADE”または“SET
NULL”のどれかを含む。
後に作成される。どちらの場合も、親テーブルがすでに
存在してなければならず、制約の外部キーと一致する基
本キーをもっていなければならない。制約に対する関係
記述子を作成する好ましい実施例の方法の疑似コードに
よる実施を、例1のプログラム断片に示す。親テーブル
と従属テーブルが共に定義されており、制約、親テーブ
ル及び従属テーブルの名前、外部キー定義及びDELE
TE及びUPDATE規則が入力されてプログラム断片
に利用できると仮定されている。
に分割できる。行104−107は、参照制約の親テー
ブルに関連する関係記述子及びフィールドを作成する。
行118−136は、従属テーブルに関連する制約の関
係記述子及びフィールドに関係する。親テーブルと従属
テーブルが同じデータベース中にあるとき、これら2つ
の部分はそのデータベース中に単一の関係記述子を作成
する。親テーブルと従属テーブルが別のデータベース中
にあるとき、行104−117は、親テーブルのデータ
ベース中で関係記述子を作成し、行118−136は、
従属テーブルのデータベース中に関係記述子を作成す
る。
列を親テーブルの基本キー列と突き合わせて検査するこ
とから始まる。親テーブルのレコード記述子が見つけら
れ(行100)、外部キー列の長さ及びタイプが、基本
キー列のそれと突き合わせて検査される(行101)。
それらが一致しない場合、作成処理は終了する(行10
2)。そうでない場合、従属テーブルのレコード記述子
が見つけられる。
で作成される。新しい空の関係記述子が割り振られて書
式化され(行104)、参照制約の名前がそのフィール
ドREL.A(行105)に記憶される。基本キー・イ
ンデックスが存在する場合、そのインデックス記述子を
指すポインタが、新しい関係記述子のフィールドRE
L.Bに記憶される(行106−107)。存在しない
場合は、上記のように、親テーブルに対するINSER
T動作は許されない。最後に、親テーブルのレコード記
述子を指すポインタ、が新しい関係記述子のREL.C
に記憶される(行108)。
ーブルのレコード記述子から始まる関係記述子の親連鎖
に接続される。親連鎖が空の場合、親レコード記述子の
フィールドREC.Aはゼロに等しい(行109)。こ
の場合、新しい関係記述子を指すポインタがそのフィー
ルドに記憶され(行110)、現関係記述子を親連鎖の
先頭に置く。そうではなく、親連鎖がすでに存在してい
る場合(行111)、削除動作中に最適な性能を維持す
るために、現関係記述子が、以下の命令が維持されるよ
うな連鎖に入れられる。DELETECASCADE関
係記述子、続いてDELETESET NULL関係記
述子、続いてDELETE RESTRICT関係記述
子。更新動作中に最適な性能をもたらす関係記述子の順
序付けも、望みの場合は維持できる。親連鎖への適切な
挿入点を決定するために、その前に新しい関係記述子を
挿入しなければならないような関係記述子が連鎖中で見
つかるまで、親連鎖が親レコード記述子中の原点から追
跡される(行113)。次いで、挿入点より前の関係記
述子のフィールドREL.Eが、現関係記述子を指すよ
うに設定される。連鎖への挿入を完了するために、NE
W REL.Eは、挿入点より後の関係記述子が存在す
る場合、その記述子を指す(行114)。そうでない場
合、NEW REL.Eはゼロのままとなる。
は、新しい関係記述子のフィールドREL.KとRE
L.Lに参照制約の削除規則及び更新規則を記憶するこ
とによって完了する。
る場合、行118−125で、他方のデータベース中に
第2の関係記述子が作成される。そうではなく、両方の
テーブルが同じデータベース中にある場合、これらの行
はスキップされる。その直後に、行126−136は、
他方のデータベースの第2の関係記述子が存在する場合
はそれに、またそうでない場合は親テーブルに関連する
元の関係記述子に、この従属テーブルに関連するフィー
ルドの値を記憶する。
ず従属テーブルのデータベース中の新しい関係記述子に
リンクできるように、親テーブルに関連する作成された
ばかりの関係記述子のフィールドのすべてを記憶するこ
とから始まる(行120)。次いでその新しい関係記述
子が割り振られて書式化され、そのフィールドがすべて
ゼロに設定される(行121)。親テーブルのデータベ
ース中の旧関係記述子のREL.Dフィールド中のポイ
ンタを、従属テーブルのデータベース中の現記述子に入
れることにより、データベース間の逆向きのリンク・ポ
インタ対の最初のポインタが、定位置に入れられる(行
122)。逆向きのポインタ対の第2のポインタは、従
属テーブルのデータベース中の現記述子のREL.Iフ
ィールド中のポインタを、親テーブルのデータベース中
の対応する記述子に記憶することにより、定位置に入れ
られる(行123)。最後に、参照制約名が、第2の関
係記述子のフィールドREL.Aに記憶される(行12
4)。
ーブルのデータベース中で新しく作成されたもの、また
は両方のテーブルが同じデータベース中にある場合は元
のもの)が初期設定される。外部キーの説明は、フィー
ルドREL.Fに記憶され(行126)、(任意選択
の)外部キー・インデックスを指すポインタが、フィー
ルドREL.Gに記憶される(行127−128)。最
後に、従属テーブルのレコード記述子を指すポインタ
が、フィールドREL.Hは記憶される(行129)。
関係記述子を、従属テーブルのレコード記述子から始ま
る従属連鎖に接続することである。現関係記述子は、常
に従属連鎖の先頭に置かれる。従属連鎖中に何らかの要
素がある場合、現関係記述子は連鎖中の第1の要素を指
す(行130−131)。次いで現関係記述子を指すポ
インタを従属レコード記述子のフィールドREC.Bに
記憶することにより、現関係記述子が従属連鎖の新しい
先頭になる(行132)。
記述子をそれに関連する親連鎖及び従属連鎖に接続する
ポインタを含めて、必要な情報が記述子のフィールドに
記憶される。
示するため、次に第1図ないし第6図の制約R1ないし
R6を作成する処理を説明する。第1図ないし第6図に
示す上記の列、キー及びインデックスを含むDEPAR
TMENT、EMPLOYEE及びPROJECTの各
テーブルがすでに作成され、制約の外部キーは常にその
記憶の基本キーに一致しているものと仮定する。参照制
約は、R1、R4、R2、R6、R5、R3の順に作成
される。この順序は、作成処理を最もよく示している。
ただ、制約は任意の順序で作成できることを了解された
い。制約R1−R6の関係記述子のフィールドの最終値
を、表3−6に列挙する。表3ないし表6に示した値
は、ユーザによって作成処理に入力されたものなので、
コンパイルされてない形、すなわち原始形である。デー
タベース・マネージャに記憶される実際の値は、システ
ムの動作中に制約の強制をより速くするためにコンパイ
ルされている。
MENTテーブル10だけに関係する。DEPARTM
ENTレコード記述子32が見つけられ(行100、1
03)、R1関係記述子50が割り振られて書式化され
る(行104)。制約名“R1”がフィールドREL.
Aに記憶され(行105)、基本キー・インデックスD
EPTNO38のインデックス記述子36を指すポイン
タが、フィールドREL.Bに記憶される(行106−
107)。DEPARTMENTレコード記述子32を
指すポインタがREL.Cに記憶される(行108)。
作成処理のこの時点で、DEPARTMENTテーブル
10はどの制約の親テーブルでもない。したがって、D
EPARTMENTレコード記述子32のフィールドR
EC.AがR1記述子50を指すように設定され(行1
09−110)、行111−115はスキップされる。
第2図に示すように、制約R1の削除規則及び更新規則
“CASCADE”と“RESTRIC T”が、それ
ぞれフィールドREL.KとREL.Lに記憶される
(行116−117)。
28中にあり(行118)、したがって行119−12
5はスキップされる。制約R1の外部キーは、DEPA
RTMENTテーブル10のただ1つの列、すなわち第
3図に示すようにテーブルの4列目にあるADMRDE
PT列を参照する。したがって、R1記述子50のフィ
ールドREL.Fは、“1,4”(行126)、すなわ
ち従属(DEPARTMENT)テーブルの列番号
“4”である“1”外部キー列を含む。制約R1の外部
キー・インデックスがないので、REL.Gはゼロのま
まとなる(行127−128)。フィールドREL.H
が、R1の従属レコード記述子、すなわちDEPART
MENTレコード記述子32を指すように設定される。
最後に、DEPARTMENTテーブル10はその従属
連鎖中にメンバーをもたないので、R1記述子50を指
すポインタ48が、DEPARTMENTレコード記述
子32のフィールドREC.Bに記憶される。
DEPARTMENTテーブル10を従属テーブルとす
る制約R4 22の関係記述子が作成される。これらの
テーブルのレコード記述子66、32が見つけられ(行
100、103)、R4関係記述子56が割り振られ、
書式化されて、ゼロに設定される(行104)。制約名
“R4”がREL.Aに記憶され(行105)、EMP
NO基本キー・インデックス記述子60を指すポインタ
がREL.Bに記憶される(行106−107)。R4
関係記述子56はEMPLOYEE親連鎖の最初のメン
バーなので、EMPLOYEEレコード記述子56のR
EC.Aが、R4記述子を指すように設定される(行1
09−110)。R4削除規則及び更新規則、“SET
NULL”が、それぞれREL.KとREL.Lに記
憶される(行116−117)。行119−125はや
はりスキップされる。外部キー“MGRNO”は第3図
に示すように従属DEPARTMENTテーブル10の
3列目なので、REL.Fは“1,3”(行126)に
設定される。外部キー・インデックスがないので、RE
L.Gはゼロのままとなる。REL.Hが、従属DEP
ARTMENTレコード記述子32を指すように設定さ
れる(行129)。R4関係記述子56はDEPART
MENTレコード記述子32から始まる従属連鎖の最初
の要素なので(行130、132)、R4が記述子が、
その連鎖の最初の現要素であるR1記述子50の前に接
続される。すなわち、R4記述子56を指すポインタ
が、DEPARTMENTレコード記述子32のフィー
ルドREC.Bに記憶され、R4記述子56のフィール
ドREL.Jが、R1記述子50を指すように設定され
る(行132−136)。
22とは反対に、制約R2 18はその親テーブルと
してDEPARTMNETをもち、その従属テーブルと
してEMPLOYEEをもつ。R2関係記述子52を作
成するために、DEPARTMENT及びEMPLOY
EEレコード記述子32、66が見つけられ(行10
0、103)、R2記述子52が割り振られ、書式化さ
れて、ゼロに設定される(行104)。制約名“R2”
がREL.Aに記憶され(行105)、DEPTNO基
本キー・インデックス記述子44を指すポインタがRE
L.Bに記憶され(行106−107)、DEPART
MENT親レコード記述子32を指すポインタがRE
L.Cに記憶される(行108)。R2関係記述子52
はDEPARTMENT親連鎖の第2のメンバーなので
(行109、111)、R1関係記述子50(連鎖中の
最後の現メンバー)のREL.EがR2記述子を指すよ
うに設定される(行112−115)。R2削除規則及
び更新規則“SET NULL”と“CASCADE”
が、それぞれREL.KとREL.L(行116−11
7)に記憶される。行119−125はスキップされ
る。外部キー“WORKDEPT”は第4図に示すよう
にEMPLOYEEテーブル12の3列目なので、RE
L.Fは“1,3”に設定される(行126)。WOR
KDEPTインデックス64が制約R2の外部キー・イ
ンデックスとして働くことができるので、REL.G
が、WORKDEPTインデックス記述子62を指すよ
うに設定される(行127−128)。REL.Hが、
EMPLOYEE従属レコード記述子32を指すように
設定される(行129)。R2関係記述子56がEMP
LOYEEレコード記述子66から始まる従属連鎖の最
初の要素なので、R2記述子を指すポインタが、EMP
LOYEE記述子66のフィールドREC.Bに入れら
れる(行130−131)。
は自己参照制約なので、PROJECTテーブル10だ
けに関係する。PROJECTレコード記述子76が見
つけられると(行100、103)、R6関係記述子7
8が割り振られ書式化される(行104)。制約名“R
6”がフィールドREL.Aに記憶され(行105)、
PROJNO基本キー・インデックス記述子74を指す
ポインタがフィールドREL.Bに記憶され(行106
−107)、PROJECTレコード記述子76を指す
ポインタがREL.Cに記憶される(行108)。作成
処理のこの時点でPROJECTテーブル10はどの制
約の親テーブルでもないので、PROJECTレコード
記述子76のフィールドREC.Aが、R6関係記述子
78を指すように設定される(行109−110)。R
6削除規則及び更新規則“CASCADE”と“RES
TRICT”が、それぞれフィールドREL.KとRE
L.Lに記憶される(行116−117)。親テーブル
も従属テーブも同じデータベース(B)にあるので、行
119−125はスキップされる。外部キー列MAJP
ROJがPROJECTテーブルの4列目なので、
“1,5”がR6記述子78のREL.Fに記憶され
る。R6の外部キー・インデックスはないので、RE
L.Gはゼロのままとなる。(行127−128)。フ
ィールドREL.Hが、PROJECTレコード記述子
76を指すように設定される。最後に、PROJECT
従属連鎖にはまだメンバーがないので、PROJECT
レコード記述子76のREC.Bが、R6記述子78を
指すように設定される。
0とB30中で1つずつ作成される。前と同様に、EM
PLOYEE及びPROJECTレコード記述子が見つ
けられる(行100、103)。まず、R5関係記述子
70が、R5の親テーブルがあったデータベース、すな
わちデータベースA28中で作成される(行104)。
制約名“R5”がREL.Aに記憶され(行105)、
EMPNO基本キー・インデックス記述子60を指すポ
インタがREL.Bに記憶され(行106−107)、
EMPLOYEE親レコード記述子66を指すポインタ
がREL.Cに記憶される(行108)。このR5関係
記述子52はEMPLOYEE親連鎖中の第2のメンバ
ーなので(行109、111)、R4記述子56に続い
て、R4記述子のREL.EがデータベースA28の現
R5記述子を指すように設定される(行112−11
5)。R5削除規則及び更新規則“RESTRICT
“と“RESTRICT”が、それぞれREL.KとR
EL.Lに記憶される(行116−117)。
に対し実行される。というのは、そのテーブルが別のデ
ータベースにあるためである(行118)。データベー
スA28の最初のR5関係記述子70が保持され(行1
20)、データベースB30の第2のR5記述子80が
割り振られてゼロに書式化され、制約名“R5”が第2
の記述子のフィールドREL.Aに記憶される(行12
2)。第1のR5記述子70から第2のR5記述子80
に向かうポインタが設定され(行123)、また第2の
R5記述子から第1のR5記述子に戻るポインタが設定
される(行124)。従属(PROJECT)テーブル
に関連する第2のR5記述子80のフィールドが充填さ
れる。REL.Fは、外部キーRESPEMPがPRO
JECTテーブル14の4列目であることを示す値
“1,4”を受け取る。外部キー・インデックスがない
ので、REL.Gはゼロのままとなる。REL.HがP
ROJECTレコード記述子76を指すように設定され
る。最後に、PROJECTレコード記述子76のRE
C.Bフィールドを、第2のR5記述子を指すように変
更し、第2のR5記述子のREL.JフィールドをR6
関係記述子78を指すように変更することにより、デー
タベースB30の第2のR5記述子が、PROJECT
従属連鎖の先頭に連鎖される。
るものである。制約R5と同様に、制約R3 20はデ
ータベースAとB 28、30の間にまたがるので、各
データベース中に1つずつ2つの関係記述子が作成され
る。DEPARTMENT及びPROJECTレコード
記述子が見つけられ(行100、103)、最初のR5
関係記述子54がデータベースA28中で作成される
(行104)。制約名“R3”がREL.Aに記憶され
(行105)、DEPTNO基本キー・インデックス記
述子36を指すポインタがREL.Bに記憶され(行1
06−107)、DEPARTMENT親レコード記述
子32を指すポインタがREL.Cに記憶される(行1
08)。R2記述子52のREL.EがデータベースA
28中の現R3記述子54を指すように設定される(行
112−115)。R3削除規則及び更新規則“RES
TRICT”及び“RESTRICT”が、それぞれR
EL.KとREL.Lに記憶される(行116−11
7)。
ると、データベースA28の第1のR3関係記述子54
が保持されて(行120)、データベースB30の第2
のR3記述子55が割り振られてゼロ書式化される(行
121)。制約名“R3”が第2の記述子のフィールド
REL.Aに記憶される(行122)。第1のR3記述
子54から第2のR3記述子55に向かうポインタが設
定され(行123)、第2のR3記述子から第1のR3
記述子に戻るポインタが設定される(行124)。従属
(PROJECT)テーブルに関連する第2のR3記述
子のフィールドが充填される。REL.Fは、外部キー
RESPDEPTがPROJECTテーブル14の4列
目であることを示す値“1,4”を受け取る。外部キー
・インデックスがないので、REL.Gはゼロのままと
なる。REL.HがPROJECTレコード記述子76
を指すように設定され、第2のR3記述子55がPRO
JECT従属連鎖の先頭に連鎖される。
3ないし表6に示す。
は、システム動作中にデータベース・マネージャに記憶
されるコンパイルされたオブジェクトである。これはコ
ンピュータの高速メモリに記述子を保持し、したがって
記述子に対するアクセスとそれらの制約の強制をきわめ
て迅速に行なうことが可能になる。
ブルの名前、外部キー、及びユーザによって指定される
規則からなる。この入力は、ユーザの元の原始定義ステ
ートメントから誘導され、構文上及び論理上正しいかど
うか検査されている。この検査は疑似処理モジュールで
実行される。本発明の好ましい実施例の事前処理モジュ
ールの疑似コードによる実施を例2に示す。
テップは、原始定義ステートメントを解析して解析木に
することである。原始定義ステートメントの要素は、参
照制約のメタ・データを含む。ステートメントの構文、
すなわちその予約ワードの書式と使用が検査される(行
200)。構文エラーが検出された場合、エラー・メッ
セージが生成されて、事前処理が終了する。そうでない
場合、原始定義ステートメントの要素がトークンに変換
され(行203)、トークンが、元のステートメントの
要素の文字列よりはるかに扱いやすいN枝解析木(行2
04)に配列される。トークンは予約ワードとオブジェ
クト名から構成される。行204で解析木が作成される
と、予約ワードが予約ワードに対応する内部表示に変換
される。オブジェクト名は、以下に説明するように、行
211で内部記号形式に変換されるまで、解析木中でテ
キスト形式のままである。
と、その制約の解析木によって表されるメタ・データに
対応する外部キー及び規則の記述を生成する。この時点
で、既存の関係と現関係の相互作用によって生じる論理
的矛盾が検出され(行205)、事前処理が終了され
て、適切なエラー・メッセージが生成される(行206
−207)。論理的矛盾が検出されない場合、現関係に
必要なオブジェクトが存在するかどうか別の検査が行な
われる(行208)。これは、データベースのテキスト
記述を含むデータベース・カタログを検査することによ
って行なわれる。その関係が必要とするオブジェクトが
存在しない場合(行209)、事前処理が終了されて、
エラー・メッセージが生成される(行210)。そうで
はなく、この最終検査に合格した場合、解析木の記号名
が(テーブル名やインデックス名などの)内部名に変換
される(行211)。次に、例1のプログラム断片が呼
び出されて(行212)、変換された内部テーブル名と
行200−211の事前処理によって作成された関係記
述とから、コンパイルされたオブジェクティブ関係記述
子を作成する。例1のプログラム断片でコンパイルされ
た記述子が作成された後、参照制約のメタ・データを表
す内部名が、テキスト形式に変換しデータベース・カタ
ログに挿入するために、データベース記述子マネージャ
に戻される(行213)。
なわれると、そのテーブルの関係記述子の従属連鎖が追
跡され、見つかった制約が強制される。まず、そのテー
ブルのレコード記述子が見つけられる。レコード記述子
のフィールドREC.Bがゼロの場合、従属連鎖は空で
あり、それ以上の動作は不要である。
合、そこから始まる関係記述子の連鎖が追跡されて処理
される。こうして見つかった各関係記述子ごとに、フィ
ールドREL.Fの外部キーの記述を使って、ロードま
たは挿入されているレコードに含まれる外部キーが作成
される。その結果得られる外部キー値が空でない場合、
それを基本キー・インデックスに対する探索引数として
使って、親テーブルに一致する基本キー値をもつ行が存
在することが検証される。そうした行が見つからなかっ
た場合、挿入またはロードされる新しい行はその関係記
述子の参照制約に違反しており、動作は不許可になる。
しかし、従属連鎖中のすべての関係記述子が満足される
場合、INSERTまたはLOADの実行が許される。
ブルのレコード記述子のREC.Aフィールドにアンカ
ーされた関係記述子の親連鎖が追跡されて処理される。
親連鎖上にある各関係記述子を使って、適用すべきUP
DATE規則が決定され、従属テーブルが決定され、更
新中の基本キーと一致する外部キーをもつ従属行が見つ
けられる。UPDATE動作は、「参照一貫性」の項で
述べたのとほぼ同様に、このようにして見つかったUP
DATE規則を強制することによって、許され、あるい
は不許可になる。UPDATE規則が“CASCAD
E”である場合、このようにして見つかった各従属テー
ブルの親連鎖も、上記のように追跡されて処理される。
アンカーされた関係記述子の従属連鎖が追跡されて処理
される。修正フィールドを含む外部キーを記述する各関
係記述子は、更新された外部キー値を構成するのに使用
される。更新された値が空でない場合は、それを関係記
述子中で識別された基本キー・インデックスに対する検
索引数として使って、更新された外部キー値と一致する
基本キー値をもつ親行が存在することを検証する。従属
連鎖上のどの関係記述子に対してもそのような行が見つ
からない場合、UPDATE動作は不許可になる。
REC.Aにアンカーされた関係記述子の親連鎖が追跡
されて処理される。親連鎖上にある各関係記述子を使っ
て、適用すべきDELETE規則が決定され、従属テー
ブルが識別され、削除中の行の基本キー値と一致する外
部キー値をもつ従属行が見つけられる。やはり「参照一
貫性」の項で述べたのとほぼ同様に、関係記述子のRE
L.Kフィールドに記憶された特定のDELETE規則
に応じて、DELETE動作が実行され、あるいは不許
可になる。DELETE規則が“CASCADE”であ
る場合、そのように見つけられた各従属テーブルの親連
鎖も上記のように追跡されて処理される。
示すブロック図である。このシステムは少なくとも2つ
のリレーショナル・テーブル90と、そのリレーショナ
ル・データベース間の参照制約を記述する少なくとも1
つの関係記述子91と、リレーショナル・テーブルと関
係記述子の間のアクセス・パスを提供するレコード記述
子92と、リレーショナル・テーブルが修正されたとき
にシンボリック・ポインタを介して関係記述子をアクセ
スするためのアクセス手段93と、リレーショナル・テ
ーブルの修正に基づいて関係記述子によって記述される
参照制約を強制する手段94とを含む。
について説明したが、本発明の精神と範囲から逸脱せず
に、様々な変更を加えることができる。たとえば、記号
ポインタの代わりにオフセット、直接ポインタまたは記
号位置を使って、レコード、インデックス及び関係記述
子にアクセスすることができる。したがって、本発明の
保護範囲は、特許請求の範囲によってのみ限定される。
ステムにおける参照一貫性を高速かつ効率よく実施する
ことができる。
のテーブルである。 第2図は、第1図の参照制約の指定を示すリストであ
る。 第3図は、その基本キーと外部キー及びサンプル・デー
タを含む第1図のDEPARTMENTテーブルであ
る。 第4図は、その基本キーと外部キー及びサンプル・デー
タを含む第1図のEMPLOYEEテーブルである。 第5図は、その基本キーと外部キー及びサンプル・デー
タを含む第1図のPROJECTテーブルである。 第6図は、第1図ないし第5図のテーブルの、本発明に
よる目的レコード、インデックス及び関係記述子の概略
図である。 第7図は、本発明に従うリレーショナル・データベース
管理システムを示すブロック図である。
Claims (1)
- 【請求項1】(a)データ・レコードを含む第1のテーブ
ルと、 (b)データ・レコードを含む第2のテーブルと、 (c)データ・レコードを含む第3のテーブルと、 (d)第1のテーブル及び第2のテーブルの間のポインタ
接続を有する、第1及び第2のテーブル間での第1の参
照制約のメタ・データを記述するための第1の関係記述
子であって、該メタ・データは前記第1の参照制約の親
テーブルと従属テーブル及び基本キーと外部キーを含
み、前記第1の関係記述子はデータベース管理システム
内の独立したオブジェクトであり、 (e)2つの第1のテーブルのうちの1つ及び第3のテー
ブルの間のポインタ接続を有する、2つの第1のテーブ
ルのうちの1つ及び第3のテーブル間での第2の参照制
約のメタ・データを記述するための第2の関係記述子で
あって、該メタ・データは前記第2の参照制約の親テー
ブルと従属テーブル及び基本キーと外部キーを含み、前
記第2の関係記述子はデータベース管理システム内の独
立したオブジェクトであり、 (f)前記第1及び第2の関係記述子をそれぞれの親テー
ブルに接続する第1の連鎖と、 (g)前記第1及び第2の関係記述子をそれぞれの従属テ
ーブルに接続する第2の連鎖と、 (h)前記いずれかのテーブルが修正されるときに前記第
1及び第2の関係記述子にアクセスする手段と、 (i)こうした修正に基づく第1及び第2の関係記述子に
よって記述される参照制約を強制する手段と を含む、リレーショナル・データベース管理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US24904988A | 1988-09-23 | 1988-09-23 | |
US249049 | 1988-09-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH02116973A JPH02116973A (ja) | 1990-05-01 |
JPH0652531B2 true JPH0652531B2 (ja) | 1994-07-06 |
Family
ID=22941844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1245366A Expired - Lifetime JPH0652531B2 (ja) | 1988-09-23 | 1989-09-22 | リレーシヨナル・データベース管理システム |
Country Status (7)
Country | Link |
---|---|
US (1) | US5133068A (ja) |
EP (1) | EP0360387B1 (ja) |
JP (1) | JPH0652531B2 (ja) |
AU (1) | AU617846B2 (ja) |
BR (1) | BR8904808A (ja) |
CA (1) | CA1325681C (ja) |
DE (1) | DE68926422T2 (ja) |
Families Citing this family (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU646408B2 (en) * | 1989-09-01 | 1994-02-24 | Objectstar International Limited | A system for program execution on a host data processing machine |
CN1029050C (zh) * | 1989-10-13 | 1995-06-21 | 国际商业机器公司 | 在数据库系统中强化实施参照约束 |
JPH03130874A (ja) * | 1989-10-17 | 1991-06-04 | Fujitsu Ltd | リレーショナル・データベースの検索処理方式 |
US5448726A (en) * | 1989-10-23 | 1995-09-05 | International Business Machines Corporation | Data base management system with data dictionary cache including a single loadable object descriptor |
US5410704A (en) * | 1989-11-30 | 1995-04-25 | Motorola, Inc. | Table modifiable edit functions with order-effective edit rules |
GB9105278D0 (en) * | 1990-04-27 | 1991-04-24 | Sun Microsystems Inc | Method and apparatus for implementing object-oriented programming using unmodified c for a window-based computer system |
US5604899A (en) | 1990-05-21 | 1997-02-18 | Financial Systems Technology Pty. Ltd. | Data relationships processor with unlimited expansion capability |
JPH0776950B2 (ja) * | 1990-06-22 | 1995-08-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及び装置 |
US5319777A (en) * | 1990-10-16 | 1994-06-07 | Sinper Corporation | System and method for storing and retrieving information from a multidimensional array |
JP3396479B2 (ja) * | 1991-08-07 | 2003-04-14 | ユニシス・コーポレイション | データファイルに複数オブジェクト制約条件を課す方法 |
US5530854A (en) * | 1992-09-25 | 1996-06-25 | At&T Corp | Shared tuple method and system for generating keys to access a database |
US5414841A (en) | 1992-10-19 | 1995-05-09 | International Business Machines Corporation | Computerized system for representing data items using token identifiers |
US5809317A (en) * | 1992-12-30 | 1998-09-15 | Intel Corporation | Creating and maintaining hypertext links among heterogeneous documents by the establishment of anchors and connections among anchors |
US5497491A (en) * | 1993-01-26 | 1996-03-05 | International Business Machines Corporation | System and method for importing and exporting data between an object oriented computing environment and an external computing environment |
US5488722A (en) * | 1993-05-28 | 1996-01-30 | International Business Machines Corporation | System and method for automating implementation and execution of constraint most likely to be violated in a database |
US5701453A (en) * | 1993-07-01 | 1997-12-23 | Informix Software, Inc. | Logical schema to allow access to a relational database without using knowledge of the database structure |
US5579515A (en) * | 1993-12-16 | 1996-11-26 | Bmc Software, Inc. | Method of checking index integrity in a DB2 database |
US6163783A (en) * | 1993-12-16 | 2000-12-19 | Bmc Software, Inc. | Check data operation for DB2 |
US5519855A (en) * | 1994-01-14 | 1996-05-21 | Microsoft Corporation | Summary catalogs |
US5499359A (en) * | 1994-01-18 | 1996-03-12 | Borland International, Inc. | Methods for improved referential integrity in a relational database management system |
EP0679995B1 (en) * | 1994-04-26 | 2000-10-04 | Sun Microsystems, Inc. | Method and apparatus for encoding data to be self-describing |
US5513350A (en) * | 1994-05-27 | 1996-04-30 | At&T Corp. | Update constraints in transactions which may abort |
US5678038A (en) * | 1994-06-21 | 1997-10-14 | International Business Machines Corporation | Storing and retrieving heterogeneous classification systems utilizing globally unique identifiers |
US5603025A (en) * | 1994-07-29 | 1997-02-11 | Borland International, Inc. | Methods for hypertext reporting in a relational database management system |
US6301581B1 (en) * | 1994-08-01 | 2001-10-09 | Texas Instruments Incorporated | Method and system for managing access to a plurality of data objects |
CA2130065C (en) * | 1994-08-12 | 1999-03-02 | Michael Joel Cincinatus | Utilizing pseudotables as a method and mechanism for providing database monitor information |
US5706494A (en) * | 1995-02-10 | 1998-01-06 | International Business Machines Corporation | System and method for constraint checking bulk data in a database |
JP2947111B2 (ja) * | 1995-02-17 | 1999-09-13 | 日本電気株式会社 | 交換機のデータ引き継ぎ方法およびシステム |
US5692184A (en) | 1995-05-09 | 1997-11-25 | Intergraph Corporation | Object relationship management system |
US5815829A (en) * | 1995-07-19 | 1998-09-29 | Zargar; Dara | Job cost accounting data compression and indexing system and methods for doing the same |
US5778370A (en) * | 1995-08-25 | 1998-07-07 | Emerson; Mark L. | Data village system |
US5664173A (en) * | 1995-11-27 | 1997-09-02 | Microsoft Corporation | Method and apparatus for generating database queries from a meta-query pattern |
US6105025A (en) * | 1996-03-08 | 2000-08-15 | Oracle Corporation | Method for using an index as a workspace for deferred enforcement of uniqueness constraints |
US5721911A (en) * | 1996-06-25 | 1998-02-24 | International Business Machines Corporation | Mechanism for metadata for an information catalog system |
US5761678A (en) * | 1996-06-26 | 1998-06-02 | International Business Machines Corporation | Creation of clone storage area with identification of base storage area and deferred cloning of metadata |
US5778373A (en) * | 1996-07-15 | 1998-07-07 | At&T Corp | Integration of an information server database schema by generating a translation map from exemplary files |
US5899993A (en) * | 1996-08-07 | 1999-05-04 | Oracle Corporation | Method and apparatus for achieving an enforced and valid constraint state |
US5987455A (en) * | 1997-06-30 | 1999-11-16 | International Business Machines Corporation | Intelligent compilation of procedural functions for query processing systems |
US5963934A (en) * | 1997-06-30 | 1999-10-05 | International Business Machines Corporation | Intelligent compilation of scripting language for query processing systems |
US7127420B1 (en) * | 1997-08-01 | 2006-10-24 | Financial Systems Technology (Intellectual Property) Pty. Ltd. | Data processing system for complex pricing and transactional analysis |
US6304876B1 (en) | 1998-06-05 | 2001-10-16 | Computer Associates Think, Inc. | Method for enforcing integrity constraints in a database table using an index |
JP4982819B2 (ja) * | 1998-07-10 | 2012-07-25 | インタレクチュアル ヴェンチャーズ ファースト エルエルシー | 情報管理装置および方法、記録媒体 |
US6389414B1 (en) * | 1998-09-21 | 2002-05-14 | Microsoft Corporation | Internal database validation |
US6850951B1 (en) * | 1999-04-16 | 2005-02-01 | Amdocs Software Systems Limited | Method and structure for relationally representing database objects |
GB2351368A (en) * | 1999-06-21 | 2000-12-27 | Zygon Systems Ltd | Product catalogue production system |
JP3612449B2 (ja) * | 1999-07-27 | 2005-01-19 | エヌイーシーシステムテクノロジー株式会社 | 分散データベースシステムにおける主従関係情報同期方式 |
US6339777B1 (en) | 1999-07-30 | 2002-01-15 | International Business Machines Corporation | Method and system for handling foreign key update in an object-oriented database environment |
US6453314B1 (en) | 1999-07-30 | 2002-09-17 | International Business Machines Corporation | System and method for selective incremental deferred constraint processing after bulk loading data |
US6457003B1 (en) | 1999-08-16 | 2002-09-24 | International Business Machines Corporation | Methods, systems and computer program products for logical access of data sources utilizing standard relational database management systems |
DE10040987B4 (de) * | 1999-09-29 | 2006-10-12 | International Business Machines Corp. | Verfahren und Vorrichtung für übereinstimmende Aktualisierungen von redundanten Daten in relationalen Datenbanken |
US6460028B1 (en) | 1999-12-03 | 2002-10-01 | T4Mupj2, Llc | System and method for data organization |
US6996566B1 (en) | 2000-11-21 | 2006-02-07 | International Business Machines Corporation | Method and system for an object model with embedded metadata and mapping information |
US7620665B1 (en) | 2000-11-21 | 2009-11-17 | International Business Machines Corporation | Method and system for a generic metadata-based mechanism to migrate relational data between databases |
CA2326805A1 (en) * | 2000-11-24 | 2002-05-24 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for deleting data in a database |
US20020099745A1 (en) * | 2001-01-23 | 2002-07-25 | Neo-Core, L.L.C. | Method and system for storing a flattened structured data document |
US7162478B2 (en) * | 2001-02-28 | 2007-01-09 | International Business Machines Corporation | System and method for correlated fragmentations in databases |
US6820080B2 (en) * | 2001-03-26 | 2004-11-16 | International Business Machines Corporation | Dependent object processing for triggers |
US20030023584A1 (en) * | 2001-04-27 | 2003-01-30 | Brandin Christopher Lockton | Universal information base system |
US7054853B2 (en) * | 2001-07-02 | 2006-05-30 | Sun Microsystems, Inc. | Methods and system for efficient association traversals |
US7035859B2 (en) * | 2001-08-08 | 2006-04-25 | International Business Machines Corporation | Method and system for intra-table referential integrity for relational database systems |
US7885830B2 (en) * | 2002-08-27 | 2011-02-08 | United Services Automobile Association | Infrastructure method and system for managing deductibles for insurance policies |
US7634501B2 (en) * | 2003-02-05 | 2009-12-15 | Next Generation Software | Method and apparatus for mediated cooperation |
US20040236706A1 (en) * | 2003-04-30 | 2004-11-25 | Fitch James Chester | Automated machinery lubrication service and maintenance planning system |
US7500226B2 (en) * | 2004-03-02 | 2009-03-03 | Microsoft Corporation | Efficient checking of state-dependent constraints |
WO2005086003A1 (ja) * | 2004-03-08 | 2005-09-15 | Annex Systems Incorporated | データベース・システム |
US7664790B2 (en) * | 2004-06-18 | 2010-02-16 | Bmc Software, Inc. | Cascade delete processing |
JP4494878B2 (ja) * | 2004-06-21 | 2010-06-30 | 三菱電機株式会社 | データ管理装置及びデータ管理方法及びプログラム |
US20060085464A1 (en) * | 2004-10-14 | 2006-04-20 | International Business Machines Corporation | Method and system for providing referential integrity constraints |
US7568224B1 (en) * | 2004-12-06 | 2009-07-28 | Cisco Technology, Inc. | Authentication of SIP and RTP traffic |
US7584204B2 (en) * | 2005-06-10 | 2009-09-01 | Microsoft Corporation | Fuzzy lookup table maintenance |
US7440956B2 (en) * | 2005-11-10 | 2008-10-21 | International Business Machines Corporation | Enforcing constraints from a parent table to a child table |
US9075831B2 (en) * | 2006-03-28 | 2015-07-07 | Oracle International Corporation | Method and apparatus for modifying a row in a database table to include meta-data |
US20090055418A1 (en) * | 2007-08-21 | 2009-02-26 | Mark Gregory Megerian | Automatic cascading copy operations in a database with referential integrity |
WO2009032770A2 (en) * | 2007-08-29 | 2009-03-12 | Partnet, Inc. | Systems and methods for providing a confidence-based ranking algorithm |
US20110302220A1 (en) * | 2010-06-08 | 2011-12-08 | Albert Marcella | Sql processing for data conversion |
US8533240B2 (en) * | 2010-09-22 | 2013-09-10 | International Business Machines Corporation | Write behind cache with M-to-N referential integrity |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4498145A (en) * | 1982-06-30 | 1985-02-05 | International Business Machines Corporation | Method for assuring atomicity of multi-row update operations in a database system |
US4631673A (en) * | 1985-01-22 | 1986-12-23 | International Business Machines Corporation | Method for refreshing multicolumn tables in a relational data base using minimal information |
US4870397A (en) * | 1986-11-05 | 1989-09-26 | Grumman Aerospace Corporation | System for producing graphic displays and programs for generating same |
US4918593A (en) * | 1987-01-08 | 1990-04-17 | Wang Laboratories, Inc. | Relational database system |
WO1989003567A1 (en) * | 1987-10-09 | 1989-04-20 | Nucleus International Corporation | A relational database using identifiers |
AU632267B2 (en) * | 1987-10-09 | 1992-12-24 | Nucleus International Corporation | A relational database representation with relational database operation capability |
US4947320A (en) * | 1988-07-15 | 1990-08-07 | International Business Machines Corporation | Method for referential constraint enforcement in a database management system |
US5043872A (en) * | 1988-07-15 | 1991-08-27 | International Business Machines Corporation | Access path optimization using degrees of clustering |
US4933848A (en) * | 1988-07-15 | 1990-06-12 | International Business Machines Corporation | Method for enforcing referential constraints in a database management system |
-
1989
- 1989-07-12 EP EP89307079A patent/EP0360387B1/en not_active Expired - Lifetime
- 1989-07-12 DE DE68926422T patent/DE68926422T2/de not_active Expired - Lifetime
- 1989-08-02 CA CA000607387A patent/CA1325681C/en not_active Expired - Lifetime
- 1989-08-11 AU AU39536/89A patent/AU617846B2/en not_active Ceased
- 1989-09-22 BR BR898904808A patent/BR8904808A/pt not_active IP Right Cessation
- 1989-09-22 JP JP1245366A patent/JPH0652531B2/ja not_active Expired - Lifetime
-
1991
- 1991-08-28 US US07/754,227 patent/US5133068A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE68926422D1 (de) | 1996-06-13 |
BR8904808A (pt) | 1990-05-01 |
EP0360387A2 (en) | 1990-03-28 |
AU3953689A (en) | 1990-03-29 |
DE68926422T2 (de) | 1996-11-07 |
CA1325681C (en) | 1993-12-28 |
JPH02116973A (ja) | 1990-05-01 |
US5133068A (en) | 1992-07-21 |
EP0360387A3 (en) | 1992-10-14 |
AU617846B2 (en) | 1991-12-05 |
EP0360387B1 (en) | 1996-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0652531B2 (ja) | リレーシヨナル・データベース管理システム | |
US7467163B1 (en) | System and method to manipulate large objects on enterprise server data management system | |
US5592661A (en) | Detection of independent changes via change identifiers in a versioned database management system | |
US5857182A (en) | Database management system, method and program for supporting the mutation of a composite object without read/write and write/write conflicts | |
US5734899A (en) | Device for managing data in a version | |
US6442543B1 (en) | Method and apparatus for changing temporal database information | |
JP3251837B2 (ja) | データベースにおける制約違反の検査方法及びそのシステム | |
US6826604B2 (en) | Input/output device information management system for multi-computer system | |
US5499365A (en) | System and method for controlling versions of objects in an object oriented computing environment | |
US6003039A (en) | Data repository with user accessible and modifiable reuse criteria | |
US8332359B2 (en) | Extended system for accessing electronic documents with revision history in non-compatible repositories | |
CA1316262C (en) | Version management tool | |
Engles | A tutorial on data base organization | |
US6556986B2 (en) | Database management method of invoking a function retrieving index type definition, cataloging particular index which has not yet been supported by a database system | |
US7103588B2 (en) | Range-clustered tables in a database management system | |
US20050015674A1 (en) | Method, apparatus, and program for converting, administering, and maintaining access control lists between differing filesystem types | |
US5551029A (en) | Method for associating integrity maintenance constraints with data object classes in an object-oriented database | |
US20040267747A1 (en) | Transaction processing system supporting concurrent accesses to hierarchical data by transactions | |
US20050071359A1 (en) | Method for automated database schema evolution | |
CA2143288A1 (en) | Data storage system with set lists which contain elements associated with parents for defining a logical hierarchy and general record pointers identifying specific data sets | |
US5764978A (en) | Database system having a hierarchical network database and a corresponding relational database | |
JPH0760407B2 (ja) | データベース・システムの動作方法 | |
JPH06259301A (ja) | データベースシステム退避装置及びデータベースシステム復元装置及びデータベースシステム移行装置 | |
US7328212B2 (en) | Generalized method for modeling complex ordered check constraints in a relational database system | |
US7653663B1 (en) | Guaranteeing the authenticity of the data stored in the archive storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070706 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080706 Year of fee payment: 14 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080706 Year of fee payment: 14 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090706 Year of fee payment: 15 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100706 Year of fee payment: 16 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100706 Year of fee payment: 16 |