JPH0239372A - データベース・システムの動作方法 - Google Patents

データベース・システムの動作方法

Info

Publication number
JPH0239372A
JPH0239372A JP1096580A JP9658089A JPH0239372A JP H0239372 A JPH0239372 A JP H0239372A JP 1096580 A JP1096580 A JP 1096580A JP 9658089 A JP9658089 A JP 9658089A JP H0239372 A JPH0239372 A JP H0239372A
Authority
JP
Japan
Prior art keywords
record
constraint
referential
foreign key
line number
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.)
Granted
Application number
JP1096580A
Other languages
English (en)
Other versions
JPH0760407B2 (ja
Inventor
Richard A Crus
リチヤード・アンソニイ・クラス
Robert William Engles
ロバート・ウイリアム・エンジエルズ
Donald J Haderle
ドナルド・ジエームズ・ハデイール
Howard W Herron
ハワード・ウインズトン・ヘロン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22819577&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPH0239372(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0239372A publication Critical patent/JPH0239372A/ja
Publication of JPH0760407B2 publication Critical patent/JPH0760407B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は、リレーショナル・データベース管理システム
に関し、特に、リレーショナル・データベースにおける
データの論理的に矛盾のない状態を、参照一貫性により
保持する技術に関する。
B、従来技術 データベース管理システムとは、データを記録・保持す
るためのコンピュータ・システムである。
リレーショナル・データベース管理システムにおけるデ
ータは、横方向の行と縦方向の列を持つ「テーブル」の
中に保管される。リレーショナル・データベースの考え
方は、E、F、コツト著「大規模共用データ・バンクの
ためのデータのリレーショナル・モデル(A Re1a
tional Model of Datafor L
arge 5hared Data Banks ) 
J、CACM、第13巻第6号(1970年6月)で紹
介され、E、F、コツト著「より多くの意味を扱うため
のデータベース・リレーショナルモデルの拡張(Ext
ending  the  Database  Re
1ational  lイodel  t。
Capture t4ore Meaning ) J
、ACM  TODS。
第4巻第4号(1979年12月)により拡張された。
インターナショナル・ビジネス・マシーンズ・コーポレ
ーションズ(IBM)社の製品「データベース2」は、
リレーショナル・データベース管理システムの典型例で
ある。
リレーショナル・データベースでは、「参照一貫性」の
機能が重要である。参照一貫性は、異なる2テーブル或
いは同一テーブルの関連列間におけるデータ値の一貫性
を確実にする。テーブル列間に要求される関連は「参照
制約」として知られる。「従属テーブル」の「外部キー
」値が、「親テーブル」のいずれかの行の「基本キー」
値として存在する場合か或いは、外部キーが空である場
合に、従属テーブルの行は制約に間し参照一貫性を持つ
、換言すれば従属テーブルの各行は、夫々対応する親フ
ァイルの親竹を持たなければならない。従属性の外部キ
ーが親テーブルの基本キー値と対応しないと、参照制約
が侵害され、それらのテーブルを含むデータベースの参
照一貫性が失われる。参照制約を実施してデータベース
の参照一貫性を保持するには、常に外部キー値が対応す
る基本キー値を持つようなシステムが確立されなくては
ならない。参照一貫性の実施時にはまた、基本キー値は
必ず一意的でなくてはならない。この特性は「実体一貫
性」として知られている。参照一貫性については、C,
J、ディト著「データベース・システム入門(An I
ntroduction to DatabaseSy
stems ) j第3版、アディソンーウェズリー出
版社(1981年)に説明されている。
参照一貫性のある実施形態では、テーブルの基本キー値
を素早く探すため、親テーブルの「基本キー・インデッ
クス」(又は「基本インデックス」)が用いられること
がある。一般にデータ処理システムにおけるインデック
スは、データ行の即時探索に用いられる。インデックス
はテーブルの行を、「インデックス・キー」の値に基づ
いた順序に従い順序付ける。基本インデックスは、基本
キーの各々の値がインデックス中で一意的であることを
要請することにより、親テーブル中の基本キー値の一意
性を強制する。同様に、従属テーブルの外部キーの「外
部キー・インデックス」は、ある外部キー値を即時に探
索するのに役立つ。
データベースのデータが操作された結果、基本又は外部
キーが影響を受ける場合には常に、参照制約が実施され
なければならない。構造化照会言語(SQL)を使用す
るリレーショナル・データベース管理システムでは、デ
ータは主にLOAD(読出し)指令、rNsERT(挿
入)指令、UPDATE(更新)指令、DELETE 
(削除)指令とその結果のオペレーションにより操作さ
れる。LOAD及びlN5ERTはいずれもデータベー
スにデータを追加する指令であるが、典型的にはLOA
Dは多数行を追加し、lN5ERTは数行追加する。U
PDATEはデータの1以上の行内容を変更する指令、
DELETEは1以上の行を削除する指令である。デー
タベースの参照一貫性を確実にするには、これらのオペ
レーションのいずれかが発生する場合には常に、当該性
を含む参照制約が実施されなければならない。従来技術
において、参照−質性実行及び参照制約実施の方法が種
々存在している。
ある従来技術の参照制約実施方式は、まず操作中(例:
請出し、挿入、更新、削除などのオペレーション中)に
発生する可能性のある制約侵害を検査し、侵害された制
約がなければ次に操作を実行する。実行にあたりトラン
ザクション或いは命令文(ステートメント)が与えられ
ると、各トランザクション或いは命令文毎にこの検査及
び実行の手順が行なわれる。−命令文は典型的には一行
または数行を操作する。−トランザクションは典型的に
は数個の命令文から成るので、より多数の行を操作する
ことになる。この従来技術では、データ上の各命令文或
いはトランザクション毎°に操作及び検査の段階が別々
に行なわれるため、データの2回のバス(pass )
が必要となる。各パスにおいて当該各行がアクセスされ
読み取られなくてはならず、はとんどのデータ処理シス
テムで操作時間が増大する。2回のパスの実行というの
は非効率的であり、システム・パフォーマンスの遅滞を
招く。
また別の従来技術では、上述の操作及び制約の検査の手
順が逆になるが、2回のバスを必要とする点では同様で
ある。この方式ではデータが操作されるまで制約は検査
されず、いずれかの制約が侵害された場合には全操作が
削除又は取消される。
ここでもまた数行にわたり操作及び制約の検査の段階が
別々に行なわれるため、処理時間が増大し、システム・
パフォーマンスに影響が出る。よって、データ内で単一
のパスのみを使用する参照制約実施方式が要求される。
参照一貫性に係るさらに別の従来技術は、親及び従属レ
コード間の制約を表す経路すなわち「リンク」と、親デ
ータへの基本アクセス経路とを一つにする。この「リン
ク式」参照制約の方式は典型的には、親から全従属レコ
ードへの連鎖リスト、或いは全従属レコードを指すべく
親をルートにしたB木を用いて実行される。この方式に
は不利な点がいくつかある。まずリンク式参照制約実施
では、自己参照及び循環制約を探知・解決する特別な方
法が必要となる点。次に、現存データへの制約の追加又
は削除はリンク自体を修正しないとできないが、リンク
修正にはデータの再構築が大抵必要となる点である。よ
って、データを再構築せず制約の修正が可能となる、効
率的な参照制約実施方式が要求される。
C0発明が解決しようとする問題点 本発明の目的は、データ更新にあたり2回のバスを必要
としない参照制約実施方式を提供するととである。
また本発明の目的は、自己参照及び循環制約が他の制約
と同様、特別な処置なしに実施できる参照制約実施方式
を提供することである。
D0問題点を解決するための手段 本発明は、参照制約実施の改良方式を提供することによ
り、前述の目的を達成する。本方式は、複数レコードに
影響を与えつるオペレーションに対応して、データ・レ
コードが操作されるデータベース管理システムのいずれ
にも有効である。本発明の改良方式では、他のレコード
が同−オペレーションにより操作される前に、各レコー
ドに関する参照制約を実施する。レコード挿入又は削除
後であるのに基本キー更新前であり外部キー更新後とい
う時に、制約を実施するのが本発明の特に有効な実行方
法である。
本発明の他の特徴及び利点については、後述実施例にお
ける詳細説明及び付記する図面により理解されよう。
E、実施例 E−1,用語 リレーショナル・データベース管理システムとは、参照
制約により関連付けられたテーブルの集合として表され
るデータを、記憶及び保持するコンピュータ・システム
である。第6図及び第2図は、6つの参照制約により関
連付けられた3つのテーブルを持つリレーショナル・デ
ータベース5を示す、DEPARTMENTテーブル1
0は、ある企業の各部門を番号DEPTNO及び名称D
EPTNAMEにより記述し、責任者MGRNO及び業
務報告を行なう上位部門の番号P D M RDEPT
を識別する。EMPLOYIEEテーブル12は、全従
業員を従業員番号EMPNOにて識別して基礎的人事情
報をリストし、従業員所属部門WORKDEPTt識別
する。PROJECTテーブル14は、この企業が現在
従事している各プロジェクトについて記述するもので、
プロジェクト番号PROJNO、プロジェクト名PRO
JNAME、担当従業員、担当部門及び日程をリストし
、個々のプロジェクトが属する主プロジェクトMA、y
pao、y@識別する。該テーブルのサンプル・データ
を第3図から第5図に示す。
第6図のテーブルは第2図に示すごとく6つの参照制約
によって、自己を含む相互が関連付けられている。制約
R116によれば、DEPARTMENTテーブル10
の上位部門ADMRDEPTは、DEPARTMENT
テーブルの有効な部門番号DEPTNOである必要があ
る。よって制約R116の親テーブルはDEPARTM
ENTであり、基本キーはDEPARTMENTテーブ
ルのDEPTNO列、基本インデックスはDEPTNO
インデックスである。制約R116の外部キーはDEP
ARTMENTテーブル10のADMRDEPT列であ
り、これによりDE PART M E N Tは親で
ありかつ従属テーブルとなる。
親及び従属テーブルが同一であるので、制約R116は
自己参照制約である。
制約R218によれば、EMPLOYEEテーブル12
(従属)の各従業員所属部門WORKDEPT(外部キ
ー)は、DEPARTMENTテーブル10(親)の有
効な部門番号DEPTNO(基本キー)である必要があ
る。制約R320によれば、PROJIECTテーブル
14の担当部門RESPDEPTは、DEPARTME
NTテーブル10の有効な部門番号DEPTNOである
必要がある。制約R422によれば、DEPARTME
NTテーブル10の部門責任者MGl’tNOは、EM
PLOYEEテーブル12の有効な従業員番号EMPN
Oである必要がある。制約R524によれば、PROJ
ECTテーブル14のプロジェクト担当従業員RESP
EMPは、EMPLOYEEテーブル12の有効な従業
員番号EMPNOである必要がある。最後に制約R62
6によれば、PROJECTテーブル14の主プロジェ
クトMAJ PROJはそれ自身が、PROJECTテ
ーブル14の有効なプロジェクト番号PROJNOであ
る必要がある。R6もまた自己参照制約である。
本記述に用いられる用語を要約すると、「行」はテーブ
ル内に存在しているとおりのレコードの外見上の形を言
い、「レコード」はデータベースに保管された行データ
の内部表現を指す。「親竹」は「親テーブル」の−行で
あり、1以上の従属行の外部キー値と対応する「基本キ
ー値」を持つ。
「従属行」は「従属テーブル」の−行であり、いくつか
の親竹の基本キー値と対応する「外部キー値」を持つ、
「自己参照制約」は同一テーブル内で定義された制約で
あり、すなわち外部キーが同一テーブルの基本キーを参
照する。自己参照テーブルには「自己参照行」が存在す
ることがあり、ここでは外部キーが同一行の基本キーと
対応する。
制約R116及びR626は共に自己参照である。「循
環」とは、その循環の中にあるテーブルがそれ自身の従
属テーブルとなるような制約の組である。制約R218
及びR422は循環を成す。循環内には行の循環が存在
することがあり、ある行がそれ自身の従属行となること
がある。
参照一貫性の支援にあたっては、自己参照制約及び循環
が特殊な問題をいくつか提起するが、これを解決するの
が本発明の特徴である。
「関連記述子」すなわち「制約記述子」は、単一の参照
制約を定義し、外部キーを構成する親及び従属テーブル
及び列を識別する。関連記述子はまた、親テーブルとそ
の基本キーの基本インデックスを識別し、その基本イン
デックスは基本キーの列を識別する。インデックスが外
部キーの列にも定義されていれば(これは任意)、関連
記述子は外部キー・インデックスも識別する。
関連記述子は、テーブルのレコード・タイプ記述子(テ
ーブル記述子と言うこともある)と連鎖しないのが望ま
しい。関連記述子がメモリー内制御ブロック中にあれば
、制約実施中に記述子に迅速なアクセスができる。しか
し、本発明方式使用の目的に対しては、該テーブル・レ
コードにて制約実施中に、データベース・テーブルに影
響を与える参照制約を定義する要素にアクセス可能であ
りさえすればよい。
E−2,レコード・レベル制約実施の概論本発明によれ
ば、参照制約は読出し、挿入、更新、削除などの指令に
よりレコード操作が行なわれる時に実施される。操作が
起動されると、そのレコードが存在するテーブルのテー
ブル記述子が調べられ、操作時に実施すべき参照制約が
あるかどうか検査される。制約の存在は、テーブルに対
する制約を表す最初の関連記述子の(テーブル記述子内
の)識別子により示される。
レコードに影響を与える参照制約が識別されると、その
参照制約が実施される。正確には、挿入、更新、削除な
どの各操作により検査のアルプリズムが異なる。各アル
プリズムの詳細は下記に示す。
レコード操作と関連する参照制約が侵害されると、侵害
探知までに命令文或いはトランザクション中に実行され
た操作は、すべて取消し或いは「撤回」され、制約侵害
を示すエラー戻りコードがユーザや適用業務プログラム
に対して出される。
第1図は、本発明による前記実施例の流れ図であり、リ
レーショナル・データベース・テーブルを操作する3つ
の主なSQL指令−−INSERT、UPDATE、D
ELETEに対するレコード・レベルの制約の実施方式
を示す。
E−3,挿入操作時の制約実施 第1図の参照番号28に示すごとく、テーブルに対し新
規レコード追加操作が行なわれるとその操作中に、他レ
コードと関係なく各レコードの追加及び制約実施が行な
われる。まず30でテーブルにレコードが追加され、テ
ーブル内の全インデックスが新規レコードに結合される
、すなわち新規レコード人力の情報が各インデックスに
挿入される。次に32で従属レコードを含む各制約に対
し参照制約検査が行なわれ、新規挿入レコードの外部キ
ー値とマツチする基本キー値を持つレコードが親テーブ
ルに確実にあるが調べられる。これは、挿入行の外部キ
ーとマツチするキー値について、親テーブルの基本イン
デックス(関連記述子内に識別される)を検査すること
により行なわれる。
マツチするインデックス・キーが見つかると、外部キー
とマツチする基本キーを親テーブルの一行が持つことに
なり、参照制約が満たされる。以降この検査は、挿入レ
コードに関する各制約に対して繰り返される。
34で、参照制約に従属する挿入レコードについてマツ
チする基本キー値が見つからなかった場合、制約は侵害
され、36のエラー処理が行なわれる。エラー処理は以
下の手順より成る。全テーブル及びインデックスに関す
る、挿入指令により発生したエラー地点までの操作を撤
回し、ユーザにエラー戻りコードを返す、中断された指
令及び操作撤回の方法は、従来技術により熟知されると
ころである。
全レコードが制約侵害なく挿入されると操作は37で終
了となり、データベース更新が完了する。
最初に挿入し次に検査するという本発明の方式により、
特別なプログラミングの必要なく自己参照行を処理でき
る。基本キー及び関連するインデックス項目を最初に挿
入することで、挿入後に制約検査が行なわれると常に、
同一行の新規外部キーとマツチする基本キーが見つかる
こととなり、制約が満たされる。
第1表に、本発明における挿入時参照制約実施方式の、
擬似コードによる実施性態を示す。
第1表 コードによる  時 照制約 101DO挿入操作に含まれる各レコードに対し。
102  テーブルにレコードを挿入。
103  全インデックスにレコードを結合。
1041Fレコードがいずれかの関連記述子における従
属行ならばTHEN。
DO該レコードが従属行である各関連記述子に対し。
レコードの外部キーを取り出す。
IP外部キーが空でなければTHEN。
Do、/=マツチする基本キー=/ /=の存在検査    =/ 親テーブルの基本キー・インデッ クスを調べ、基本キー=外部キー であるインデックス項目を探す。
IF項目がなければTHEN。
/=基本キーが見つから=/ /=ない場合     =/ 111D○、/=参照制約侵害処理 =/ 外部キー・エラーを示す戻り コードをSET。
GOTO共通の中断処理手順。
END。
E L S E/=基本キーがあれば =/ /=エラー処理不要=/ DO何もしない。
END。
END。
ELSE/=外部キー空がならば=/ /=制約検査不要   =/ DO何もしない。
END。
END  Doレコードが従属性である各関連記述子に
対して。
ELSE  /=ニレコード従属でなげ=//=れば制
約検査不要  =/ Do何もしない。
125     END。
126END  Do挿入操作に含まれる全レコードに
対して。
第1表の行番号101から126は、挿入指令や操作に
含まれる各レコードをテーブルに挿入するためのDOル
ープを成す。まず行番号102で、テーブルへの実際の
各レコード挿入を行なう。重要なのは、参照制約の検査
以前にレコード挿入が行なわれる点である。これにより
特別な処理やコードなしに、共通のアルゴリズムによっ
て自己参照行制約を実施できる。
行番号103で、レコード挿入が行なわれるテーブル内
に定義済の全インデックスに、レコードを結合する。「
インデックスに結合する」とは、新規レコードを参照す
る項目をインデックスに挿入して、そのインデックスを
レコード探索経路として用いられるようにするという意
味である。重要なのは、参照制約の検査以前にインデッ
クスを結合する点である。これにより行番号109で基
本インデックスを探索すると、基本キーが同一の新規挿
入行内で外部キーとマツチするような自己参照行が見つ
かる。
行番号104でテーブルのレコード・タイプ記述子を検
査し、テーブルがいずれかの関連(参照制約)において
従属であるかどうか判断する。レコードがいずれの関連
においても従属でなければ、制約実施コード(行番号1
05から122)はスキップされて何も行なわず(行番
号124及び125)、次の挿入レコードを処理する。
レコードがいずれかの関連において従属であれば(行番
号104)、その関連により定義された制約を行番号1
05から121において実施する。
行番号105から121は、新規挿入レコードについて
、レコードを含むテーブルが従属である各制約を実施す
るためのDoループである。挿入操作時に制約を実施す
るにあたり、挿入レコードの各外部キー値が、関連する
制約の親テーブルレコードの基本キー値とマツチする必
要がある。関連記述子が従属テーブルの外部キー列を識
別するので、行番号106において挿入レコードの外部
キーを取り出すことができる。
外部キー列のいずれかが空ならば(行番号107)全外
部キー値が空であると見なされ、レコードに対し現在の
参照制約は実施できない。この場合制約実施コード(行
番号108から118)はスキップされて何も行なわな
い(行番号120及び121)。
行番号108から118では、挿入レコードの外部キー
とマツチする基本キーを検査して単一挿入レコードの単
一参照制約を実施し、見つからなければ挿入操作を中断
する。関連記述子が親テーブルの基本キーインデックス
を識別するので、マツチする基本キーがもしあれば探索
できる。行番号109では、親テーブルの基本キーイン
デックスを調べて行番号106で取り出した外部キー値
とマツチする目的基本キー値を探索し、基本インデック
ス内の目的基本キー値存在を示す標識を返す。
基本キーが見つかれば参照制約は満たされ、エラー処理
コード(行番号111から114)はスキツブされて何
も行なわない(行番号116及び117)。
目的基本キー値が見つからなければ、すなわち行番号1
10で外部キー値とマツチする基本インデックス内に項
目がなければ、参照制約は侵害され、行番号111から
114でエラー処理が行なわれる。行番号112で、参
照制約侵害エラーを識別する、挿入操作からの戻りコー
ドをセットする。行番号113で一般の中断処理手順を
開始し、その時点で挿入しようとしたレコード及び、同
一挿入操作によるそれ以前の挿入済レコード(エラーな
し)を撤回する。データベース操作撤回の中断処理手順
については従来技術により熟知されるところであり、こ
こでは詳述しない。このように、最初の参照制約エラー
が見つかった時点で、全操作が撤回されて不成功に終わ
る。
関連記述子はまた同一テーブルが従属である次の関連記
述子の識別も行なうので、行番号105から122まで
のDOループが「レコードが従属である各関連」につい
て継続する。全従属関連記述子な成功裡に実施するとD
oループ(行番号105から122)を脱出し、次レコ
ード挿入操作を行なう。全挿入レコードにわたる外側の
Doループ(行番号101から126)は、挿入操作全
体に含まれる全レコードの挿入及び参照制約実施を行な
って挿入操作完了となるまで繰り返す。
本発明による、挿入操作時の参照制約実施例については
下記に述べる。次のSQL命令文を見ていただきたい。
lN5ERT   INTOPROJECTVALUE
S(’AD3110” GENAD、SYS’、  ’
D21  °、  ’000070’、、、、  ’A
D3100 ′ ) これは、第5図に示すPROJECTテーブル14に次
の行を追加するものである。
PROJNOPROJNAME   RESPDEPT
 RESPEMP  、、、MAJPROJAD311
0 GEM AD  SYS  021    000
070     AD3100第1図に示すレコード・
レベル制約実施方式によれば、レコードは30でPRO
JECTテーブル14に挿入されてインデックスが結合
され、32で参照制約R320、R524、R626が
順次検査される。
最初に、PROJECTテーブル14(従属)に新規追
加されるレコードに対し制約R320が実施される。こ
の制約によれば新規挿入プロジェクト行の担当部門RE
SPDEPT(外部キー)は、DEPARTMENTテ
ーブル10(親)の有効な部門番号DEPTNO(基本
キー)を参照する必要がある。新規挿入レコードのRE
SPDEPT列から外部キー値゛D21°を取り出すこ
とにより実施が開始する。キー値は空でないので、基本
キーDEPTNOのインデックスを調べれば値“D21
°に対する項目が探索される。新規挿入プロジェクトは
制約R320を満たし、参照侵害は存在しない。
次に参照制約R524が実施される。この制約によれば
、各プロジェクトの担当従業員RESPEMPが有効で
ある必要がある。新規挿入レコードから外部キー値“0
00070°が取り出される。キー値は空(ヌル)でな
いので、E M P L 0YEEテーブル12の基本
インデックスEMPNOを調べれば°000070′に
対する項目が探索される。この値は探知され、新規レコ
ードは制約R524を満たす。
最後に参照制約R626が実施される。この制約によれ
ば、各プロジェクトの主プロジェクトMAJPROJが
該プロジェクトに対し有効である必要がある。PI”t
OJEcTテーブル14に新規挿入されるレコードのM
AJPROJ列から、外部キー値’AD3100°が取
り出される。キー値はヌルでないので、PRO,JEC
Tテーブル14の基本インデックスPROJNOを調べ
れば。
AD3100°に対する項目が探索される。この項目は
探知され、制約R524が満たされる。
新規プロジェクト行がこれら3つの参照制約を満たすの
で、操作は完了する。1以上のレコードが挿入される場
合にも、各々が上述の通り処理され、次レコード挿入以
前に参照制約が実施される。
E−4,更新操作時の制約実施 参照制約実施という文脈において、更新操作は2つのタ
イプに分類される。親テーブルの基本キー値に対する更
新、及び従属テーブルの外部キー値に対する更新である
。基本キー値は参照制約の親テーブル行が変更されたと
きに更新される。同様に、外部キー値は従属テーブル行
が変更されたときに更新される。各更新について異なる
参照制約検査が必要となるが、レコード毎に制約を実施
するという根本の方式は変わらない。第1図に示すのは
、更新操作38に対し各更新レコードについて制約実施
する方式である。
新規基本キー値により親テーブル行が更新されると、旧
基本キー値は消失する。従属テーブル行が外部キー値と
して持っているのが旧基本キー値であった場合、親テー
ブル行が更新されると同時に従属行は親竹を持たなくな
り、参照一貫性が侵害される。基本キー値を持つ行が更
新されると、この侵害を探知するため更新テーブルが親
である各参照制約を検査し、制約内従属テーブルのどの
行も確実に、旧基本キー値と等しい外部キー値を持たな
いようにする。この検査40は、親テーブルの関連記述
子を調べることにより、基本行更新以前に行なわれる。
この記述子は従属テーブル及び外部キーインデックス(
あれば)を識別し、従属テーブルの外部キー値探索に用
いられることもある。
外部キーインデックスがあればそれを調べて、旧基本キ
ー値とマツチする外部キー値が探索される。なければ全
従属テーブルを調べて、旧基本キー値とマツチする外部
キー値が探索される。マツチする外部キー値が42にお
いて見つかると参照制約は侵害され、それまでの操作に
より更新されたレコードは36において撤回(中断)さ
れる。外部キーが見つからなければ参照制約は満たされ
る。
更新されるテーブルが親である各制約について、38で
この処理が繰り返される。基本キー制約侵害が見つから
なければ、レコード及び影響を受けるインデックスは更
新される。
行の基本キー検査後、48でレコードが更新される。同
時に行インデックスも新規の値に応じて更新される。こ
の更新については、従来技術にて熟知されている。更新
時制約実施の最終ステップは、行の外部キー制約実施で
ある。
従属テーブル行が更新されると、新規外部キー値とマツ
チする基本キーが各親テーブルにあるかどうか検査しな
くてはならない。マツチする基本キー値が存在しなけれ
ば、参照一貫性は侵害される。この侵害を探知するため
44で、更新テーブルが従属である各参照制約を検査し
、制約の親テーブルの行が更新される外部キー値と等し
い基本キー値を持つことを保証する。この検査44は、
48で従属行が更新された後に、制約の基本キーインデ
ックスを識別する従属テーブルの関連記述子を調べ、新
規外部キーとマツチする該基本キー値インデックスを探
索することにより行なわれる。
マツチする基本キー値が46で見つからなければ、参照
制約は侵害され、それまでの操作により更新されたレコ
ードは36において撤回(中断)される。外部キーが見
つからなければ参照制約は満たされる。更新されるテー
ブルが従属である各制約について、この処理が繰り返さ
れる。
レコード更新前の基本キー制約検査実施及びレコード更
新後の外部キー制約検査実施により、特別なコードなし
に、同一行の外部キーとマツチする基本キーを持つ自己
参照行の検査が行なえる。
参照一貫性の実行において、マツチする外部キー(すな
わち従属行)を持つ基本キーを直接更新することは許さ
れない。この規則は参照一貫性の文献では「更新制限」
規則と呼ばれる。自己参照行はそれ自身が自己の従属行
となる。ゆえに更新制限規則により、自己参照行の基本
キー更新は不可能である。この実施例の方法では、旧基
本キー値を新しいものと置き換える前に、旧基本キー値
とマツチする外部キー値がないかどうか検査することに
より、自己参照行の基本キー値更新を自動的に防ぐ機能
がある。これにより常に新規基本キー値は拒絶される。
この実施形態では参照制約検査が外部キー値更新後に実
施されるため、自己参照行の外部キーが生じるような更
新が行なわれることがある。外部キー値を基本キー及び
関連する基本キーインデックス更新後に検査することに
より、自己参照行の基本キーが常に見つかり、制約が満
たされる。第2表に、更新時参照制約実施方式の、擬似
コードによる実施を示す。
第2表 擬似コードによる 新時参照制 201DO更新操作に含まれる各レコードに対し。
/=ニレコード新前に基本キー制約=//=実施   
         =/202   レコードから旧基
本キーを取り出す。
/=基本キーはヌルであってはなら=//=ない   
         =/203rF基本キー列が変更さ
れるならばTHEN。
Doレコードが親である各開運記述子 (すなわち制約)に対し。
/=更新レコードが親であるような=//=各制約を検
査する      =/IF開連の外部キーにインデッ
クスが 存在すればT HEN 。
インデックスを調べて、外部キー= 旧基本キーである最初のインデック ス項目を探す。
ELSE/=外部キーにインデツ=/ /=クスが存在しなければ =/ 従属テーブルを調べて、外部キー= 旧基本キーである最初のレコードを 探す。
1F外部キーが見つかったならばTH EN。
/=参照制約が侵害された =/ Do9 基本キー更新時のエラー発生を示 す戻りコードをSET。
GOTOこれまでに行なわれた更 新を撤回する共通の中断処理手順 へ。
END。
ELSE/=外部キーが見つからない =/ /=それまでに制約侵害なし =/ Do何もしない。
END。
END  Do更新レコードが親である各開運記述子に
対し。
ELSE   /=基本キーが変更されない=/ /=基本キー制約検査が=/ /=要求されない   =/ Do何もしない。
END。
/=基本キー制約実施終了 =/ /=ニレコード新   =/ レコードの新規値に影響を受ける全インデックスを更新
レコードを新規値により更新。
/=外部キー制約実施 =/ IF外部キー列が変更されていればTHEN。
Doレコードが従属である各開運記述子(すなわち制約
)に対し。
1F関連の外部キーが変更されていれ ばTHEN。
Do、/=制約実施     =/ 新規外部キー値を取り出す。
IF新規外部キー値が空でなければ THEN。
DOo /=マツチする基本キー=/ /=があるかどうか検査=/ /=する       =/ 親テーブルの基本キーインデッ クスを調べて、基本キー値=新 規外部キー値であるインデック ス項目を探す。
1F項目が存在しなければTH EN。
DOo 外部キー更新時のエラー発 生を示す戻りコードをSE T。
GOTO全更新操作を撤回 する共通の中断処理手順へ。
END。
E L S E/=マツチする基=/ /=本キーが見つ=/ /=かった   =/ DO何もしない。
END。
END。
END、   /=基本キー値と=/ /=のマツチング=/ /=検査終了  =/ 241    ELSE    /=新規外部キー=/
/=がヌル   =/ 242      D O何もしない。
243      E N D 244   END  Doレコードが従属である各関
連記述子に対し。
245  ELSE     /=外部キーが変更=/
/=されない   =/ 246    Do何もしない。
247   END、    /=新規外部キー値=/
/=制約実施の終了=/ 248END  Do更新動作を行なう全レコードに対
し。
第2表の行番号201がら248は、更新オペレーショ
ンにより操作される各レコードを順次制約検査及び更新
するための、外側のDoループを成す。このループは異
なる3つのセクションを持つ。(1)基本キー値更新時
の親制約検査40及び42(行番号202から220)
、(2)制約侵害がない場合のレコード及びインデック
ス更新48(行番号221及び222)、(3)外部キ
ー値更新時の従属制約検査44及び46(行番号223
から247)である。
巳−5,基本キー更新時の制約実施 各テーブルは1つの基本キーしか持たないので、日基本
キー値は参照制約実施以前に取り出される(行番号20
2)。
行番号203で、更新される基本キー列があるかどうか
判断する。基本キー列はレコード・タイプ記述子で識別
されるので、変更(更新)列が基本キーの一部であれば
容易に探知できる。レコード更新により変更される基本
キーがなければ行番号218の処理が継続し、基本キー
の参照制約実施コード(行番号204から217)はス
キップされる。
基本キーが変更されれば、内側のDOループ(行番号2
04から217)に入り、レコード毎に基本キー制約を
実施する。前述したように、基本キーが更新される場合
の制約実施時には、いずれの制約においても旧基本キー
値が外部キーとマツチしてはならない。レコード・タイ
プ記述子は、そのテーブルが親である最初の関連の関連
記述子を識別する。各関連記述子は順次、該テーブルが
親である次関連記述子を識別するので、ループは「レコ
ードが親である各関連記述子」について継続する。行番
号205で、外部キーにインデックスがあるかどうか関
連記述子を調べる。もしあれば行番号206でインデッ
クスを調べて、行番号204で取り出した旧基本キー値
とマツチする外部キー値を探索する。外部キーにインデ
ックスがなければ(行番号207)行番号208で全従
属テーブルを調べて、更新レコードの旧基本キー値とマ
ツチする外部キーを持つレコードを探す。
行番号209で、インデックス探索(行番号206)或
いはテーブル探索(行番号208)の結果を調べ、マツ
チする外部キーがあるか判断する。
マツチする外部キーがあれば(行番号210)、そのレ
コードの基本キー更新は参照制約実施を侵害することに
なり、行番号210から213を実行してエラーを識別
し、それ以前に実行済の更新操作(もしあれば)を中断
(撤回)する。行番号211で、基本キー更新中の参照
制約侵害エラーを識別する、更新操作からの戻りコード
をセットする。行番号212で共通の中断処理手順を開
始し、これ以前に完了した更新を撤回する。こうして更
新操作によってレコードに生じた参照制約エラーを探知
すると、全更新作業が不成功に終わる。
一方マッチする外部キーが見つからなければ(行番号2
14)、基本キー参照制約は満たされて処理は不要とな
る(行番号215及び216)。
ここで内側のDoループ(行番号203から217)を
繰り返し、現在の関連記述子を調べて同−親テーブルに
関するさらに別の開運記述子がある(すなわち他に実施
すべき参照制約がある)かどうか判断する。この内側ル
ープは、基本キー値の全制約が実施されるか、侵害が探
知されるまで繰り返す。基本制約侵害が探知されなけれ
ば、処理は行番号221及び222へ続く。
コードの第2セクシヨンでは、テーブルのインデックス
及びレコード自体の更新を行なう。行番号221で、レ
コードの列更新によりキーが変更された全インデックス
を更新(又は「作成」)する。そして行番号222でレ
コード自体の更新を行なう。
E−6,外部キー更新時の制約実施 行番号223から247で、外部キー制約が実施される
。行番号223で、更新される外部キーがあるかどうか
判断する。前記同様外部キー列はテーブルのレコード・
タイプ記述子で識別されるので、外部キーに含まれる列
の変更(更新)は容易に探知できる。更新操作により変
更される外部キーがなければ制約実施は不要となり、行
番号245ヘスキツプされる。
外部キーが変更されると行番号224から244で、新
規外部キー値の制約を実施する第2の内側Doループに
入る。前述したように、外部キー値更新に対する参照制
約実施とは、レコードの新規外部キー値が制約の親テー
ブル内のいくつかのレコードの基本キー値とマツチしな
ければならない、という事である。前記同様、関連記述
子が従属テーブルの外部キー列及び親テーブルの基本キ
ーインデックスを識別する。さらに開運記述子は同一テ
ーブルが従属である次関連記述子も識別するので、内側
のDoループ(行番号224から244)は「レコード
が従属である各開運」について継続しつる。
行番号228で、値がヌルである新規外部キー列がある
かどうか判断する。もしあれば全外部キー値がヌルであ
るとみなされて更新レコードに対する参照制約実施は阻
止され、残りの制約実施コード(行番号229から24
0)はスキップされて次の制約へ進む(行番号241か
ら244)。
新規外部キーがヌルでなければ、制約が実施される(行
番号230から239)。外部キー新規値に対する参照
制約は、新規外部キーとマツチする基本キーがなければ
ならない。もしマツチする基本キーが見つからなければ
、更新作業は中断されそれまでの更新は撤回される。
外部キーが変更されなければ、制約検査処理はスキップ
されて次の制約へ進むが、そうでなければ行番号230
で、親テーブルの基本キーインデックス(開運記述子に
より識別される)を調べて新規外部キー値とマツチする
基本キー値があるか探索し、結果を示す標識を返す。
行番号231でマツチする基本キーがあるかどうか判断
する。もしあれば(行番号236)、参照制約は満たさ
れ、次の制約実施へ進む(行番号237及び238)。
もし基本キーインデックス内に基本キーが見つからない
、すなわち存在しないならば(行番号231)、参照制
約エラーとなり、上記(行番号210から213)同様
のエラー処理手順(行番号232から235)が実行さ
れる。前述同様に、参照制約侵害が探知された時点で更
新作業は撤回される。
行番号236から238(基本キーが見つかり参照制約
が満たされた)又は行番号241から243(新規外部
キー値がヌル)実行後、再び内側のDoループ(行番号
224から244)に入る。
ここで現在の関連記述子を調べて、関連記述子が次にあ
るか判断する。このループは、全従属制約が満たされる
か或いは侵害が探知されるまで繰り返す。
全部の親(行番号202から220)及び従属(行番号
223から247)参照制約を検査し終わると、更新操
作を行なう各レコードについて外側のDoループ(行番
号201から248)を繰り返す。全更新レコードが各
々の参照制約を満たすと、更新作業は完了となる。
E−7,更新における実施例 第2図に示すテーブルの擬似コードによる操作を、いく
つかの例を挙げて第3図から第6図と関連させながら詳
述する。後述の各側では、上記テーブル・データは初期
状態である。各側において、SQL命令文で表す関連操
作を実行し、本発明による参照制約実施を行なうレコー
ド・レベル操作を記述する。
最初の例として次のSQL命令文を見ていただきたい。
UPDATE   PROJECT   SET   
PROJNO=’0P2015’   WHERE  
 PROJNO=’0P2012’ これは、プロジェクト番号’ 0P2012°である行
を新規プロジェクト番号“0P2015°に変更するも
のである。前述したように、プロジェクト番号PFtO
JNOは参照制約R626の基本キーである。旧基本キ
ー値である°0P2012“に従属する行は存在しない
ので、この更新作業は成功裡に終了する。
この更新操作についての制約は次のごと〈実施される。
まず0P2012′のプロジェクト番号を持つレコード
をPROJECTテーブル14より探して、旧基本キー
値’0P2012’を取り出す(行番号204)。次に
、PROJECTテーブル14のMAJPROJ列にイ
ンデックスがないので(行番号205 )PROJEC
Tテーブル14を調べて、外部キーMAJPROJ、と
マツチする値を持つレコードを探す(行番号208)。
PROJECTテーブル14には、更新レコードの旧基
本キー値’0P2012°と等しいMAJPROJの値
がない(行番号214から216)ので、制約R626
は満たされてレコードが更新される(行番号251)。
更新される外部キーがないので、操作は完了する。
第2図に示すテーブルの擬似コードによる第2の操作例
として、次のSQL命令文を挙げる。
UPDATE   DEPARTMENT   5ET
DEPTNO=’D11  °  WHERE   D
EPTNO= “ D21  “ これは、部門番号°D21“である行を部門番号’Dl
l’に更新するものである。ところが部門番号DEPT
NOは3つの制約(R1、R2、R3)の基本キーであ
り、制約R2及びEMPLOYEEテーブル12に影響
する参照制約侵害が起こる。従って更新は不成功に終わ
る。
まず、更新されるレコードはDEPARTMENTテー
ブル10にある。制約は順不同に実施されるが、この例
では各部門の担当プロジェクトに関係する制約R320
が最初に実施される。レコードから旧基本キー値°D2
1“を取り出す(行番号204)ことにより制約検査が
開始する。
次にPROJECTテーブル14を調べて(行番号20
8)、担当部門RESPDEPT(外部キー)が部門レ
コードの旧基本キー値°D21゜と等しいレコードを探
す。該レコードがないので(行番号214)、この更新
は制約R320を満たす。
従業員の所属部門に関係する制約R218の実施では、
EMPLOYEEテーブル12を調べて(行番号208
)、旧基本キー値°D21°と等しい従業員所属部門W
ORKDEPT(外部キー)を持つ従業員レコードを探
す。従業員番号EMPNOが°000070°であるレ
コードが該当する(行番号209)。旧基本キー値と等
しい外部キー値を持つレコードが存在するので参照制約
侵害となり、行番号210から213を実行して更新は
中断する。操作が中断するので、制約R116の検査は
実施されない。
第2図に示すテーブルの擬似コードによる第3の操作例
は、外部キー更新を含む。次のSQL命令文を見ていた
だきたい。
UPDATE   EMPLOYEE   SET  
 WORKDEPT= “E31’   WHERE 
  EMPNO=’  000320  ’ これは、従業員番号EMPNOが000320であるE
MPLOYEEテーブル12のレコードの部門番号WO
RKDEPTを′E21°から°E31°に変更するも
のである。この更新によって影響を受ける外部キーはW
ORKDEPTのみであるので、制約R422だけが実
施される。
参照制約エラーが起こるので更新は不成功に終わる。
EMPLOYEEテーブル12で従業員番号EMPNO
が°000320°であるレコードが見つかる。基本キ
ーが変更されないのでレコードは更新される(行番号2
21及び222)。外部キーWORKDEPTが変更さ
れたので(行番号223)、新規外部キー値″E31°
を取り出す(行番号227)。新規外部キー値がヌルで
ないので(行番号228)、基本キーインデックスを調
べて新規外部キー値とマツチする親テーブルDEPAF
tTMENTテーブル10内の基本キー値を探す。DE
PARTMENTテーブル10には部門番号DEPTN
Oが°E31°であるレコードが存在しないので(行番
号231)、制約R422は侵害され、操作は中断して
更新作業が撤回される(行番号232から235)。
E−8,削除操作時の制約実施 削除操作時の参照制約実施に当たって問題となるのは、
基本キーが削除されることがあり、それとマツチする外
部キー値を持つ従属性の参照一貫性侵害を検査する必要
がある点である。削除された基本キーとマツチする各従
属テーブル外部、キーを探す方法は、「基本キー更新時
の制約実施」の項で述べた通りである。外部キーのイン
デックス(もしあれば)、或いは従属テーブル全体が探
索される。外部キーが見つかった後の動作は、制約作成
時に指定された特定の削除規則による。
削除規則には3種類ある。DELETE  RESTR
ICT(限定削除)、DELETE  SET  NU
LL(セット・ヌル削除)、DELETE  CASC
ADE(カスケード削除)である。
DELETE RESTRICT規則の元では、マツチ
する外部キーが存在する場合基本キーは削除されず、基
本キー更新時と同様の方法で制約実施が行なわれる。マ
ツチする外部キーが見つかると制約侵害となり、操作は
中断及び撤回される。
マツチする外部キーが見つからなければレコードの制約
は満たされ、レコード削除が完了する。
DELETE  SET  NULL規則は、旧外部キ
ー値とマツチする基本キー値の削除に当たって外部キー
列のうち可能なものを全てヌルにセットする。DELE
TE  SET  NULLにより、従属テーブル中の
マツチする旧外部キー値は全てヌルとなる。
DELETE  CASCADEはDELETESET
  NULLと似ているが、外部キー値をヌルにセット
するのではなく、マツチする旧外部キー値を含む全レコ
ードを従属テーブルから削除する。この削除は従属テー
ブルからその従属テーブル(削除レコードのテーブルを
親に持つテーブル)へ「カスケード」され、「カスケー
ド削除」として知られる従属レコード削除が行なわれる
削除レコードの従属テーブルのテーブル(レコード・タ
イプ)記述子を検査して、それが他の参照制約中の親テ
ーブルかどうか判断する。もしそうであればカスケード
削除されたレコードが親として扱われる、新規の削除制
約実施が開始され、その削除規則(RE、5TRICT
、SET  NULL、CASCADEのいずれか)が
実施される。
この削除規則もDELETE  CASCADEならば
上述の処理を繰り返す。そうでなければDELETE 
 SET  NULL又はDEL巳TERESTRIC
Tを実行する。DELETE  CASCADEはすな
わち、レコード削除がなされる親テーブルに結合する全
従属テーブルに波及する、再帰操作である。実行中にD
ELETE  RESTI”(ICTエラーが起こると
、カスケード削除を含む全削除操作が撤回されるや 挿入及び更新のルーチン同様、削除のルーチンもブロッ
ク50に示すように、削除操作をレコード毎に行なって
処理する。第1図にあるように削除のアルゴリズムは、
自己参照行及び循環性を処理するため52でまずレコー
ド削除を行ない、その後54と56で制約検査を行なう
。これにより確実に、−度にルコードが従属探索時に見
つかるようにする。58でカスケード削除が行なわれる
と、経路60の再帰的制御により削除ルーチンに戻る。
第3表は、削除操作中の参照制約実施方式の、擬似コー
ドによる実行である。
第3表 擬 コードによる削除時参照制約実施 301DO削除操作時に削除される全レコードに対し。
CASCADE:/=カスケード削除=//;中におけ
る次の=/ /=従属レコードを=/ /;削除するための=/ /=再帰的エントリ=/ レコードと全インデックスを切断する。
IFレコードがいずれかの関連において従属ならばTH
EN。
レコードから旧基本キー値を取り出し、後に外部キー値
と比較するため保管する。
テーブルからレコードを削除する。
IFレコードがいずれかの関連において親ならばTHE
N。
Doレコードが親である各開運に対し。
IF外部キーにインデックスがあれば THEN。
インデックスを調べて、開運につい て外部キー=旧基本キーである最初 のレコードを探す。
E L S E/=外部キーにインデッ=//=クスが
ない    =/ 従属テーブルを調べて、関連につい て外部キー=旧基本キーである最初 のレコードを探す。
IFマツチする外部キーが見つかれば T HE N 。
DO,/=制約実施     =/ IF削除規則がRESTRICT ならばTHEN。
DO,/=参照制約エラー処理 =/ RESTR[CT削除規則エ ラーを示す戻りコードSET。
GOTO共通の中断処理手順 へ。
END。
ELSE/=削除規則が  =/ /=CASCADE=/ /=又はSET   =/ /=NULL    =/ Do  [JNTIL外部キーがも う見つからなくなるまで。
/=この関連内金従=/ /=属に対しカス =/ /=ケート削除又は=/ /=上セツトヌル =/ IF削除規則がCASCAD EならばTHEN。
CASCADEをCALL。
/=該従属レし−ド=/ /=及びその従属を=/ /=再起的に削除 =/ ELSE/=削除規則 =/ /=SET   =/ /=NULL  =/ 外部キーの可能な値を全て ヌルにSETする。
外部キーインデックス又は従 属テーブルを調べて、関連に ついて外部キー=旧基本キー である次のレコードを探す。
END  Do外部キーがもう見 つからなければ。
END  DO,/=制約実施終了 =/ ELSE   /=開関連に従属が;//=存在しない
  =/ DO何もしない。
END。
END  DOレコードが親である各関連に対し、/=
基本キーの全 =/ /=制約検査終了 =/ ELSE   /=ニレコード親でない=//=ので制
約検査不要 =/ DO何もしない。
END。
336END  Do削除操作時に削除される全レコー
ドに対し。
第3表の擬似コードにおいて行番号301がら336は
、テーブル内の削除指定された全レコードを削除するた
めの、外側のDoループを成す。
行番号302は削除手順への再帰進入点である。
これをrCAS CADEJと呼び、削除レコードの従
属に対してCASCADE  DELETE規則を実施
するのに用いる。このrcAscADE、、、1再進入
点については、行番号323に関連して後に述べる。
行番号303で、削除レコードと、レコード削除が行な
われるテーブル上に定義された全インデックスを「切断
」する。すなわち、削除されるレコードを参照するイン
デックス項目をインデックスより除去し、そのインデッ
クスがレコードを指さないようにする。
行番号304で、テーブルのレコード・タイプを調べて
、テーブルがいずれかの関連(参照制約)において親で
あるかどうか判断する。もしそうならば行番号305で
旧基本キー値をレコードより取り出し、マツチする外部
キーを後に探索するためこの値を保管する(行番号30
9から312)。
各テーブルは基本キーを1つしか持たないので、取り出
しは、各開運に対してではなく一度のみ行なわれよう。
行番号306でレコードをテーブルから削除する。重要
なのは、参照制約の検査以前にまずレコード及び結合さ
れたインデックス項目が削除される点である。これによ
り、特別なコードや処理なしに自己参照行及び循環性の
検査を実施できる。いったんレコード及びインデックス
項目が削除されれば、マツチする外部キー探索中にその
レコードは見つからないことになる。
行番号307で再びテーブルのレコード・タイプ記述子
を調べて、テーブルがいずれかの関連において親である
かどうか判断する。そうでなければそのレコードは実施
すべき参照制約を持たないので、制約実施コード(行番
号308がら332)はスキップされる。しかしレコー
ド・タイプ記述子が親テーブルを含む関連記述子を識別
すれば、制約を実施して処理は継続する(行番号308
から332)。
行番号308から332は、レコード削除の際にテーブ
ルが親である各制約を実施する、内側のDOループを成
す。レコード・タイプ記述子は、親テーブルを含む最初
の関連の関連記述子を識別する。各開運記述子は順次、
同じ親テーブルを含む次関連記述子を識別するので、ル
ープは「レコードが親である各関連」について継続しよ
う。
行番号309から312で、旧基本キー値とマツチする
最初の外部キー値を探す。行番号309で関連記述子を
調べて、外部キーにインデックスがあるかどうか判断す
る。もしあれば、行番号310でそのインデックスを調
べて、旧基本キー値(行番号305で取り出される)と
マツチする外部キー値を探す。外部キーにインデックス
がなければ(行番号311)、行番号312で全従属テ
ーブルを調べて、マツチする外部キーを持つ最初のレコ
ードを探す。
行番号313で、左記のインデックスもしくはテーブル
探索の結果を検査し、マツチする外部キー値が見つかっ
たか判断する。もしマツチする外部キー値が見つからな
ければ、削除される親レコードの関連には従属レコード
が存在しないので制約実施は不要となり、処理は次の制
約実施へと継続する(行番号328 )。
マツチする外部キーが見つかると(行番号313)、該
従属レコードを行番号314から328にある制約の削
除規則により処理する0行番号315で関連記述子を検
査して、削除規則がRESTR■CTかどうか判断する
。もしそうならば行番号313で見つかった外部キーが
参照制約エラーを起こすので、行番号316から319
を実行してエラー戻りコードをセットし、全削除操作は
中断(撤回)する。行番号318でコールされる一般の
中断処理手順により、行番号306で行なわれようとし
たレコード削除のみならず、それ以前に削除手順により
行なわれたレコード削除も撤回される。また中断処理に
より、削除レコードの参照制約実施の一環として以前に
行なわれた、カスケード削除及びセット・ヌル削除も撤
回される。
こうして、参照制約エラーが起こると全削除操作が撤回
されて、処理は不成功に終わる。
削除規則がCASCADEかSET  NULLならば
(行番号320)、行番号321がら327で削除コー
ドの従属が処理される。この場合、削除レコードの旧基
本キー値とマツチする全外部キーを探索し、削除規則に
従って処理しなければならない。行番号321がら32
7のDoループがこれを行なう。行322は削除ルール
がCASCADHか否かをテストする。もしそうであれ
ば、行番号323が実行される。行番号323は削除処
理全体(行番号303から325)を行番号302のr
CASCADE : J再進入点により再帰的に呼び出
し、探索された従属レコードを削除して、そのレコード
削除の参照制約を実施する。
一方最初に削除されるレコードの削除規則がSET  
NULLならば(行番号324)、探索された従属レコ
ードの外部キー列のうち、可能な値を全てヌルにセット
して(行番号325)削除レコードのSET  NUL
L削除規則を実施する。
カスケード削除(行番号323)又はセット・ヌル(行
番号325)の後、行番号326で旧基本キー値と等し
い外部キーを持つ次レコードを探す。これは、行番号3
09から312の箇所で述べた外部キー・インデックス
もしくはテーブル探索を用いて行なわれよう(ここでは
再び詳述せず)。こうして探索されたレコードは、制約
の削除規則に従って処理される次の従属レコードとなり
、行番号321から327のDoループが再び実行され
る。外部キーがもう見つからなければ、親レコード削除
に関係する制約実施は成功裡に終了する。
行番号328(全従属レコードの参照制約実施)、或い
は行番号329から331(従属レコードが見つからな
い)の後、現在の関連記述子を調べて同じ親テーブルを
持つ開運記述子が他にあるかどうか判断する。もしあれ
ば、旧基本キー値が削除されたため実施すべき参照制約
が他にもあることとなり、レコード削除に対する全制約
の実施が終わるか又は制約侵害が探知されるまで、内側
のDoループ(行番号308から332)を繰り返す。
行番号332(全制約検査終了)、或いは行番号333
から335(検査する制約がない)が終了すると、ルコ
ードの削除及び結果として起こるカスケード削除は完了
する。外側のDoループ(行番号301から336)は
、削除操作によって削除される全レコードの処理が終わ
るか又は制約侵害により操作が中断(撤回)されるまで
繰り返す。
E−9,削除における実施例 後述の各側では、上記テーブル・データは初期状態であ
る。各側において、SQL命令文で表す関連操作を実行
し、本発明による参照制約実施を行なうレコード・レベ
ル操作を記述する。
最初の例として次のSQL命令文を見ていただきたい。
DELETE   FROM   EMPLOYEE、
  WHERE   EMPNO=’0OO070′こ
れは、従業員番号が°000070°である行をEMP
LOYEEテーブル12から削除するものである。EM
PLOYEEテーブル12は、実施すべき2つの制約、
R422及びR524の親テーブルである。実施を開始
すると、EMPLOYEEテーブル12内で従業員番号
EMPNOが’000070°であるレコードを探し、
該レコードをEMPLOYEEテーブルのインデックス
と切断しく行番号303)、旧基本キー値゛00007
0°を取り出して保管する(行番号305)。その後レ
コードを削除しく行番号306)、開運する制約を順不
同に実施する。
PROJECTテーブル14から、旧基本キー値’00
0070°と等しい外部キー値RESPEMPを持つ最
初のレコードを探索して1、制約R524を実施する(
行番号309から312)、該レコードが存在しないの
で(行番号313及び329)、削除規則RESTRI
CTが支持されてこの削除についての制約R524は満
たされる。故に内側のDoループ(行番号308から3
32)は、次の制約R422について繰り返す。
DEPARTMENTテーブル10から、旧基本キー値
’000070“と等しい外部キー値MGRNOを持つ
最初のレコードを探して、制約R422t’実施する(
行番号309から312)。部門番号DEPTNOがD
21°であるレコードが探索される(行番号313)。
制約R422に対する削除規則はSET  NULLな
ので(行番号320)、該従属レコードの部門責任者M
GRNOを゛ヌル°にセットする。ヌルにセットすべき
マツチする外部キー値は他にないので(行番号321か
ら328のDoループ)、制約R422は満たされる。
適用される全制約が満たされたので、内側のDOループ
(行番号308から332)は繰り返さない。
最後にEMPLOYEEテーブル12内に、従業員番号
EMPNOが°000070°であるレコードがもうな
ければ(行番号301から336の外側Doループ)、
制約R422実施は終了して削除作業が成功裡に終わる
第2の実施例は、次のSQL命令文を用いたカスケード
削除である。
DELETE   FROM   PROJECT  
 WHERE   PROJNO=’0P2000  
これは、プロジェクト番号’0P2000°を持つ行を
PROJECTテーブル14から削除するものである。
まず外側のDoループ(行番号301から336)に入
り、プロジェクト番号PROJNOが°0P2000 
’である最初(かつ唯一)のレコードを削除する。
’0P2000°のレコードは初めに削除ルーチン(行
番号303から332)に入る。レコードを探索し、、
PROJECTテーブル14のインデックスと切断する
(行番号303)、PROJECTテーブル14はある
関連において親であるので(行番号304)、レコード
の旧基本キー値’0P2000°を取り出して保管する
(行番号305)。その後レコードを削除する(行番号
306)。
自己参照制約R626は内側のDoループ(行番号30
8から332)に入り、旧基本キー値’0P2000°
と等しい外部キー値MAJ PROJを持つ最初のレコ
ードをPROJECTテーブル14から識別する(行番
号309から312)。プロジェクト番号PROJNO
が°0P2010°であるレコードを探索しく行番号3
13)、削除規則CASCADHが実施する(行番号3
20から328)。PROJNOが°0P2010°の
レコードは最も内側のDoループ(行番号321から3
28)に入り、CASCADE進入点(行番号302)
を用いて削除ルーチンに再帰再進入し、削除及び該レコ
ードの制約実施を行なう。
この削除ルーチンへの二度目の再進入時に、’0P20
10’のレコードをインデックスと切断しく行番号30
3)、旧基本キー値’0P2010°を取り出して保管
しく行番号305)、レコードを削除しく行番号306
)、レコード削除制約を実施するため内側のDo小ルー
プ行番号308から332)に入る。PROJECTテ
ーブル14から外部キー値MAJPROJが0P201
0′(旧基本キー値は削除された)である最初のレコー
ドを探して、制約R626を実施する。
PFtOJNOが°0P2012°であるレコードが探
索される。制約R626に対する削除規則はCASCA
DEなので、PROJNOが°op2012’のレコー
ドは最も内側のDo小ループ行番号321から328)
に入り、CASCADH進入点(行番号302)を用い
て削除ルーチンに再帰再進入し、削除及び該レコードの
制約実施を行なう。
削除ルーチンへの三度目の進入時に、0P2012°の
レコードをインデックスと切断しく行番号303)、旧
基本キー値’0P2012°を取り出して保管しく行番
号305)、レコードを削除しく行番号306)、レコ
ード削除制約を実施するため内側のDOループ(行番号
308から332)に入る。PROJECTテーブル1
4から外部キー値MAJPROJが0P2012゜(旧
基本キー値は削除された)である最初のレコードを探し
て(行番号309から312L制約R626を実施する
。該レコードが見つからないので(行番号329)、プ
ロジェクト番号PROJNOが“0P2012°の削除
についての制約R626は満たされる。この削除に関し
他の制約はない(行番号332)。こうして削除ルーチ
ン三度目の進入は終了し、行番号323で三度目の進入
がコールされた(呼び込まれた)箇所の直前の、二度目
の進入の制御へ戻る。
行番号326で削除ルーチン二度目の呼込みへ戻り、P
ROJECTテーブル14を調べて外部キー値MAJP
RQJが°0P2010°であるレコードが他にないか
探す。該レコードがないので、制約R626は満たされ
る。プロジェクト番号PROJNOが°0P2010°
の削除についての制約R626は満たされる。この削除
に闇し実施すべき他の制約はない(行番号332)。
こうして削除ルーチン二度目の進入は終了し、行番号3
23の後の、削除ルーチン最初の呼込みへ制御は戻る。
行番号326で削除ルーチン最初の呼込みが再開し、P
ROJECTテーブル14から外部キー値MAJ PR
OJが°0P2000 ’である次のレコードを探す。
該レコードは見つからない。故にプロジェクト番号’0
P2000°削除についての制約R626は満たされる
。適用される制約が他にないので、全削除操作は成功裡
に終わる。
第3かつ最後の実施例では、2つのDELETE  S
ET  NULL制約は満たされるが、DELETE 
 CASCADE制約の侵害により操作が中断・撤回さ
れる複雑な削除を示す。次のSQL命令文を見ていただ
きたい。
DELETE   FROM  DEPARTMENT
WHERE   DEPTNO=’AOO。
これは、部門番号DEPTNOがAOO°である行をD
BPARTMENTテーブル10から削除するものであ
る。制約R116、R218、R320はDEPART
MENTテーブル10を親テーブルに持つ。
操作開始後外側のDo小ループ行番号301から336
)に入り、°A00°を持つDEPARTMENTレコ
ードを探す。“AOO’レコードをインデックスと切断
しく行番号303)、旧基本キー値゛A00“を取り出
して保管しく行番号305)、レコードを削除しく行番
号306)、レコード削除についての3つの制約を実施
するため内側のDo小ループ行番号308から332)
に入る。
制約R320を実施して、PROJECTテーブル14
から外部キーRBSPDEPTの値がA00′である最
初のレコードを探す(行番号309から312)。該レ
コードがないので、この削除についての制約R320は
支持され、次の制約R2について内側のDoループを繰
り返す。
DEPARTMENTレコード“AOOoについての制
約R218を実施して、EMPLOYEEテーブル12
から外部キーWORKDEPTの値が°AOO°である
最初のレコードを探す(行番号309から312)。従
業員番号EMPNOが000010’であるレコードが
見つかる(行番号313)。制約R218に対する削除
規則はSET  NULLなので(行番号320)、従
業員番号’000010′のwoRKDEPTをヌルに
セットする(行番号325)。WORKDEPTの値が
°A00゛であるEMPLOYEEレコードが他にない
ので、最も内側のDOループ(行番号321がら328
)を出て、部門番号°A00°削除についての制約R2
18は満たされ、最後の制約R116について内側のD
oループを繰り返す。
部門番号“AOO’削除についての制約R116実施を
開始して、DEPARTMENTテーブル10から外部
キーADMRDEPTの値が’AOO’である最初のレ
コードを探す。自己参照行°A00°はまた外部キー’
AOO’も持つが、該レコードはすでに削除されている
ため(行番号306)ここでは見つからない。しかし部
門番号DEPTNOがD01°であるレコードが見つか
る。制約R116に対する削除規則はCASCADEで
あるノテ、CASCADH進入点(行番号302)にお
いて削除ルーチンに再帰進入しく行番号323)、部門
’D01°のカスケード削除処理を行なう。
二度目の削除ルーチンに入り、部門’DOI’の再帰的
削除を開始してレコードをDEPARTMENTテーブ
ルのインデックスと切断し、レコードの旧基本キー値“
Doloを取り出して保管し、レコードを削除する(行
番号303がら306)。
部門’DOI°削除についての制約R320を実施する
(行番号308から332)。外部キーRESPDEP
Tの値が°DO1”である最初のレコードをPROJE
CTテーブル14がら探索し、プロジェクト番号PRO
JNOが“MA2100“であるレコードが見つかる(
行番号309から313)。制約R320に対する削除
規則はRESTRTCTであるので(行番号315)、
プロジェクト番号PROJNOが°MA2100’であ
るレコードの存在がエラーを起こす。
適切な戻りコードをセットして(行番号317)制約侵
害エラーを識別し、部門′A00°の削除操作は36に
て中断する。操作中に削除又は「ヌル」にセットされた
全レコードは、一般の中断処理手順により元の状態に戻
る(行番号318)。
E−10,レコード・レベル制約実施による操作の制限 ある操作によりレコードが処理される順序が、関連操作
結果に影響してはならない、というのはリレーショナル
・データベース理論の原則である。
本発明による方式ではレコード・レベルで制約実施を行
なうので、複数行の関連操作時に全体として、処理の順
序が関連制約操作結果に影響する場合がある。例えば、
自己参照制約の削除規則がRESTRICTであった場
合、複数行操作時のレコード・アクセスの順序が結果に
影響する。
従って、参照一貫性を持つ関連結果を保持するため本発
明では、矛盾する結果を生じる可能性のある操作及び削
除規則について制限を設ける。本制限とは、次の通りで
ある。
(1)  自己参照制約の削除規則はCASCADHで
あること。
(2) 2以上のテーブルの間の循環制約中の削除規則
は削除操作時に、どのテーブルも(カスケードを通じ)
自己に影響しないようにすること。
(3)副照会を伴う削除操作時に、副照会で参照される
テーブルが、(CASCADE又はSET  NULL
を通じ)削除レコードを含むテーブルにより影響されて
はならない。
本制限は、副照会を含む削除に関するリレーショナル・
データベース理論における従来規則の拡張である。それ
は削除の対象テーブルは副照会中で参照されてはならな
い、というものである。
(4) 自己参照テーブルに対する副選択を伴・う挿入
操作は、2以上の行を戻してはならない。
(5) 自己参照テーブルの複数行を削除してはならな
い。
(6)基本キーを複数行に亙って更新してはならない。
これらの制限は必要に応じ、適用業務プログラミング技
術或いは他の方法により回避できる。もし制限が厳しけ
れば、特定の場合他の方法で制約を実施して制限を除く
ことも、データベース管理システムでは可能である。
本発明を要約すると、3つの基本操作(INSERT、
UPDATE、DELETE)いずれにおいても参照制
約は、個々のレコード操作時に実施されるということで
ある。制約実施は、適用業務プログラム及びデータへの
アクセス・パスと間係なく行なわれる。制約がデータ更
新操作そのものと一体的に実施されるので、パフォーマ
ンス・コストは従来技術による方式(データ操作及び制
約実施に2つのパスを必要とした)と比べ、最少限で済
む。操作のタイプが異なる毎にデータ操作及び制約実施
が行なわれる順序を適正に選択することにより、自己参
照行及び循環性が自動的に処理される。挿入及び削除時
には、各レコードはまず挿入又は削除され、次に制約が
実施される。エラーが探知されると、データ操作は撤回
される。
本方式は制約は大抵の場合支持される、という「楽天的
」な見方をしている(成功に関して最適化されている)
。更新時には、基本キー制約がまず実施され、次にレコ
ードが更新され、最後に更新された外部キーの制約が実
施される。
特定の実施例について述べてきたが、その他の例につい
ても本発明により実行受きる旨理解されよう。制約要素
の定義がレコード・レベル操作時にアクセスできる壱の
であればよい為、例えば外部カタログなど他の方法によ
っても、参照制約を保管しアクセスすることができる。
さらに制約実施コードは、上述してきたような「イン・
ライン」式の組み合せでなく、データ操作コードとは別
に集めることができる。この場合、レコード・レベル操
作時に検査すべき制約が探知されると、データ更新経路
からの「トリガ」によりコードが起動される。また制約
実施及びレコード操作は、上述例(次レコード操作以前
に各レコードが操作され制約が実施される)とは異なる
順序で行なわれることがある。
F0発明の効果 本発明を用いればリレーショナル・データベースにおけ
る参照制約の検査の実施を効果的に行なうことができる
【図面の簡単な説明】
第1図は本発明による挿入、更新、削除中の参照制約実
施方式の流れ図である。 第2図は第6図における参照制約の仕様を示す表である
。 第3図は第6図のDEPARTMENTテーブルを示す
図であり、基本キー、外部キー及びサンプル・データを
含む。 示す図であり、基本キー、外部キー及びサンプル・デー
タを含む。 第5図は、第6図のPROJECTテーブルを示す図で
あり、基本キー、外部キー及びサンプル・データを含む
。 第6図は、6つの参照制約により関連付けられた3テー
ブルを持つリレーショナル・データベースの概略図であ
る。 出願人  インターナショナル・ビジネス・マシーンズ
・コーポレーション 代理人  弁理士  頓  宮  孝 (外1名) 第4図は第6図のEMPLOYEEテーブルを第3図 第4囚 第6図

Claims (2)

    【特許請求の範囲】
  1. (1)データベース管理システムにおいて複数のレコー
    ドを操作する動作を実行する方法であって、上記動作の
    対象のレコードを操作し、上記同じ動作により別のレコ
    ードが操作される前に上記レコードに関する参照制約を
    検査するステップを含む データベース・システムの動作方法。
  2. (2)データの行より成るテーブルを有するリレーショ
    ナル・データベース管理システムにおいて、行を操作し
    且つ参照制約を実施する方法であって、少なくとも2つ
    の行を操作する動作を実行する時、 上記動作が行の挿入を含む場合は、該行を挿入し、次い
    で上記挿入の結果生じる参照制約の侵犯を識別するステ
    ップを実行し、 上記動作が行の更新を含む場合は、該行の基本キーの更
    新から生じる参照制約の侵犯を識別し、次いで該行を更
    新し、次いで該行の外部キーの更新から生じる参照制約
    の侵犯を識別するステップを実行し、 上記動作が行の削除を含む場合は、該行を削除し、次い
    で上記削除から生じる参照制約の侵犯を識別するステッ
    プを実行し、 上記参照制約の侵犯が識別されたならば上記動作を撤回
    する データベース・システムの動作方法。
JP1096580A 1988-07-15 1989-04-18 データベース・システムの動作方法 Expired - Lifetime JPH0760407B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US219513 1988-07-15
US07/219,513 US4947320A (en) 1988-07-15 1988-07-15 Method for referential constraint enforcement in a database management system

Publications (2)

Publication Number Publication Date
JPH0239372A true JPH0239372A (ja) 1990-02-08
JPH0760407B2 JPH0760407B2 (ja) 1995-06-28

Family

ID=22819577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1096580A Expired - Lifetime JPH0760407B2 (ja) 1988-07-15 1989-04-18 データベース・システムの動作方法

Country Status (4)

Country Link
US (1) US4947320A (ja)
EP (1) EP0351209B1 (ja)
JP (1) JPH0760407B2 (ja)
DE (1) DE68916486T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03238535A (ja) * 1990-02-15 1991-10-24 Nec Corp リレーショナルデータベース管理システムにおける表およびデータの関係管理システム
JP2000207271A (ja) * 1998-12-31 2000-07-28 Internatl Business Mach Corp <Ibm> オブジェクト指向トランザクション・システムによるトランザクションの完了時にリレ―ショナル・デ―タベ―ス上で実行されるデ―タベ―ス・オペレ―ションに対応するオブジェクトを順序付けるシステム及び方法並びに該方法を実行するためのプログラムを記憶したプログラム記憶媒体

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0360387B1 (en) * 1988-09-23 1996-05-08 International Business Machines Corporation Data base management system
US5115504A (en) * 1988-11-01 1992-05-19 Lotus Development Corporation Information management system
US5101345A (en) * 1988-11-29 1992-03-31 International Business Machines Inc. Method of filing stapled documents with a staple relationship involving one or more application programs
US5226158A (en) * 1989-05-24 1993-07-06 International Business Machines Corporation Method and apparatus for maintaining referential integrity within a relational database
WO1991001530A2 (en) * 1989-07-11 1991-02-07 Bell Communications Research, Inc. Methods and apparatus for checking the integrity of data base data entries
KR940004389B1 (ko) * 1989-10-13 1994-05-23 인터내셔널 비지네스 머신즈 코포레이션 관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템
US5604899A (en) * 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
JP3396479B2 (ja) * 1991-08-07 2003-04-14 ユニシス・コーポレイション データファイルに複数オブジェクト制約条件を課す方法
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
WO1995004960A2 (en) * 1993-08-02 1995-02-16 Persistence Software, Inc. Method and apparatus for managing relational data in an object cache
US5499359A (en) * 1994-01-18 1996-03-12 Borland International, Inc. Methods for improved referential integrity in a relational database management system
US5513350A (en) * 1994-05-27 1996-04-30 At&T Corp. Update constraints in transactions which may abort
US5664172A (en) * 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
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
US5644763A (en) * 1995-06-28 1997-07-01 Sybase, Inc. Database system with improved methods for B-tree maintenance
US6105025A (en) * 1996-03-08 2000-08-15 Oracle Corporation Method for using an index as a workspace for deferred enforcement of uniqueness constraints
US5842196A (en) * 1996-04-03 1998-11-24 Sybase, Inc. Database system with improved methods for updating records
US5999946A (en) 1996-04-10 1999-12-07 Harris Corporation Databases in telecommunications
US5832484A (en) * 1996-07-02 1998-11-03 Sybase, Inc. Database system with methods for parallel lock management
US5937401A (en) * 1996-11-27 1999-08-10 Sybase, Inc. Database system with improved methods for filtering duplicates from a tuple stream
JP4580472B2 (ja) * 1997-02-04 2010-11-10 ソニー株式会社 情報信号記録再生装置および記録再生方法
US5963934A (en) * 1997-06-30 1999-10-05 International Business Machines Corporation Intelligent compilation of scripting language for query processing systems
US5987455A (en) * 1997-06-30 1999-11-16 International Business Machines Corporation Intelligent compilation of procedural functions for query processing systems
US6098075A (en) * 1997-12-16 2000-08-01 International Business Machines Corporation Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking
US6070165A (en) * 1997-12-24 2000-05-30 Whitmore; Thomas John Method for managing and accessing relational data in a relational cache
US6185552B1 (en) * 1998-03-19 2001-02-06 3Com Corporation Method and apparatus using a binary search engine for searching and maintaining a distributed data structure
US6792432B1 (en) 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6189010B1 (en) 1998-06-10 2001-02-13 Platinum Technology, Inc. Method for repairing constraint violations in a database management system
US6112209A (en) * 1998-06-17 2000-08-29 Gusack; Mark David Associative database model for electronic-based informational assemblies
US6295539B1 (en) * 1998-09-14 2001-09-25 Computer Associates Think, Inc. Dynamic determination of optimal process for enforcing constraints
US6606626B1 (en) * 1998-10-20 2003-08-12 Sybase, Inc. Database system with lock manager enhancement for improving concurrency
US6363387B1 (en) 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6631366B1 (en) 1998-10-20 2003-10-07 Sybase, Inc. Database system providing methodology for optimizing latching/copying costs in index scans on data-only locked tables
US6058417A (en) * 1998-10-23 2000-05-02 Ebay Inc. Information presentation and management in an online trading environment
US6591269B1 (en) 1999-05-19 2003-07-08 Sybase, Inc. Database system with methodology for online index rebuild
US6408280B1 (en) 1999-07-22 2002-06-18 Toshiba America Information Systems, Inc. Data driven constraints engine
US7707159B2 (en) * 2000-03-02 2010-04-27 Actuate Corporation Method and apparatus for storing semi-structured data in a structured manner
US6490578B1 (en) 2000-04-05 2002-12-03 Sybase, Inc. Database system with methodology for high-performance date
US7143108B1 (en) * 2000-04-06 2006-11-28 International Business Machines Corporation Apparatus and method for deletion of objects from an object-relational system in a customizable and database independent manner
US6463429B1 (en) 2000-04-12 2002-10-08 International Business Machines Corporation System and method for consistency constraint management in database middleware
US6684215B1 (en) * 2000-06-20 2004-01-27 International Business Machines Corporation Technique for enforcing temporal uniqueness in an object/relational database management system environment
US7756904B2 (en) * 2000-08-01 2010-07-13 Actuate Corporation Nested conditional relations (NCR) model and algebra
GB2387684A (en) * 2002-04-19 2003-10-22 Hewlett Packard Co Management of a long term digital document storage system
US7502791B2 (en) * 2002-11-26 2009-03-10 Norsync Technology A/S Database constraint enforcer
US7447786B2 (en) * 2003-05-09 2008-11-04 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US20040236744A1 (en) * 2003-05-22 2004-11-25 Desai Paramesh S. Method for ensuring referential integrity in highly concurrent datbase environments
KR100677116B1 (ko) * 2004-04-02 2007-02-02 삼성전자주식회사 사이클릭 레퍼런싱 방법/장치, 파싱 방법/장치 및 그방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한기록매체
WO2006004274A1 (en) * 2004-04-02 2006-01-12 Samsung Electronic Co., Ltd. Cyclic referencing management method and apparatus, parsing method and apparatus
US20060004801A1 (en) * 2004-05-03 2006-01-05 Hoefer Felix F Data consistency in a multi-layer datawarehouse
US7930291B2 (en) * 2004-06-18 2011-04-19 Bmc Software, Inc. Constraint processing
US7664790B2 (en) * 2004-06-18 2010-02-16 Bmc Software, Inc. Cascade delete processing
US7725495B2 (en) * 2006-04-11 2010-05-25 Microsoft Corporation Implementing referential integrity in a database hosting service
US8161010B2 (en) 2006-10-04 2012-04-17 Salesforce.Com, Inc. Methods and systems for providing fault recovery to side effects occurring during data processing
US8548942B2 (en) * 2006-10-04 2013-10-01 Salesforce.Com, Inc. Methods and systems for recursive saving of hierarchical objects to a database
US8682863B2 (en) 2006-10-04 2014-03-25 Salesforce.Com, Inc. Methods and systems for bulk row save logic in an object relational mapping layer and application framework
US8065323B2 (en) * 2009-02-23 2011-11-22 Oracle International Corporation Offline validation of data in a database system for foreign key constraints
US9171044B2 (en) * 2010-02-16 2015-10-27 Oracle International Corporation Method and system for parallelizing database requests
US9251179B2 (en) * 2012-04-12 2016-02-02 International Business Machines Corporation Managing record location lookup caching in a relational database
US9053153B2 (en) * 2012-06-18 2015-06-09 Sap Se Inter-query parallelization of constraint checking
US10909106B2 (en) * 2016-11-11 2021-02-02 Walmart Apollo, Llc Systems and methods for creating and maintaining referential integrity of data across multiple server systems
US10459810B2 (en) 2017-07-06 2019-10-29 Oracle International Corporation Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery
US11176120B2 (en) 2019-12-13 2021-11-16 Salesforce.Com, Inc. Foreign key constraint enforcement across database instances
CN113282600B (zh) * 2021-06-08 2022-08-30 上海英方软件股份有限公司 一种Oracle数据库同步环境下批量主键更新处理方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4468728A (en) * 1981-06-25 1984-08-28 At&T Bell Laboratories Data structure and search method for a data base management system
US4631664A (en) * 1983-07-19 1986-12-23 Bachman Information Systems, Inc. Partnership data base management system and method
JPS62173545A (ja) * 1986-01-27 1987-07-30 Hitachi Ltd デ−タデイクシヨナリ・デイレクトリの維持管理方式

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03238535A (ja) * 1990-02-15 1991-10-24 Nec Corp リレーショナルデータベース管理システムにおける表およびデータの関係管理システム
JP2000207271A (ja) * 1998-12-31 2000-07-28 Internatl Business Mach Corp <Ibm> オブジェクト指向トランザクション・システムによるトランザクションの完了時にリレ―ショナル・デ―タベ―ス上で実行されるデ―タベ―ス・オペレ―ションに対応するオブジェクトを順序付けるシステム及び方法並びに該方法を実行するためのプログラムを記憶したプログラム記憶媒体

Also Published As

Publication number Publication date
EP0351209B1 (en) 1994-06-29
JPH0760407B2 (ja) 1995-06-28
US4947320A (en) 1990-08-07
DE68916486D1 (de) 1994-08-04
DE68916486T2 (de) 1995-03-16
EP0351209A2 (en) 1990-01-17
EP0351209A3 (en) 1992-10-14

Similar Documents

Publication Publication Date Title
JPH0239372A (ja) データベース・システムの動作方法
JP3251837B2 (ja) データベースにおける制約違反の検査方法及びそのシステム
Hanson Rule condition testing and action execution in Ariel
US7028057B1 (en) Versioned relational database system with an optimistic constraint model
US5625815A (en) Relational database system and method with high data availability during table data restructuring
Celko Joe Celko's SQL for smarties: advanced SQL programming
US6714943B1 (en) Method and mechanism for tracking dependencies for referential integrity constrained tables
US6446062B1 (en) Method and apparatus for improving the performance of a generated code cache search operation through the use of static key values
US6728719B1 (en) Method and mechanism for dependency tracking for unique constraints
Grefen et al. Integrity control in relational database systems—an overview
US6453314B1 (en) System and method for selective incremental deferred constraint processing after bulk loading data
US7464073B2 (en) Application of queries against incomplete schemas
JPH0233665A (ja) データベース管理システム
US7836028B1 (en) Versioned database system with multi-parent versions
JP2009271665A (ja) トランザクションの同時実行制御を備えたマルチオペレーション・プロセッシングを用いたデータベースのトランザクション処理システム
Taniar et al. A taxonomy of indexing schemes for parallel database systems
JPH02116973A (ja) リレーシヨナル・データベース管理システム
US20070088766A1 (en) Method and system for capturing and storing multiple versions of data item definitions
Widom et al. A syntax and semantics for set-oriented production rules in relational database systems
US6820080B2 (en) Dependent object processing for triggers
Simon et al. Design and implementation of an extendible integrity subsystem
Eisenberg New standard for stored procedures in SQL
Rao et al. Canonical abstraction for outerjoin optimization
Sellis et al. Data intensive production systems: The DIPS approach
Hong et al. Associative hardware and software techniques for integrity control

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080628

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080628

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090628

Year of fee payment: 14

EXPY Cancellation because of completion of term