JP3251837B2 - データベースにおける制約違反の検査方法及びそのシステム - Google Patents

データベースにおける制約違反の検査方法及びそのシステム

Info

Publication number
JP3251837B2
JP3251837B2 JP01616296A JP1616296A JP3251837B2 JP 3251837 B2 JP3251837 B2 JP 3251837B2 JP 01616296 A JP01616296 A JP 01616296A JP 1616296 A JP1616296 A JP 1616296A JP 3251837 B2 JP3251837 B2 JP 3251837B2
Authority
JP
Japan
Prior art keywords
constraint
record
query
records
insert
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP01616296A
Other languages
English (en)
Other versions
JPH08255102A (ja
Inventor
ロベルタ・ジョウ・コクレイン
ミア・ハミッド・ピラヘッシュ
リチャード・セフトン・シードル
カリスト・ポール・ツザルテ
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH08255102A publication Critical patent/JPH08255102A/ja
Application granted granted Critical
Publication of JP3251837B2 publication Critical patent/JP3251837B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • 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/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • 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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的には関係デ
ータベース処理システムに関し、特に、関係データベー
スに記憶された大量のデータについての制約検査及び違
反捕捉に関する。
【0002】
【従来の技術】関係データベース管理システム(RDM
S)は、データを記憶しかつ検索するための関係技術を
用いる。関係データベースは、演算された情報の記憶機
構であり検索システムである。この中には、通常、テー
ブル(「関係(relation)」)の形態のデータが、ディス
ク駆動装置又は類似の大容量データ記憶装置上で用いる
ために記憶される。「関係」には、1又は複数の列の広
がりをもつ一組の行(「組(tuple)」すなわち「レコー
ド(record)」)が含まれる。「レコード」は、その行要
素間の数学的関係を表現する。ここで、関係データベー
ス管理システムの文献として、C.J. Dateによる「An In
troduction to Database Systems」(Vol.1, 4th editio
n, Addison-Wesley Publishing Co. Reading, MA(198
6))を参照する。
【0003】RDMSは、構造化照会言語(Structured
Query Language:SQL)等の高水準照会言語を用いてデ
ータを記憶し、検索し、そして削除するためのコマンド
を受信して実行する。「照会(query)」という用語は、
記憶されたデータベース内のデータに対して作用する一
組のコマンドを意味する。SQL標準は、ISO(Inter
national Standards Organization) により1986年
から定められている。ここで、ANSI(American Nati
onal Standards Institute)によりANSI X3.135-1992と
して刊行の、及びISOによりSQLの1992年版の
公式仕様ISO/IEC9075:1992として刊行のSQL−92標
準「Database Language SQL」を参照されたい。さら
に、James R. Groff et al.によるSQL−92の説明
「LAN TimesGuide to SQL」(Osborne McGraw-Hill, Ber
keley, CA, 1994)を参照する。
【0004】RDMS中のテーブル(表)は、行及び列へ
と区分されており、行と列との各交点に1つの値が存在
する。一列中の全ての値は、同じデータ型である。この
規則の唯一の例外は、値がNULLの場合である。NU
LLは、何らかの理由によりデータが欠けている列中の
所与の場所を充填するために用いられるマーカである。
【0005】テーブルは、SQLテーブル作成(SQL CRE
ATE TABLE)コマンドを用いることにより明示的に作成さ
れる。テーブルは、「永続テーブル」、「一時テーブ
ル」、もしくは「仮想テーブル」として作成することが
できる。永続テーブルは、基本データを格納するベース
・テーブルを含んでおり、データベース内に永続的に記
憶される。基本データとは、その管理のために最初にデ
ータベースが作成されたデータのことであって、例え
ば、従業者や学生等のグループのレコードである。仮想
テーブルは「ビュー(view)」 とも称され、基本テーブ
ルから照会を用いて導出されるテーブルである。ビュー
は、基本テーブルのように記憶された1組の値としては
データベース内に存在しない。すなわち、ビューを通し
て見ることのできるデータの行及び列は、ビューを定義
する照会により作成された照会結果である。ビューの定
義は、データベース内に記憶される。一時テーブルは、
永続的には記憶されないが、プログラム変数と同様に、
中間的な結果を処理するために用いられる。一時テーブ
ルは、作業セッションの終了時に自動的に消去される。
テーブルは、たとえデータが全く含まれないとしても作
成することができる。このようなテーブルは「空テーブ
ル」と称され、通常、後にデータを受容するために作成
される。
【0006】「制約(constraint)」は、基本データの永
続テーブルに入力されるべきデータが適合しなければな
らない条件を規定する。制約は、列又はテーブルに対し
て適用され、これらは、RDMSにより検査される。1
つの制約は、次のいずれの時点においても検査すること
ができる。 (1)テーブルに影響を及ぼした各ステートメントの後
(例えば、挿入(INSERT)照会の後) (2)テーブルに影響を及ぼす1又は複数のステートメ
ントを実行するトランザクションの終了時 (3)上記(1)と(2)との間の任意の時点
【0007】大きな商用データベース・システムにおい
ては、大量(バルク)のデータを速やかに入力しなけれ
ばならない場合がしばしばある。この目的のために利用
できるバルク・ロード(bulk-loading)機構は、RDMS
の外部のファイルから高速でデータベース・テーブルを
ロードする。
【0008】バルク・ロードは、大量のデータベースを
少量の時間内に配信するので、もし全てのデータがロー
ドされるまで制約検査の実行を待たないとすれば、制約
検査が深刻なボトルネックを課する可能性がある。
【0009】たとえ制約検査が延期されたとしても、各
レコードを一時に1つの制約違反について検査し、違反
にフラグを付し、そして再び同じレコードを残りの各制
約について検査しなければならないので非常に時間がか
かり、バルク・ロードのコストを増大させてしまう。例
えば、もし10,000個のレコードを入力する場合
に、検査するべき制約が10個あるとすれば、各レコー
ドの各制約についての検査に0.5秒が費やされ、この
バルク・ロード・データの整合性を確保するために数時
間かかることになる。10,000個のレコードの各レ
コードについての第1の制約の検査は、5,000秒を
費やすことになり、この5,000秒の処理が、検査さ
れるべき各制約について繰り返されなければならないこ
とになる。さらに、もし制約がトランザクションの終了
時に検査されるとすれば、制約に違反しているレコード
に対するロールバックによってさらに時間が加算される
ことになる。従って、所与のテーブル内の各レコードに
ついて同時に全ての制約を検査できるユーティリティが
長らく要望されていることは明らかである。
【0010】昨今、制約検査を行わないバルク・ロード
・ツールが提供されている。バルク・ロードされるデー
タを受信するテーブルは、「ペンディング」状態に置か
れる。このことは、そのデータが制約について検査され
るまでは用いることができないことを意味する。必要と
されているのは、このようなバルク・ロードされるデー
タを制約について検査するためのツールであって、かつ
これを高速に行うことができ、さらに違反しているレコ
ードを除去するべくこのようなテーブルを修復する機能
を含むツールである。
【0011】バルク・ロードされるデータの制約検査を
行ういずれのツールにおいても、制約違反がないことを
確保するという課題は、データベースにおける「参照整
合性」を確保するという必要性があるために複雑とな
る。参照整合性は、データベース全体の適正さを確保す
るものである。これに関して、従業者を部門によってグ
ループ化したテーブル及び従業する組織の可能な全ての
部門を含むテーブルをもつ従業者データベースの例を考
える。この場合、従業者のテーブルは、個々の従業者の
部門番号を表す列を含むであろう。従業者部門番号値
は、従業する組織内の全ての部門を含むテーブル内の固
有の識別する列を参照する「外部キー」である。第2の
テーブルは、この場合、「親テーブル」である。部門名
を識別する親テーブル内の固有の識別列は、「主キー」
と称される。参照整合性は、全ての外来キー値がこれら
の親キー内に存在する状態である。従業者の部門が廃止
されてその対応するレコードが親テーブルから削除され
る場合は、その部門を表す従業者レコード内の外来キー
は無効となる。このような場合システムは、参照整合性
を失うことになる。上記の単純な例では、1つの列のみ
を有する外来キー及び主キーを示したが、参照整合性
は、複数列キーを用いて保証することができる。
【0012】上記の例では、いずれの部門にも所属しな
い従業者のレコードは、外来キーが親テーブルを持たな
いので「親がない」とされる。親のないレコードを処理
するための通常のSQL技術は、これらの親参照が削除
されるときこれらを削除するものである。カスケード(C
ASCADE)として知られる機能は、外来キーを持つレコー
ドが、これらの参照された主キーが削除されるときに削
除されることを確保するために、SQLにおいて使用で
きる。
【0013】
【発明が解決しようとする課題】本発明の目的は、参照
整合性も確保する違反捕捉機構を備えた、ペンディング
・テーブルにおいてバルク・ロードされたデータを制約
検査する適切なツール及び技術を提供することである。
【0014】
【課題を解決するための手段】前述の従来技術の限界を
克服するべく、そして明らかとされる他の限界を克服す
るべく、本発明は、関係データベースに記憶された後の
バルク・ロード・データの制約検査を行い、参照整合性
も確保する方法及びツールを開示する。
【0015】本発明による方法では、データ・プロセッ
サが、1又は複数のレコードを、RDMS内のバルク・
ロード・テーブルへ挿入するための挿入(INSERT)照会を
発生する。その後プロセッサは、SQL挿入(SQL INSER
T)コマンドをコンパイルするためにSQLコンパイラを
呼び出す。挿入コマンドを実行するために発生されたコ
ードは、挿入されるレコードの制約違反を検査するため
のコードを含む。しかしながら、コンパイルされるコー
ドをコンパイルし、最適化し、そして実行する前に、本
発明による方法では、挿入コマンドを選択(SELECT)コマ
ンドで置き換える。これによって、得られるコードが、
列制約に違反しているレコードを選択することによりバ
ルク・ロード・データを「制約検査する」ことが可能と
なる。さらに本発明は、上記の方法を実行可能な環境を
含む。
【0016】
【発明の実施の形態】図面中の符号は全体にわたって対
応する部品を表す。図1は、周知のIBM Starburst関係
データベース管理システム(Starburst RDMS)において
用いられる照会変換プロセスを、本発明を実施するため
に必要な変更部分と共に示す。IBM Starburst RDMSにつ
いては、L. M. Hass, et al.による「An Extensible Pr
ocessor for an Extended Relational Query Languag
e」(IBM Research Report, RJ6182, IBM Almaden Resea
rch Center, San Jose, CA, April 1988)を参照された
い。
【0017】制約セットを含む照会変換プロセスの概要 SQLで書かれる照会又はそれと同等のものは、図1に
示すような各ステップで処理される。先ず、SQL照会
は、ステップ13において字句解析されそしてステップ
14において構文解析及び意味解析されて、照会グラフ
・モデル(QueryGraph Model:QGM)15として表され
る内部表現へと変換される。QGMは、周知のデータ構
造であり、照会コンパイラの全ての構成要素が用いるた
めに照会の意味関係を要約する。その後、QGM最適化
手順16が、QGMを意味論的に等価なQGM15へと
繰り返し変換することにより標準形式でQGMを書き直
す。このような最適化に関する説明については、W. Has
en, et al.による「QueryRewrite Optimization in Sta
rburst」(IBM Research Report, RJ6367, IBM Almaden
Research Center, San Jose, CA, August 1988)を参照
されたい。
【0018】QGM最適化16の目的は、改善された照
会実行プラン(Query Execution Plan:QEP)を作成す
るための後続のプラン最適化プロセスを援助するために
QGM15を単純化することである。プラン最適化手順
18は、替わりのQEPを作成し、見積もられたコスト
に基づいて最適のQEP20を選択する。プラン詳細化
手順22は、効率的な実行のために適切なQEP20を
作成するべく、実行時に必要な情報を追加することによ
り最適のQEP20をさらに変換する。QGM最適化ス
テップ16は、QEP最適化ステップ18から分離した
別個のステップである。QEP最適化ステップ18にお
いて用いる適切な、有用な結合最適方法についての詳細
は、例えば、Iyer et al.による米国特許第53455
85号をここに参照する。さらに、ステップ18におい
て適切な、適応QEP最適化手順の詳細については、Lo
hman et al.による米国特許第5301317号を参照
する。
【0019】本発明は、QGM15と、制約コンパイラ
24で示される組合せである周知のSQLコンパイラと
組み合わせた周知の制約エンジンと、後述する新規のモ
ジュール26とを用いることにより、バルク・ロード・
データの制約検査を可能とする。QGM15の特徴を理
解するために、Hamid Pirahesh, et al.による「Extens
ible/Rule Based Query Rewrite Optimization in Star
bust」(Proceedings of ACM SIGMOD '92 International
Conference on Management of Data, San Diego, CA,
1992)を参照する。他の特徴の中でも、QGM15は、
(a)限量詞すなわちレコード変数、(b)述語(predi
cate)、及び(c)選択オペレーションの概念を包含す
る。本発明は、その目的を達成するべく、これらの概念
を新規かつ有用な方法により拡張するものである。
【0020】本発明の一実施態様は、コンピュータ・ハ
ードウェアと結合した図3に示す特定のプログラム・オ
ブジェクト・モジュールとして実施され、以下に詳述す
る。このモジュールは、図1に符号26で概略的に表現
されており、「制約セット・モジュール」と記されてい
る。好適には、このモジュールにより部分的に実行され
る本発明の方法は、ソフトウェアで実現されるが、図4
乃至図8の流れ図と関連して以下に説明する規則を実行
するハードウェア論理として実施することもできる。さ
らに本発明は、図13に示すコンピュータ・ディスク上
に磁気的に記録されることを含めて、任意の有用な記録
媒体に記憶されたソフトウェア・コードとして実施する
ことができる。
【0021】本発明は、データベースに常駐するテーブ
ルに記憶されたバルク・ロード・データの制約検査を可
能とするために、SQL照会処理及びQGM最適化等の
RDMSの特性を拡張するので、QGMについて説明す
ることが必要であろう。さらに、本発明の制約検査シス
テムは、参照整合性に反するものを含めて違反を捕捉す
ることもできるので、参照整合性についても説明するこ
とが必要であろう。
【0022】QGMについて周知の有用なQGMについ
て説明する。図2は、次のSQL照会のQGMを表して
いる。 SELECT DISTINCT Q1.部品番号, Q1.説明, Q2.価格 FROM 在庫Q1, 見積りQ2 WHERE Q1.部品番号=Q2.部品番号 AND Q2.価格>100
【0023】SELECT(選択)ボックス24は、本
体26及びヘッド部28を有する。本体26は、データ
フロー・アーク30及び32を含み、これらは内部の交
点34及び36としても示されている。交点36は、い
ずれがアーク32上へデータを与えるかについて(読み
取られる)ボックス38をまとめるセット・フォーマ(s
et-former)である。同様に交点34は、いずれがアーク
30上にデータを流すかについてボックス40をまとめ
る。照会から検索されるべき属性である部品番号46、
説明48、及び価格50は、ヘッド部28にある。ボッ
クス38及び40は、照会によりアクセスされる基本関
係表である在庫42及び見積もり44をそれぞれ表して
いる。ボックス24は、交点34と36とを結ぶ内部述
語エッジとして表される結合述語52により要求され
る、2つの基本関係表の中の一致する部品番号を識別す
るために照会に関して実行されるべきオペレーションを
包含する。交点34はさらに、これらの部品番号のう
ち、価格が100を越えるものを識別する自己参照述語
54を含む。
【0024】本発明の目的において、図2の各ボックス
すなわちノード(正式には「限量詞ノード」と称され
る)は、データフロー・アーク(正式には、「限量詞
列」と称される)により1又は複数の他のノードと結合
されることを注記する。例えば、基本関係ノード38
は、データフロー・アーク32により選択ノード24と
結合され、基本関係ノード40は、データフロー・アー
ク30により選択ノード24と結合される。選択ノード
40内部のオペレーションは、新たなストリームのデー
タ・レコードを作成し、これは、データフロー・アーク
58によりトップ(TOP)・ノード56へ結合される。ト
ップ・ノード56は、照会により要求された出力テーブ
ルを表す。
【0025】いくつかの周知のQGM最適化手順の目的
は、1又は複数のノードをマージ(merge:併合)するこ
とであり、これは、データフロー・アークを排除する
(壊す)ことにより可能である。例えば、上述のPirahe
sh et al.の文献では、任意の数のノードを単一の選択
ノードへマージするための1組の規則を記述している。
加えて、非存在もしくは非論理因子のサブ照会、セット
・オペレータ、外部結合(OUTER JOIN)集合体及びユーザ
定義拡張オペレータに関する所与の制限も含まれてい
る。従って当業者であれば、QGM最適化ステップ16
が、プラン最適化ステップ18(図1)において有用な
照会実行プランを構築する前であっても、多数のノード
及びデータフロー・アークを排除するべく通常QGMを
書き直すことは周知であろう。
【0026】参照整合性(RI)の確保 基本関係表における1又は複数の列は、「主キー」又は
「外部キー」等の「キー属性」を割り当てられることが
ある。基本関係表の主キーは、その関係において一義的
に各レコードを識別する。外部キーは、基本テーブル
(子)と、外部キー列属性により指示された別のテーブ
ル(親)との間の「参照」関係を確立する。ユニーク・
キーとは、その値がテーブル内のレコードを一義的に決
定する1組の列である。この定義によれば、主キーはユ
ニーク・キーである。よって、2つのテーブル間の親/
子の関係は、一方に対して外部キー属性を追加し、それ
を他方におけるユニーク・キー属性に関係付けることに
よって確立することができる。これは技術的に周知であ
る。このような関係は制限なく追加することができ、各
キー属性はいくつかの列にまたがっていてもよい。
【0027】一般的に云って参照制約は、子テーブルか
ら親テーブルのユニーク・キーへの、存在する可能性の
ある複数列外部キーに関連する。1つのテーブルには主
キーは1つのみであるが、ユニーク・キーは多数存在す
る可能性がある。
【0028】不都合なことに、データベースの親/子関
係の参照整合性を壊す可能性のあるデータベースの更新
として4つの型がある。すなわち、(a)新たな子レコ
ードを挿入する場合、(b)子レコードの外部キーを更
新する場合、(c)親レコードを削除する場合、及び
(d)親レコードの主キーを更新する場合である。
【0029】新たな行が子テーブルへ挿入されるとき、
その外部キー値は、列属性に従って親テーブルの主キー
値の1つに一致しなければならない。もし外部キー値が
いずれの主キー値とも一致しなければ、行を挿入する試
行は拒否される。なぜなら、親のない子が存在すること
を許容することになりデータベースを壊すことになるか
らである。親テーブルに新たな行を挿入する場合は、単
に子を持たない親となるだけであるのでこの問題を生じ
ない。子レコード内の外部キーを更新することは、この
問題とは別の形態である。外部キーが更新(UPDATE)ステ
ートメントにより変更される場合、更新されるレコード
を「親のない子」としないために、新たな値が、親テー
ブルのいずれかの主キー値に一致しなければならない。
【0030】1又は複数の子を持つ親レコードの削除に
ついては、これらの子レコードは親がなくなる。なぜな
ら、もはやこれらの子レコードの外部キー値は、親テー
ブル内の既存のいずれの主キー値にも一致しないからで
ある。子テーブルからレコードを削除することは問題な
い。なぜなら、その親が子を失うだけだからである。親
レコードの主キーを更新することは、この問題とは異な
る形態である。親レコードの主キーが変更される場合、
そのレコードの全ての既存の子レコードは、親のない子
となる。なぜなら、これらの子レコードの外部キーは、
もはや既存のいずれの主キー値にも一致しないからであ
る。
【0031】外部キーにより作成される各親/子関係に
ついて、SQLは、関連削除規則及び関連更新規則を提
供する。この削除規則は、ユーザが親レコードを削除し
ようとするとき、DBMSの動作を指定する。利用可能
な規則には、制限(RESTRICT)、カスケード(CASCADE)、
ヌル・セット(SET NULL)、及びデフォールト・セット(S
ET DEFAULT)が含まれる。更新規則もまた、ユーザが親
テーブルの主キー列の値を更新しようとするとき、これ
らのDBMSの動作の1つを指定する。通常の制限規則
は、単に試行されたオペレーションを拒否するのみであ
る。カスケード規則は、親レコードを削除又は更新する
コマンドに応答して、自動的に子テーブルからレコード
を削除したり更新したりする。
【0032】システムの概要 図3は、本発明の手順を実施するために適切なコンピュ
ータを用いたデータベース処理システム68の機能ブロ
ック図である。この実施例の構成は、説明のためにのみ
描かれたものであって、本発明のプロセス及びシステム
が、図3に示した配置を含めて多くの異なる有用な形態
によりシステム68内で実現可能であることは自明であ
ろう。システム68は、中央演算処理装置(CPU)7
0を含んでおり、これはパラレル・バス72へ接続され
ている。ユーザは、遠隔端末から若しくは他の周知の有
用な方法により照会入力端末74を用いてシステム68
へ照会を入力することができる。本発明で用いられる
「ユーザ照会」には、その照会に含まれる仕様に従って
1又は複数の出力データ・テーブルを作成することを目
的とするSQLコマンドの組合せが含まれる。データ出
力端末76は、照会結果をユーザに表示し、物理的に照
会入力端末74と共に設置することができる。
【0033】システム68は、アドレス空間78を備え
ており、これはプログラム・オブジェクトとデータ・オ
ブジェクトとを含むものとして概略的に示されている。
基本テーブル80は、バス72を用いて大容量記憶装置
82からアドレス空間へ入れられるデータ・オブジェク
トの例である。ビュー(view)定義84は、ビュー定義ス
テートメントに従って1又は複数の基本テーブルからの
要素により作成される「仮想テーブル」を表す別のデー
タ・オブジェクトである。外部大容量記憶装置82は、
一般的に大きな複数の基本テーブル(基本関係表とも称
される)を含み、基本テーブル86及び88で表されて
いる。これらの基本テーブルは、データベース管理シス
テムにおける周知の技術によりメモリ空間78と外部大
容量記憶装置82との間で部分的に又は全体として移動
される。
【0034】さらにアドレス空間78は制御プログラム
・オブジェクト90を含み、これは、システム68の他
の構成要素を管理する。これらの構成要素には、端末7
4から入力される照会を受け入れて、これを照会グラフ
・モデル(QGM)最適化器16へ送る照会パーサ(parse
r)14がある。制約コンパイラ(C.C.)24及び制約セ
ット(S.C.)モジュール26は、本発明の方法に従って
パーサとQGMとの間で相互に機能する。
【0035】QGM最適化器16は、ユーザ照会のQG
M表現を書き直すことにより、QGM最適化器16の出
力としてQGMの「正規の形式」を与える。例えば、Q
GM正規形式は、多くの基本テーブルからのデータフロ
ー・アークをもつ1つの選択ノード内で構造化され、基
本的かつ参照整合性の制限をうける大きな周期的結合グ
ラフを含んでいてもよい。「最適な」照会実行プランを
識別した後、QGM最適化器16は、このプランをプロ
グラム・オブジェクトとして作成する。これは、照会実
行プラン22としてアドレス空間78に示されている。
照会実行プラン22は、最終的に制御プログラム90の
補助により実行される。そして完了すると、得られた関
係表が表示装置76のデータ出力へ送られる。当業者で
あれば図3のシステム68の表現が一例であり、また、
制約セット処理モジュール26として示される本発明の
システム及びプロセスが照会最適化プロセスを用いる任
意のRDMSに組込み可能であることは自明であろう。
【0036】本発明のオペレーション シンタックス(構文の概要) 本発明は、従来技術の問題を解決する新規の方法により
周知のSQLステートメントを用いる。従って、以下に
重要なSQLステートメントを簡単に説明する。
【0037】SQLにおいて選択(SELECT)ステートメ
ントは、データを検索するために用いられ、一般的に
「SELECT<文節>FROM<文節>WHERE<文節>GROUP BY<文節>H
AVING<文節>ORDER BY<文節>」の形式である。これらの
文節は、通常、このシーケンスに従わなければならない
が、選択ステートメント及びFROM文節のみが必須であ
る。選択ステートメントの実行結果は、関係データベー
スに記憶された1又は複数の既存のテーブル又はビュー
からRDMSソフトウェアにより検索されたデータのサ
ブセットである。これは、RDMSソフトウェア及びデ
ータが選択されているテーブル又はビューの名前を記述
するFROM文節を用いて行われる。このデータのサブセッ
トは、「結果テーブル」と称される新たなテーブルとし
て取り扱われ、通常は一時テーブルを構成する。一般
に、選択ステートメントのSELECT文節で指定される項目
は、FROM文節で識別されるテーブルから結果テーブルに
戻されることになる列を決定する。
【0038】WHERE文節は、結果テーブルに戻されるべ
き行を決定する。一般的に、WHERE文節は、結果テーブ
ルに戻される各行が満足しなければならない「探索条
件」を含む。探索条件を満足する行は、中間セットを形
成し、この中間セットはSELECT文節の仕様に従ってさら
に処理される。探索条件は1又は複数の述語を含んでも
よく、その各々は2又は複数の列値、定数、又は相関値
の間の対比を指定する。WHERE文節の複数の述語は、互
いに論理オペレータ(Boolean operator)により接続され
ている。
【0039】結合(JOIN)オペレーションは、1つのテー
ブル又はビューからの行を別のテーブル又はビューへ付
加することによりテーブル又はビューを結合する。異な
るテーブル又はビューの行もしくは行の一部分は、共通
の列により水平に連結される。結合オペレーションは、
選択ステートメントのFROM文節で複数のテーブル又はビ
ューを名前指定することにより暗示されるのではなく、
SQLステートメントとして明示的に与えられる。必須
ではないが、通常、結合オペレーションは、行を結合す
るための列を識別するWHERE文節を含む。WHERE文節はま
た、結合される行を選択するために用いられる条件オペ
レーションと共にサブ照会の中に1又は複数の述語を含
んでもよい。
【0040】挿入(INSERT)ステートメントは、データベ
ースへデータを追加する。その形式は、「INSERT INTO
テーブル名 VALUES(定数[,...]|NULL)」である。挿入ス
テートメントは、VALUES文節に与えられた定数を用いて
1つの実行についての1つの完全な行を満たす。各テー
ブル列が作成されるときそれに対して制約がセットされ
ており、テーブル又は列の制約に適合しない誤りがある
場合、その挿入はエラーを伴う誤りとなる。SQLコン
パイラは、SQLコマンドにより変更されたデータに対
して制約検査を行うためのコードにコンパイルする内部
プロセスを発生する手段を有する。
【0041】削除(DELETE)ステートメントは、データを
取り除くために用いることができる。その形式は、「DE
LETE FROMテーブル名[WHERE]<条件文節>」である。削除
ステートメントは、WHERE文節の述語を満足するテーブ
ルの全てのレコードを削除する。
【0042】述語は、値を検査しかつステートメントの
影響がこれらの値へ適用されるべきか否かを判断するた
めに所与のステートメントにおいて用いられる表記であ
る。述語は、真(TRUE)、偽(FALSE)、又は不明(UNKNOWN)
の論理値を有してもよい。不明値は、比較においてNULL
が用いられるときに生じる。制約検査の用語において、
NOT NULLは、検査されている列がNULL値を含めないこと
を意味する。
【0043】記号の説明 疑似コードは、テーブルの組S={Ti,1≦i≦n}と
して与えられるとする数学的仮定を用いて設計される。
ここでTiは、mTi個の列c1,c2,...cmTiを有
し、xTi個の参照制約R(Ti,1),...R(Ti,xTi)に子
として参与し、yTi個の検査制約C(Ti,1),...C
(Ti,yTi)に参与する。
【0044】次の表S-1〜S-3は、表1〜表5に示す疑
似コードの具現化において用いられる記号を定義する。
【0045】形式 エラー収集関数は、呼び出されると、所与のエラーを収
集し、そのステートメントをロール・バックする。FROM
文節(又はINTO文節)に挙げられた第1のテーブルから
の(又は第1のテーブルへの)選択された行を削除する
(又は挿入する)ことに加えて、削除オペレータ(又は
挿入オペレータ)は、選択オペレータ等の他のオペレー
タへデータを流すこともできる。例えば、「SELECT c1,
2 from (delete c1,5 FROM T wherec1>5)」は、Tから
削除された各レコードにおける2つの列によりレコード
を選択する。第1の列は、削除されたレコードのc1
の値であり、第2の列は、常に5である。
【0046】これは、削除されたレコードの値を、どの
制約に違反があったのかに関する何らかの計算された情
報と共に例外テーブルへ挿入するために、作成された照
会において用いられる。例えば、次の照会「insert int
o E(delete c1,c2,c3 FROM T)」は、Tから全てのレコ
ードを削除して、削除された各レコードの列c1、c2
及びc3をテーブルEへ挿入するものである。
【0047】合成(compound)SQLが存在すると、1組
のSQLステートメントを互いにグループ化することが
でき、これらは共通のサブ表記を共有することができ
る。例えば、 begin insert into T1 select * from T1; create temporary table DT as (delete from T2) insert into E2 select * from DT; end となる。この照会は、先ずT1の内容を複製し、T2から
全てのレコードを削除し、そして削除されたレコードを
テーブルE2へ挿入する。
【0048】方法の実施手段 図4を参照すると、このプロセスは、ステップ130に
おいて、大容量記憶装置82中の1又は複数のテーブル
{Ti}をバルクロードすることにより自動的に開始さ
れる。このようなテーブルTiは、制約が検査されるま
ではペンディング状態に置かれることになる。テーブル
Tiは、テーブル86又は88(図3)のいずれで表す
こともできる。制約選択(SELECT CONSTRAINTS)プロセス
は、ステップ132に示すように、例えば「選択コマン
ド・オン(SELECT COMMAND ON)」等の呼出コマンドによ
り開始される。呼出コマンドは、SQL照会として実行
されてもよく、又はプロセッサ70へ自動的に渡されて
もよい。呼出コマンドによって、制約選択モジュールが
MAINで示される挿入照会を作成する。これは、ステッ
プ134に示されるように、テーブルTiに挿入される
べきであることを意味するレコードの「ダミー」挿入で
ある。
【0049】このようなダミー挿入照会の一般的事例の
好適例についての疑似コード表現を、以下の表1に示
す。表1〜表5に表された疑似コードに関して、当業者
であれば、これらの表1〜表5に示された疑似コードの
組合せ及び図4〜図8の流れ図によって、本発明を実施
できることは明らかであろう。本発明をさらに詳細に説
明するために、表1〜表5の一般的事例を用いた特定の
実施例を、表6〜表11に記述する。
【0050】
【表1】
【0051】再び図4を参照すると、ダミー照会問合わ
せが作成されると、ステップ136においてプロセッサ
は制約コンパイラ24(図3)を呼出して挿入コマンド
をコンパイルし、制約規則エンジンに従って制約違反を
検査する。コンパイラ24は、QMAINをコンパイルし
て、制約検査を行うためのコードを与えるべく修正され
た照会を作成する。表1における照会QMAINの修正の例
が、次の表2に示されている。
【0052】
【表2】
【表3】
【0053】図1、4及び表2を参照して、制約選択処
理をさらに説明する。上記表2においては、構文「rais
e_error('-3603"...)」は、コード番号「3603」をもつ
所与のエラーの例である。例である「3603」エラー・コ
ードのみでなく、任意のエラー・コードが報告されるこ
とを理解されたい。「WHERE」及び「CASE」ステートメ
ントは、上述のように制約違反を検査するために用いら
れる。ステップ136(図4)が完了すると、表2に示
された照会の実行により、制約違反に挿入されるべき各
レコードの検査が行われる。しかしながら、制約選択モ
ジュールは、図1で説明したように通常の照会処理に割
り込むことにより、またステップ138に示すように挿
入ステートメントを選択ステートメントで効果的に置き
換えるべく表2の照会を修正することにより、この状況
において利点を有する。この方法により、1又は複数の
テーブルTiに記憶されるようなバルクロード・データ
の制約検査のために用いることができる新たな照会が作
成される。
【0054】図4のステップ138のプロセスは、本発
明の好適な疑似コード例において以下の表3に示されて
いる。この中では、いずれの挿入ステートメントも選択
ステートメントで置き換えられている。
【0055】
【表4】
【表5】
【0056】図4及び図5を参照すると、本発明による
制約セット(SET CONSTRAINTS)方法はステップ140に
て図4から図5へと続く。判断ステップ142におい
て、制御プログラム又はユーザが、第1の制約違反が発
見されたときにエラーが発生したという情報のみを必要
としているか否かが判断される。もしそうであれば、こ
の事例は「検査のみ」と表記される。「検査のみ」の場
合、ステップ144において、図1において説明した通
常のQGM処理に従って、表3に示した形式の照会がコ
ンパイルされ、最適化され、そして実行される。その
後、ステップ146で作成されたエラー・データ報告メ
ッセージが伝達される。例えば、表示装置76へ渡され
るか又は後の検索のために大容量記憶装置82に記録さ
れる。ステップ147においてエラーがなければ、テー
ブルをペンディング状態から解放する。レベル1情報が
満足されるならば、処理はステップ148で終了する。
【0057】一方、レベル1以上の情報が所望される場
合、更なる情報を作成するか又は参照整合性を回復する
べく違反したレコードを削除するための以下に示す本発
明の態様を用いることができる。
【0058】図5及び以下の表4を参照すると、「検査
のみ」以上の情報が必要な場合、処理はステップ150
へ続く。ステップ150〜ステップ174の疑似コード
表現は、表4に示されている。従って、流れ図のステッ
プを追うと共に表4を参照することが有用であろう。照
会をコンパイルする前に、参照制約について拒否された
存在する述語を変換することにより修正してサブ照会形
式とする。例えば、ステップ150は、表3のライン4
7〜61に対応する。ステップ152において、サブ照
会は、その対応するテーブルと外部結合される。これ
は、表4のライン25〜35に示されている。表4は、
後に図6と関連して説明する。
【0059】
【表6】
【表7】
【表8】
【0060】図5及び図6を参照すると、処理はステッ
プ154にて図6へ続き、ステップ158は、検査制約
に違反するか又は参照整合性に違反するかのいずれかの
制約違反を呈する1又は複数のテーブルTi内の全ての
レコードを識別するコードを作成する。ステップ162
において制約セット・モジュールは、違反している全て
のレコードに対して、全ての制約名を含む各違反レコー
ドについてのメッセージを構築できるコードを発生す
る。このメッセージは、ストリングとして連結された全
ての制約名を含む。メッセージを作成するためのコード
が発生された後、ステップ164において制約セット・
モジュールは、情報を新しいテーブルに置く働きをもつ
挿入ステートメントを構築する。新しいテーブルは、制
約違反のレコードを識別する列を含み、そして各識別さ
れたレコードについて、報告時間を示すタイムスタンプ
と構築されたメッセージとを含む。この新しいテーブル
は、「例外テーブル」と称され、ここではEiと示され
る。
【0061】図6及び表4を参照すると、前述の情報
は、例えば「許容年齢範囲外」のように自動的にエラー
にフラグ付けをして、それを識別するために用いられ
る。そしてまた、例えば「19歳」というように、違反
しているレコード列エントリも示す。好適には、この情
報は、エラーがフラグ付けされた時点を示すタイプスタ
ンプを含む。ステップ166では、違反を有するテーブ
ルを「整理する(fix-up)」ことが望ましいか否かを問い
合わせる。「整理する」とは、基本制約であれ参照整合
性であれ制約違反しているレコードを削除することを意
味し、またさらに親の無くなったレコードをデータベー
スから取り除くことを必要とする。整理することを所望
しない場合は、ステップ168、170及び171が実
行される。ステップ168において、作成され修正され
た照会が、図1において説明した通常の照会変換プロセ
スに従ってコンパイルされ、最適化されそして実行され
る。その後、ステップ164で発生された挿入ステート
メントを用いて例外テーブルEiに入れられる。ステッ
プ171においてエラーがなければ、テーブルはペンデ
ィング状態から解放される。整理しない場合は、ステッ
プ174で終了する。
【0062】図6及び図7を参照すると、列エントリ違
反を含むレコードを消去するためにデータベースを修復
する場合、プロセスはステップ172へ続く。表5は、
上述の「整理する」場合における実施例の疑似コードの
具現化を示している。一般に削除ステートメントは、違
反しているレコードをデータベースから削除するために
挿入ステートメントの前に適用されなければならない。
そして、削除されたレコードは例外テーブルEiへ挿入
され、次のような照会となる。
【0063】
【表9】
【表10】
【表11】
【表12】
【0064】図7及び表5には、整理する場合を実施す
る制約選択モジュールの処理が示されている。ステップ
176においてモジュールは、違反エントリをもつ各レ
コードについて各レコードID(rid)を選択する。ス
テップ178においてモジュールは、違反レコードを表
すために、挿入を共通テーブル表記(VIOLi)で置き換え
ることにより整理プロセスを実施する。例えば、ステッ
プ176〜178の疑似コード表現は、表5中ライン3
〜4に示すようになる。ステップ180においてモジュ
ールは、一時テーブルDTiを作成する。これは後にデ
ータベースから削除するべき違反レコードを選択するた
めに用いられる。ステップ180の疑似コード表現は、
表5中ライン121〜129に示される。ステップ18
2では、先ずこの機能を実行する挿入ステートメントを
作成することにより、削除されたレコードを例外テーブ
ルに挿入するためのコードを作成する。例外テーブルE
iは、各バルクロード・テーブルTiについて存在する。
ステップ182を実行する疑似コードは、表5中ライン
130〜137に示される。例外テーブルは、実質的に
違反テーブルであり、任意の違反レコードが削除される
前に元のデータに内在する違反を明示する全てのエラー
をフラグ付けするために用いられる。
【0065】図8は、図7のステップ184からの続き
である。ステップ188において、照会の中に親テーブ
ルからの削除ステートメントがあると、制約コンパイラ
は、親のないレコードを除くコードに自動的にコンパイ
ルする。この方法では、親のない子レコードは、消去さ
れる前に調べられる。ステップ190において、図3の
システムが、上記のステップで作成されたコードを実行
する。その際、図1に関して説明した通常の方法により
照会がコンパイルされ、最適化され、そして実行され
る。これらのテーブルは、ステップ191でペンディン
グ状態から解放される。図3のシステムによる本発明の
方法の処理は、ステップ192において終了する。
【0066】本発明の方法の実施形態 図9〜図11は、好適例として表1〜表5に示した一般
事例の疑似コードを用いた本発明の方法の適用を示すた
めの特定例である。一般事例の疑似コードは、修正状態
で示されており、特定例の値は表6〜表10に置き換え
られている。
【0067】図9には、記憶装置300上に記憶された
3個のテーブル304、308及び312が示されてい
る。空テーブル304及び308は、それぞれ従業者(E
MP)情報及びプロジェクト(PROJ)情報を記憶するために
作成される。状態302は、ペンディング状態を示して
いる。この状態302は、検査のために留まるデータを
受信した時点でテーブルが置かれる状態を示す。データ
306Aは空ストリング又は単に空白であるので、テー
ブル304は空である。テーブル312は、部門(DEPT)
情報を格納し、そのデータ領域313は各部門に関する
情報を格納する。
【0068】テーブル304、308及び312は、次
の定義に従って作成される。
【0069】再び図9を参照すると、テープ装置314
は、データ318を有するEMPテーブル316及びデー
タ322を有するPROJテーブル320を格納する。テー
プ上のテーブルからのデータは、記憶装置300上の空
テーブルへバルク・ロードされる。EMPテーブルは、EM
P.EMPNO、EMP.DEPTNO、及びEMP.AGEで示される列317
を含み、それぞれ従業者番号、部門番号、及び各従業者
の年齢と定義される。PROJテーブルは、PROJ.PROJNO及
びPROJ.LEADで示される列319を含み、それぞれプロ
ジェクト番号及びプロジェクト・リーダーと定義され
る。プロジェクト・リーダーは従業者であり、EMPテー
ブルによっても識別されなければならない。
【0070】図10を参照すると、データをテーブルへ
ダウンロードするために周知のバルクロード機構が用い
られると、EMPテーブル及びPROJテーブルは、テープか
らのデータを入力された後、ペンディング状態に置かれ
る。従って、EMPテーブル304は新しいデータ306
Bを格納し、PROJテーブル308は新しいデータ310
Bを格納する。しかしながら、テーブルがペンディング
状態にあると云うことは、これらが用いられないことを
意味する。データ313を格納しかつバルクロードによ
り影響を受けないDEPTテーブル312は、利用可能(非
ペンディング)状態にある。DEPTテーブルは、DEPT.DEPT
NO、NODEPT.NAME、及びDAPT.MGRNOで示される列315
を格納し、それぞれ部門番号、部門名、及び部門管理者
番号と定義される。
【0071】図11を参照すると、本発明により有効と
なる制約検査機構を適用した後は、EMPテーブル及びPRO
Jテーブルは、もはやペンディング状態302と称さな
い。制約検査の後、それぞれのテーブル304及び30
8のデータ306C及び310Cは利用可能となる。DE
PTテーブル312は、そのデータ313の参照整合性を
確保するために用いられるが、これもまた利用可能であ
る。
【0072】制約検査の後は、次の制約条件に適合しな
ければならない。テーブル304のEMP.DEPTNOの列は、
DEPTテーブル312内のレコードと参照整合性がなけれ
ばならない。さらに、EMP.AGEの列は、制約MINAGEの違
反について検査されなければならない。仮にこの制約
が、従業者の最低年齢が16歳でなければならないこと
(すなわち、EMP.AGE≧16)とする。PROJテーブルのPROJ.
LEADの列もまた、EMPテーブル内に認められるEMP.EMPNO
との参照整合性を確保するべく検査されなければならな
い。
【0073】これらの制約を念頭に置くと、表5〜表9
に示した好適な一般事例の疑似コードは、図9〜図11
のテーブルの事例から導出された値に置き換えられて以
下に示される。
【0074】表6では、ダミー挿入照会が、各テーブル
についての挿入ステートメントとして発生されている。
【0075】
【表13】
【0076】表7を参照すると、ダミー挿入照会が発生
された後、プロセッサが制約コンパイラ24を呼び出し
て挿入コマンドをコンパイルし、上述の図9〜図11に
おいて説明した制約規則に従って制約違反を検査する。
得られた照会を次に示す。
【0077】
【表14】
【0078】表8を参照すると、照会は、全ての挿入ス
テートメントを選択ステートメントで置き換えることに
より修正される。得られた照会を次に示す。
【0079】
【表15】
【0080】この照会は、違反が発見されたことを報告
するためにコンパイルされ、最適化され、そして実行さ
れる。制約に違反した全てのレコード、及びいずれの制
約に違反したかを報告することを所望する場合は、例外
テーブルを作成することが必要となる。従って、少なく
とも1つの制約に違反しているEMPテーブル又はPROJテ
ーブルからの各レコードについて、レコードをそれぞれ
例外テーブルEEMP又はEPROJに挿入することが必要で
ある。各例外テーブルは、違反しているレコードの各列
を格納する。好適には、タイムスタンプ、及び、全ての
制約違反を連結した名前である識別メッセージもまたテ
ーブル内に置かれる。得られた照会を、次の表9に示
す。
【0081】
【表16】
【0082】テーブルを整理する場合は、挿入ステート
メントの前に、データベースから違反レコードを全て削
除するための削除ステートメントを適用しなければなら
ない。そして削除されたレコードは、例外テーブルへ挿
入される。この結果は、次の照会となる。
【0083】
【表17】
【表18】
【0084】カスケード機能を強化するために制約プロ
セッサは、EMPテーブルからのレコードの削除によってP
ROJテーブル内の親の無くなった全てのレコードを削除
するために、表10の照会を修正する更なるコードをコ
ンパイルする。この結果が、次の照会となる。
【0085】
【表19】
【表20】
【0086】制約セット構文 図12は、制約セット(SET CONSTRAINTS)・コマンドに
ついての構文図400を純粋に一例として示すものであ
るが、本発明の機能を説明するために有用であり、当業
者が本発明を実施し利用することを補助するものであ
る。コマンド・ライン404は、必要な構文ステートメ
ントである「SET CONSTRAINTS」を含む。文節「IMMEDIA
TE CHECKED(即時検査)」と組み合わされたこのステート
メントは、モジュールを呼び出すために用いることがで
きる。さらにライン404に示すように、制約違反につ
いて検査されるために「テーブル名」が識別される必要
がある。制約セット・コマンドは、検査をすぐに開始す
ることを指定する文節「IMMEDIATE CHECKED」と共に呼
び出されてもよい。文節「FOR-EXCEPTION」は、外部キ
ー又は検査キー制限の違反のある行を、テーブルEi等
の例外テーブルへ複写して、元のテーブルから削除する
ことを指定する。文節「テーブル名1」は、いずれのテ
ーブルから制約違反している行を複写するのかを指定す
る。文節「USE-テーブル名2」は、エラー行が複写され
るべき特定の例外テーブルを指定する。本発明の範囲又
は要旨から逸脱することなく記述された構文の他の変形
を用いることも可能である。
【0087】以上、基本的に方法として本発明を説明し
たが、当業者であれば、図3に関連する上述の装置を、
本発明の方法を容易に実施するべくプログラムし又は設
計することは自明であろう。さらに、データ処理システ
ムと共に用いる図13に示す予め記録されたフロッピー
・ディスク502等の製造品又は他の同様のコンピュー
タ・プログラム製品としては、磁気記憶媒体504等の
記憶媒体、及び、図13のプログラム手段506、50
8、510及び512等の記憶媒体上に記録されたプロ
グラム手段が含まれる。これによってデータ処理システ
ムが、本発明の方法を容易に実施することができる。こ
のような装置及び製造品もまた、本発明の要旨及び範囲
内に含まれるものとする。
【0088】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0089】(1)制約エンジンを伴う照会コンパイラ
と、複数のデータ・レコードを格納する少なくとも1つ
のテーブルTiをもつデータベースを記憶するための大
容量記憶装置を含む記憶装置と、照会グラフにより表現
される照会を処理するプロセッサとを有する関係データ
ベース管理システム(RDMS)において、前記データ・
レコードの各々が前記RDMSにより一義的に識別可能
であり、前記テーブルTi内のデータ・レコードにおけ
る制約違反を検査する方法であって、1又は複数のレコ
ードを前記テーブルTiへ挿入する挿入照会QMAINを発
生するステップと、挿入コードと前記挿入照会QMAIN
より指定された1又は複数のレコードの制約違反を検査
するための検査コードとを含むコンパイルされた挿入コ
マンドを作成するために前記挿入照会QMAINをコンパイ
ルするステップと、前記テーブルTiの各レコードにつ
いて制約検査するべく、選択コードと前記検査コードと
を含む修正されたコードを作成するために、前記挿入コ
ードをコンパイルされた選択コマンドで置き換えること
により前記挿入照会QMAINを修正するステップとを有す
る制約違反の検査方法。 (2)前記修正されたコードが、エラー報告メッセージ
により少なくとも1つの制約違反を報告する上記(1)
に記載の方法。 (3)前記修正されたコードが、制約違反を呈するテー
ブルTi内の全てのレコードを識別しかつ報告する上記
(2)に記載の方法。 (4)前記修正されたコードが、制約違反を呈するテー
ブルTi内の各レコードについてのストリングを報告
し、前記ストリングが連結された制約名を含み、前記連
結された制約名の中の各制約名がレコードの呈した制約
違反に対応する上記(3)に記載の方法。 (5)前記RDMSが、記憶装置に記憶される例外テー
ブルEiを含み、さらに制約違反を呈する各レコードに
ついてのレコード識別子と、連結された制約名を含む各
対応するストリングとを、前記例外テーブルEiに入れ
るための挿入コマンドを構築するステップを有する上記
(4)に記載の方法。 (6)前記構築された挿入コマンドが、エラー時点を示
すタイムスタンプを前記例外テーブルEiに入れるため
に適応される上記(5)に記載の方法。 (7)前記構築された挿入コマンドを実行することによ
り、制約違反を呈したレコードの列エントリと、制約違
反を呈した各レコードについてのエラー報告メッセージ
とを前記例外テーブルEi内に入れる上記(5)に記載
の方法。 (8)前記構築された挿入コマンドを実行することによ
り、制約違反を呈したレコードの列エントリと、制約違
反を呈した各レコードについてのエラー報告メッセージ
と、制約違反を呈した各レコードについてのタイムスタ
ンプとを前記例外テーブルEi内に入れる上記(6)に
記載の方法。 (9)違反しているレコードを削除するために、(a)
制約違反を呈していると識別された前記テーブルTi内
の各レコードを選択するステップと、(b)前記ステッ
プ(a)にて選択された各レコードを削除するステップ
とにより前記テーブルTiを整理するステップを有する
上記(5)に記載の方法。 (10)前記ステップ(b)にて削除された全てのレコ
ードの複写を前記例外テーブルEiに挿入可能とするた
めに、レコード挿入コマンドを作成するステップを有す
る上記(9)に記載の方法。 (11)違反しているレコードを削除するために、
(a)制約違反を呈していると識別された前記テーブル
Ti内の各レコードを選択するステップと、(b)前記
ステップ(a)にて選択された各レコードを削除するス
テップとにより前記テーブルTiを整理するステップを
有する上記(8)に記載の方法。 (12)前記レコード挿入コマンドを実行することによ
り、前記ステップ(b)で削除されたレコードの複写を
前記例外テーブルEiに入れる上記(11)に記載の方
法。 (13)テーブルTiから削除された全ての親レコード
が、該親レコードの削除により親の無くなった子レコー
ドの全てを識別するために用いられ、かつカスケード削
除コマンドを出すことによりこれらの識別された親の無
い子レコードが削除される上記(12)に記載の方法。 (14)削除された親の無い各子レコードの複写が、前
記例外テーブルEiに挿入される上記(13)に記載の
方法。 (15)制約エンジンを伴う照会コンパイラと、複数の
データ・レコードを格納する少なくとも1つのテーブル
Tiをもつデータベースを記憶するための大容量記憶装
置を含む記憶装置と、照会グラフにより表現される照会
を処理するプロセッサと、前記記憶装置に記憶される例
外テーブルEiとを有する関係データベース管理システ
ム(RDMS)において、前記データ・レコードの各々が
前記RDMSにより一義的に識別可能であり、前記テー
ブルTi内のデータ・レコードにおける制約違反を検査
する方法であって、1又は複数のレコードを前記テーブ
ルTiへ挿入する挿入照会QMAINを発生するステップ
と、挿入コードと前記挿入照会QMAINにより指定された
1又は複数のレコードの制約違反を検査するための検査
コードとを含むコンパイルされた挿入コマンドを作成す
るために前記挿入照会QMAINをコンパイルするステップ
と、前記テーブルTiの各レコードについて制約検査す
るべく、選択コードと前記検査コードとを含む修正され
たコードを作成するために、前記挿入コードをコンパイ
ルされた選択コマンドで置き換えることにより前記挿入
照会QMAINを修正するステップであって、前記修正され
たコードが、少なくとも1つの制約違反を報告しかつ制
約違反を呈する前記テーブルTi内の全てのレコードを
エラー報告メッセージにより識別するために実行される
ステップと、前記エラー報告メッセージと、制約違反を
呈するレコードの全ての列エントリとを前記例外テーブ
ルEiに入れるための挿入コマンドを構築するステップ
とを有する制約違反の検査方法。 (16)前記構築された挿入コマンドを実行することに
より、制約違反を呈したレコードの列エントリと、制約
違反を呈した各レコードについてのエラー報告メッセー
ジとを前記例外テーブルEi内に入れる上記(15)に
記載の方法。 (17)違反しているレコードを削除するために、
(a)制約違反を呈していると識別された前記テーブル
Ti内の各レコードを選択するステップと、(b)前記
ステップ(a)にて選択された各レコードを削除するス
テップとにより前記テーブルTiを整理するステップを
有する上記(16)に記載の方法。 (18)複数のデータ・レコードを格納する少なくとも
1つのテーブルTiをもつデータベースを記憶するため
の大容量記憶装置を含む記憶装置と、照会グラフにより
表現される照会を処理するプロセッサとを有する関係デ
ータベース管理システム(RDMS)において、前記デー
タ・レコードの各々が前記RDMSにより一義的に識別
可能である場合のバルク・データの制約検査システムに
おいて、前記テーブルTiへ挿入される1又は複数のレ
コードについての挿入照会QMAINを発生する、前記デー
タ・プロセッサへ接続された挿入照会発生手段と、挿入
コードと前記挿入照会QMAINにより指定された1又は複
数のレコードの制約違反を検査するための検査コードと
を含むコンパイルされた挿入コマンドを作成するために
前記挿入照会QMAINをコンパイルする、制約エンジンを
伴う制約コンパイラと、前記テーブルTiの各レコード
について制約検査するべく、選択コードと前記検査コー
ドとを含む修正されたコードを作成するために、前記挿
入コードをコンパイルされた選択コマンドで置き換える
ことにより前記挿入照会QMAINを修正する、前記データ
・プロセッサへ接続された照会修正手段とを有するバル
ク・データの制約検査システム。 (19)少なくとも1つの制約違反をエラー報告メッセ
ージにより報告するために前記修正されたコードを実行
する、前記データ・プロセッサへ接続された選択及び制
約検査コマンド実行手段を有する上記(18)に記載の
バルク・データの制約検査システム。 (20)前記修正されたコードが、テーブルTi内の制
約違反を呈する全てのレコードを識別しかつ報告する上
記(19)に記載のバルク・データの制約検査システ
ム。 (21)前記修正されたコードが、テーブルTi内の制
約違反を呈する各レコードについてのストリングを報告
し、前記ストリングが連結された制約名を含み、前記連
結された制約名の中の各制約名がレコードの呈した制約
違反に対応する上記(20)に記載のバルク・データの
制約検査システム。 (22)前記RDMSが、記憶装置に記憶される例外テ
ーブルEiを含み、さらに制約違反を呈する各レコード
についてのレコード識別子と、連結された制約名を含む
各対応するストリングとを、前記例外テーブルEiに入
れるための挿入コマンドを構築する、前記データ・プロ
セッサへ接続されたコマンド発生手段を有する上記(2
1)に記載のバルク・データの制約検査システム。 (23)違反しているレコードを削除するために、
(a)制約違反を呈していると識別された前記テーブル
Ti内の各レコードを選択する、前記データ・プロセッ
サへ接続された選択手段と、(b)前記選択手段により
選択された各レコードを削除する、前記データ・プロセ
ッサへ接続されたレコード削除手段とを含む前記テーブ
ルTiを整理する手段を有する上記(22)に記載のバ
ルク・データの制約検査システム。 (24)前記レコード削除手段により削除された全ての
レコードの複写を前記例外テーブルEiに挿入可能とす
るために、レコード挿入コマンドを作成する手段を有す
る上記(23)に記載のバルク・データの制約検査シス
テム。 (25)データベース処理システムにおいて、各データ
・レコードが前記システム内で一義的に識別可能である
ような複数のデータ・レコードを格納する少なくとも1
つのテーブルTiを記憶するデータ記憶装置を含む記憶
装置と、照会グラフにより表現される照会を処理する、
前記データ記憶装置へ接続されたデータ・プロセッサ
と、前記テーブルTiへ挿入される1又は複数のレコー
ドについての挿入照会QMAINを発生する、前記データ・
プロセッサへ接続された挿入照会発生手段と、挿入コー
ドと前記挿入照会QMAINにより指定された1又は複数の
レコードの制約違反を検査するための検査コードとを含
むコンパイルされた挿入コマンドを作成するために前記
挿入照会QMAINをコンパイルする、制約エンジンを伴う
制約コンパイラと、前記テーブルTiの各レコードにつ
いて制約検査するべく、選択コードと前記検査コードと
を含む修正されたコードを作成するために、前記挿入コ
ードをコンパイルされた選択コマンドで置き換えること
により前記挿入照会QMAINを修正する、前記データ・プ
ロセッサへ接続された照会修正手段とを有するデータベ
ース処理システム。 (26)少なくとも1つの制約違反をエラー報告メッセ
ージにより報告するために前記修正されたコードを実行
する、前記データ・プロセッサへ接続された選択及び制
約検査コマンド実行手段を有する上記(25)に記載の
データベース処理システム。 (27)前記修正されたコードが、テーブルTi内の制
約違反を呈する全てのレコードを識別しかつ報告する上
記(26)に記載のデータベース処理システム。 (28)前記修正されたコードが、テーブルTi内の制
約違反を呈する各レコードについてのストリングを報告
し、前記ストリングが連結された制約名を含み、前記連
結された制約名の中の各制約名がレコードの呈した制約
違反に対応する上記(27)に記載のデータベース処理
システム。 (29)記憶装置に記憶される例外テーブルEiを含
み、さらに制約違反を呈する各レコードについてのレコ
ード識別子と、連結された制約名を含む各対応するスト
リングとを、前記例外テーブルEiに入れるための挿入
コマンドを構築する、前記データ・プロセッサへ接続さ
れたコマンド発生手段を有する上記(28)に記載のデ
ータベース処理システム。 (30)違反しているレコードを削除するために、
(a)制約違反を呈していると識別された前記テーブル
Ti内の各レコードを選択する、前記データ・プロセッ
サへ接続された選択手段と、(b)前記選択手段により
選択された各レコードを削除する、前記データ・プロセ
ッサへ接続されたレコード削除手段とを含む前記テーブ
ルTiを整理する手段を有する上記(29)に記載のデ
ータベース処理システム。 (31)前記レコード削除手段により削除された全ての
レコードの複写を前記例外テーブルEiに挿入可能とす
るために、レコード挿入コマンドを作成する手段を有す
る上記(30)に記載のデータベース処理システム。 (32)制約エンジンを伴うコンパイラと、複数のデー
タ・レコードを格納する少なくとも1つのテーブルTi
をもつデータベースを記憶するための大容量記憶装置を
含む記憶装置と、照会グラフにより表現される照会を処
理するプロセッサとを有する関係データベース処理シス
テムにおいて、前記データ・レコードの各々が前記シス
テムにより一義的に識別可能である場合に前記コンパイ
ラを用いて前記テーブルTi内の前記複数のデータ・レ
コードにおける制約違反を検査するために前記システム
と共に用いるコンピュータ・プログラム製品であって、
記録媒体と、前記テーブルTiへ挿入される1又は複数
のレコードについての挿入照会QMAINを発生するべく前
記データ・プロセッサに対して指示する、前記記録媒体
上に記録された手段と、挿入コードと前記挿入照会Q
MAINにより指定された1又は複数のレコードの制約違反
を検査するための検査コードとを含むコンパイルされた
挿入コマンドを作成するために前記挿入照会QMAINをコ
ンパイルするべく前記コンパイラに対して指示する、前
記記録媒体上に記録された手段と、前記テーブルTiの
各レコードについて制約検査するべく、選択コードと前
記検査コードとを含む修正されたコードを作成するため
に、前記挿入コードをコンパイルされた選択コマンドで
置き換えることにより前記挿入照会QMAINを修正するべ
く前記データ・プロセッサに対して指示する、前記記録
媒体上に記録された手段とを有するコンピュータ・プロ
グラム製品。 (33)少なくとも1つの制約違反をエラー報告メッセ
ージにより報告するために前記修正されたコードを実行
するべく前記データ・プロセッサに対して指示する、前
記記録媒体上に記録された手段を有する上記(32)に
記載のコンピュータ・プログラム製品。 (34)前記修正されたコードが、テーブルTi内の制
約違反を呈する全てのレコードを識別しかつ報告する上
記(33)に記載のコンピュータ・プログラム製品。 (35)前記修正されたコードが、テーブルTi内の制
約違反を呈する各レコードについてのストリングを報告
し、前記ストリングが連結された制約名を含み、前記連
結された制約名の中の各制約名がレコードの呈した制約
違反に対応する上記(32)に記載のコンピュータ・プ
ログラム製品。 (36)前記データベース処理システムが、記憶装置に
記憶される例外テーブルEiを含み、さらに制約違反を
呈する各レコードについてのレコード識別子と、連結さ
れた制約名を含む各対応するストリングとを、前記例外
テーブルEiに入れるための挿入コマンドを構築するべ
く前記データ・プロセッサに指示する、前記記録媒体上
に記録された挿入コマンド発生手段を有する上記(3
4)に記載のコンピュータ・プログラム製品。 (37)違反しているレコードを削除するために、
(a)制約違反を呈していると識別された前記テーブル
Ti内の各レコードを選択する、前記データ・プロセッ
サへ接続された選択手段と、(b)前記選択手段により
選択された各レコードを削除する、前記データ・プロセ
ッサへ接続されたレコード削除手段とを含み、前記テー
ブルTiを整理するべく前記記録媒体上に記録された手
段を有する上記(36)に記載のコンピュータ・プログ
ラム製品。 (38)前記レコード削除手段により削除された全ての
レコードの複写を前記例外テーブルEiに挿入可能とす
るために、レコード挿入コマンドを作成するべく前記デ
ータ・プロセッサに対して指示する、前記記録媒体上に
記録された手段を有する上記(35)に記載のコンピュ
ータ・プログラム製品。
【図面の簡単な説明】
【図1】本発明の方法を用いた照会変換プロセスの概略
的表現を示す図である。
【図2】具体的SQL照会に対する先行技術による照会
グラフ・モデル(QGM)を示す図である。
【図3】本発明によるバルク・データ制約検査システム
の適用に適切な関係データベース・システムの機能ブロ
ック図である。
【図4】本発明の方法の実行において用いられるステッ
プの流れ図である。
【図5】本発明の方法の実行において用いられるステッ
プの流れ図である。
【図6】本発明の方法の実行において用いられるステッ
プの流れ図である。
【図7】本発明の方法の実行において用いられるステッ
プの流れ図である。
【図8】本発明の方法の実行において用いられるステッ
プの流れ図である。
【図9】データベース内の空テーブルへバルク・ロード
されるデータの例である。
【図10】図4〜図8の流れ図に従って本発明のバルク
・データ制約検査方法を図3のシステムにより適用でき
るように、データをバルク・ロードされてペンディング
状態に置かれた図9のデータベースのテーブル例を示す
図である。
【図11】本発明の方法及びシステムに従ってテーブル
内の個々のバルク・データが制約検査された後の、図1
0のペンディング状態のデータベース・テーブルの例を
示す図である。
【図12】本発明を実働化するために有用なコマンド・
シンタックスを示す図である。
【図13】本発明の具体的ソフトウェアを記憶するため
に有用な、コンピュータ・プログラム製品を記録する媒
体を示す図である。
【符号の説明】
13 字句解析 14 構文解析及び意味解析 15 照会グラフ・モデル(QGM) 16 QGM最適化 18 プラン最適化 20 QEP 22 プラン調整 24 制約コンパイラ 26 制約セット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ミア・ハミッド・ピラヘッシュ アメリカ合衆国95120、カリフォルニア 州、サンノゼ、クアイル・クリーク・サ ークル 1282 (72)発明者 リチャード・セフトン・シードル カナダ、エムフォーエスワンジーセブ ン、オンタリオ州、トロント、ディビス ビル・アベニュー、アパートメント・ワ ンセブンワンツー、141 (72)発明者 カリスト・ポール・ツザルテ カナダ、エルワンヴイシックスエイチツ ー、オンタリオ州、ピッカリング、フェ アフィールド・クレセント 1626 (56)参考文献 特開 平2−171832(JP,A) 特開 平6−337807(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/00 513 G06F 17/30

Claims (31)

    (57)【特許請求の範囲】
  1. 【請求項1】制約エンジンを伴う照会コンパイラと、複
    数のデータ・レコードを格納する少なくとも1つのテー
    ブルTiをもつデータベースを記憶するための大容量記
    憶装置を含む記憶装置と、照会グラフにより表現される
    照会を処理するプロセッサとを有する関係データベース
    管理システム(RDMS)において、前記データ・レコー
    ドの各々が前記RDMSにより一義的に識別可能であ
    り、前記テーブルTi内のデータ・レコードにおける制
    約違反を検査する方法であって、 1又は複数のレコードを前記テーブルTiへ挿入する挿
    入照会QMAINを発生するステップと、 挿入コードと前記挿入照会QMAINにより指定された1又
    は複数のレコードの制約違反を検査するための検査コー
    ドとを含むコンパイルされた挿入コマンドを作成するた
    めに前記挿入照会QMAINをコンパイルするステップと、 前記テーブルTiの各レコードについて制約検査するべ
    く、選択コードと前記検査コードとを含む修正されたコ
    ードを作成するために、前記挿入コードをコンパイルさ
    れた選択コマンドで置き換えることにより前記挿入照会
    MAINを修正するステップとを有する制約違反の検査方
    法。
  2. 【請求項2】前記修正されたコードが、エラー報告メッ
    セージにより少なくとも1つの制約違反を報告する請求
    項1に記載の方法。
  3. 【請求項3】前記修正されたコードが、制約違反を呈す
    るテーブルTi内の全てのレコードを識別しかつ報告す
    る請求項2に記載の方法。
  4. 【請求項4】前記修正されたコードが、制約違反を呈す
    るテーブルTi内の各レコードについてのストリングを
    報告し、前記ストリングが連結された制約名を含み、前
    記連結された制約名の中の各制約名がレコードの呈した
    制約違反に対応する請求項3に記載の方法。
  5. 【請求項5】前記RDMSが、記憶装置に記憶される例
    外テーブルEiを含み、さらに制約違反を呈する各レコ
    ードについてのレコード識別子と、連結された制約名を
    含む各対応するストリングとを、前記例外テーブルEi
    に入れるための挿入コマンドを構築するステップを有す
    る請求項4に記載の方法。
  6. 【請求項6】前記構築された挿入コマンドが、エラー時
    点を示すタイムスタンプを前記例外テーブルEiに入れ
    るために適応される請求項5に記載の方法。
  7. 【請求項7】前記構築された挿入コマンドを実行するこ
    とにより、制約違反を呈したレコードの列エントリと、
    制約違反を呈した各レコードについてのエラー報告メッ
    セージとを前記例外テーブルEi内に入れる請求項5に
    記載の方法。
  8. 【請求項8】前記構築された挿入コマンドを実行するこ
    とにより、制約違反を呈したレコードの列エントリと、
    制約違反を呈した各レコードについてのエラー報告メッ
    セージと、制約違反を呈した各レコードについてのタイ
    ムスタンプとを前記例外テーブルEi内に入れる請求項
    6に記載の方法。
  9. 【請求項9】違反しているレコードを削除するために、 (a)制約違反を呈していると識別された前記テーブル
    Ti内の各レコードを選択するステップと、 (b)前記ステップ(a)にて選択された各レコードを
    削除するステップとにより前記テーブルTiを整理する
    ステップを有する請求項5に記載の方法。
  10. 【請求項10】前記ステップ(b)にて削除された全て
    のレコードの複写を前記例外テーブルEiに挿入可能と
    するために、レコード挿入コマンドを作成するステップ
    を有する請求項9に記載の方法。
  11. 【請求項11】違反しているレコードを削除するため
    に、 (a)制約違反を呈していると識別された前記テーブル
    Ti内の各レコードを選択するステップと、 (b)前記ステップ(a)にて選択された各レコードを
    削除するステップとにより前記テーブルTiを整理する
    ステップを有する請求項8に記載の方法。
  12. 【請求項12】前記レコード挿入コマンドを実行するこ
    とにより、前記ステップ(b)で削除されたレコードの
    複写を前記例外テーブルEiに入れる請求項11に記載
    の方法。
  13. 【請求項13】テーブルTiから削除された全ての親レ
    コードが、該親レコードの削除により親の無くなった子
    レコードの全てを識別するために用いられ、かつカスケ
    ード削除コマンドを出すことによりこれらの識別された
    親の無い子レコードが削除される請求項12に記載の方
    法。
  14. 【請求項14】削除された親の無い各子レコードの複写
    が、前記例外テーブルEiに挿入される請求項13に記
    載の方法。
  15. 【請求項15】制約エンジンを伴う照会コンパイラと、
    複数のデータ・レコードを格納する少なくとも1つのテ
    ーブルTiをもつデータベースを記憶するための大容量
    記憶装置を含む記憶装置と、照会グラフにより表現され
    る照会を処理するプロセッサと、前記記憶装置に記憶さ
    れる例外テーブルEiとを有する関係データベース管理
    システム(RDMS)において、前記データ・レコードの
    各々が前記RDMSにより一義的に識別可能であり、前
    記テーブルTi内のデータ・レコードにおける制約違反
    を検査する方法であって、 1又は複数のレコードを前記テーブルTiへ挿入する挿
    入照会QMAINを発生するステップと、 挿入コードと前記挿入照会QMAINにより指定された1又
    は複数のレコードの制約違反を検査するための検査コー
    ドとを含むコンパイルされた挿入コマンドを作成するた
    めに前記挿入照会QMAINをコンパイルするステップと、 前記テーブルTiの各レコードについて制約検査するべ
    く、選択コードと前記検査コードとを含む修正されたコ
    ードを作成するために、前記挿入コードをコンパイルさ
    れた選択コマンドで置き換えることにより前記挿入照会
    MAINを修正するステップであって、前記修正されたコ
    ードが、少なくとも1つの制約違反を報告しかつ制約違
    反を呈する前記テーブルTi内の全てのレコードをエラ
    ー報告メッセージにより識別するために実行されるステ
    ップと、 前記エラー報告メッセージと、制約違反を呈するレコー
    ドの全ての列エントリとを前記例外テーブルEiに入れ
    るための挿入コマンドを構築するステップとを有する制
    約違反の検査方法。
  16. 【請求項16】前記構築された挿入コマンドを実行する
    ことにより、制約違反を呈したレコードの列エントリ
    と、制約違反を呈した各レコードについてのエラー報告
    メッセージとを前記例外テーブルEi内に入れる請求項
    15に記載の方法。
  17. 【請求項17】違反しているレコードを削除するため
    に、 (a)制約違反を呈していると識別された前記テーブル
    Ti内の各レコードを選択するステップと、 (b)前記ステップ(a)にて選択された各レコードを
    削除するステップとにより前記テーブルTiを整理する
    ステップを有する請求項16に記載の方法。
  18. 【請求項18】複数のデータ・レコードを格納する少な
    くとも1つのテーブルTiをもつデータベースを記憶す
    るための大容量記憶装置を含む記憶装置と、照会グラフ
    により表現される照会を処理するプロセッサとを有する
    関係データベース管理システム(RDMS)において、前
    記データ・レコードの各々が前記RDMSにより一義的
    に識別可能である場合のバルク・データの制約検査シス
    テムにおいて、 前記テーブルTiへ挿入される1又は複数のレコードに
    ついての挿入照会QMAINを発生する、前記データ・プロ
    セッサへ接続された挿入照会発生手段と、 挿入コードと前記挿入照会QMAINにより指定された1又
    は複数のレコードの制約違反を検査するための検査コー
    ドとを含むコンパイルされた挿入コマンドを作成するた
    めに前記挿入照会QMAINをコンパイルする、制約エンジ
    ンを伴う制約コンパイラと、 前記テーブルTiの各レコードについて制約検査するべ
    く、選択コードと前記検査コードとを含む修正されたコ
    ードを作成するために、前記挿入コードをコンパイルさ
    れた選択コマンドで置き換えることにより前記挿入照会
    MAINを修正する、前記データ・プロセッサへ接続され
    た照会修正手段とを有するバルク・データの制約検査シ
    ステム。
  19. 【請求項19】少なくとも1つの制約違反をエラー報告
    メッセージにより報告するために前記修正されたコード
    を実行する、前記データ・プロセッサへ接続された選択
    及び制約検査コマンド実行手段を有する請求項18に記
    載のバルク・データの制約検査システム。
  20. 【請求項20】前記修正されたコードが、テーブルTi
    内の制約違反を呈する全てのレコードを識別しかつ報告
    する請求項19に記載のバルク・データの制約検査シス
    テム。
  21. 【請求項21】前記修正されたコードが、テーブルTi
    内の制約違反を呈する各レコードについてのストリング
    を報告し、前記ストリングが連結された制約名を含み、
    前記連結された制約名の中の各制約名がレコードの呈し
    た制約違反に対応する請求項20に記載のバルク・デー
    タの制約検査システム。
  22. 【請求項22】前記RDMSが、記憶装置に記憶される
    例外テーブルEiを含み、さらに制約違反を呈する各レ
    コードについてのレコード識別子と、連結された制約名
    を含む各対応するストリングとを、前記例外テーブルE
    iに入れるための挿入コマンドを構築する、前記データ
    ・プロセッサへ接続されたコマンド発生手段を有する請
    求項21に記載のバルク・データの制約検査システム。
  23. 【請求項23】違反しているレコードを削除するため
    に、 (a)制約違反を呈していると識別された前記テーブル
    Ti内の各レコードを選択する、前記データ・プロセッ
    サへ接続された選択手段と、 (b)前記選択手段により選択された各レコードを削除
    する、前記データ・プロセッサへ接続されたレコード削
    除手段とを含む前記テーブルTiを整理する手段を有す
    る請求項22に記載のバルク・データの制約検査システ
    ム。
  24. 【請求項24】前記レコード削除手段により削除された
    全てのレコードの複写を前記例外テーブルEiに挿入可
    能とするために、レコード挿入コマンドを作成する手段
    を有する請求項23に記載のバルク・データの制約検査
    システム。
  25. 【請求項25】データベース処理システムにおいて、 各データ・レコードが前記システム内で一義的に識別可
    能であるような複数のデータ・レコードを格納する少な
    くとも1つのテーブルTiを記憶するデータ記憶装置を
    含む記憶装置と、 照会グラフにより表現される照会を処理する、前記デー
    タ記憶装置へ接続されたデータ・プロセッサと、 前記テーブルTiへ挿入される1又は複数のレコードに
    ついての挿入照会QMAINを発生する、前記データ・プロ
    セッサへ接続された挿入照会発生手段と、 挿入コードと前記挿入照会QMAINにより指定された1又
    は複数のレコードの制約違反を検査するための検査コー
    ドとを含むコンパイルされた挿入コマンドを作成するた
    めに前記挿入照会QMAINをコンパイルする、制約エンジ
    ンを伴う制約コンパイラと、 前記テーブルTiの各レコードについて制約検査するべ
    く、選択コードと前記検査コードとを含む修正されたコ
    ードを作成するために、前記挿入コードをコンパイルさ
    れた選択コマンドで置き換えることにより前記挿入照会
    MAINを修正する、前記データ・プロセッサへ接続され
    た照会修正手段とを有するデータベース処理システム。
  26. 【請求項26】少なくとも1つの制約違反をエラー報告
    メッセージにより報告するために前記修正されたコード
    を実行する、前記データ・プロセッサへ接続された選択
    及び制約検査コマンド実行手段を有する請求項25に記
    載のデータベース処理システム。
  27. 【請求項27】前記修正されたコードが、テーブルTi
    内の制約違反を呈する全てのレコードを識別しかつ報告
    する請求項26に記載のデータベース処理システム。
  28. 【請求項28】前記修正されたコードが、テーブルTi
    内の制約違反を呈する各レコードについてのストリング
    を報告し、前記ストリングが連結された制約名を含み、
    前記連結された制約名の中の各制約名がレコードの呈し
    た制約違反に対応する請求項27に記載のデータベース
    処理システム。
  29. 【請求項29】記憶装置に記憶される例外テーブルEi
    を含み、さらに制約違反を呈する各レコードについての
    レコード識別子と、連結された制約名を含む各対応する
    ストリングとを、前記例外テーブルEiに入れるための
    挿入コマンドを構築する、前記データ・プロセッサへ接
    続されたコマンド発生手段を有する請求項28に記載の
    データベース処理システム。
  30. 【請求項30】違反しているレコードを削除するため
    に、 (a)制約違反を呈していると識別された前記テーブル
    Ti内の各レコードを選択する、前記データ・プロセッ
    サへ接続された選択手段と、 (b)前記選択手段により選択された各レコードを削除
    する、前記データ・プロセッサへ接続されたレコード削
    除手段とを含む前記テーブルTiを整理する手段を有す
    る請求項29に記載のデータベース処理システム。
  31. 【請求項31】前記レコード削除手段により削除された
    全てのレコードの複写を前記例外テーブルEiに挿入可
    能とするために、レコード挿入コマンドを作成する手段
    を有する請求項30に記載のデータベース処理システ
    ム。
JP01616296A 1995-02-10 1996-01-31 データベースにおける制約違反の検査方法及びそのシステム Expired - Fee Related JP3251837B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US387037 1995-02-10
US08/387,037 US5706494A (en) 1995-02-10 1995-02-10 System and method for constraint checking bulk data in a database

Publications (2)

Publication Number Publication Date
JPH08255102A JPH08255102A (ja) 1996-10-01
JP3251837B2 true JP3251837B2 (ja) 2002-01-28

Family

ID=23528178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01616296A Expired - Fee Related JP3251837B2 (ja) 1995-02-10 1996-01-31 データベースにおける制約違反の検査方法及びそのシステム

Country Status (3)

Country Link
US (1) US5706494A (ja)
EP (1) EP0726537A1 (ja)
JP (1) JP3251837B2 (ja)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032159A (en) * 1996-11-27 2000-02-29 Altera Corporation Apparatus and method for annotated bulk copying files to a database
DE19725965C2 (de) * 1997-06-19 2000-07-27 Naser Abdelwahab Verfahren eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept
US5963934A (en) * 1997-06-30 1999-10-05 International Business Machines Corporation Intelligent compilation of scripting language for query processing systems
US6427143B1 (en) * 1998-04-10 2002-07-30 Computer Associates Think, Inc. Method for loading rows into a database table while enforcing constraints
US6304876B1 (en) 1998-06-05 2001-10-16 Computer Associates Think, Inc. Method for enforcing integrity constraints in a database table using an index
US6189010B1 (en) 1998-06-10 2001-02-13 Platinum Technology, Inc. Method for repairing constraint violations in a database management system
US6732094B1 (en) 1998-07-08 2004-05-04 Ncr Corporation Method and apparatus that evaluate an expression based upon database results
AU2004202616B2 (en) * 1998-10-27 2008-09-04 Computer Associates Think, Inc Method for Maintaining Exception Tables for a Check Utility
US6401089B2 (en) * 1998-10-27 2002-06-04 Computer Associates Think, Inc. Method for maintaining exception tables for a check utility
US6886012B1 (en) 1998-11-18 2005-04-26 International Business Machines Corporation Providing traditional update semantics when updates change the location of data records
US6202063B1 (en) * 1999-05-28 2001-03-13 Lucent Technologies Inc. Methods and apparatus for generating and using safe constraint queries
US6397204B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method, system, and program for determining the join ordering of tables in a join query
US6374235B1 (en) 1999-06-25 2002-04-16 International Business Machines Corporation Method, system, and program for a join operation on a multi-column table and satellite tables including duplicate values
US6446063B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method, system, and program for performing a join operation on a multi column table and satellite tables
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
US6463429B1 (en) 2000-04-12 2002-10-08 International Business Machines Corporation System and method for consistency constraint management in database middleware
US7016903B1 (en) 2001-01-25 2006-03-21 Oracle International Corporation Method for conditionally updating or inserting a row into a table
US6820080B2 (en) * 2001-03-26 2004-11-16 International Business Machines Corporation Dependent object processing for triggers
CA2351990A1 (en) * 2001-06-26 2002-12-26 Ibm Canada Limited-Ibm Canada Limitee Rule based engine for validating financial transactions
WO2003017136A1 (en) * 2001-08-16 2003-02-27 Etagon Israel Ltd. Using associative memory to perform database operations
CA2357937A1 (en) * 2001-09-28 2003-03-28 Ibm Canada Limited-Ibm Canada Limitee Database diagnostic system and method
US7076482B2 (en) * 2001-10-25 2006-07-11 Bea Systems, Inc. Multi-part looked-up table fields and its use in data processing operations involving multiple tables of a relational database
US7421436B2 (en) * 2001-12-21 2008-09-02 International Business Machines Corporation Decentralized many-to-many relationship management in an object persistence management system
CA2384174A1 (en) * 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee Classification of data for insertion into a database
US8301657B1 (en) * 2002-05-09 2012-10-30 Teradata Us, Inc. Set-level database access for performing row-sequential operations
US7447687B2 (en) * 2002-05-10 2008-11-04 International Business Machines Corporation Methods to browse database query information
WO2004034215A2 (en) * 2002-10-08 2004-04-22 Omnicare, Inc. System for processing and organizing pharmacy data
US7502791B2 (en) * 2002-11-26 2009-03-10 Norsync Technology A/S Database constraint enforcer
KR100532823B1 (ko) * 2002-11-30 2005-12-02 이원재 데이터 무결성 관리장치와 관리방법 그리고 그 방법을컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체
US7305410B2 (en) * 2002-12-26 2007-12-04 Rocket Software, Inc. Low-latency method to replace SQL insert for bulk data transfer to relational database
US7953694B2 (en) * 2003-01-13 2011-05-31 International Business Machines Corporation Method, system, and program for specifying multidimensional calculations for a relational OLAP engine
US6829600B2 (en) * 2003-04-03 2004-12-07 Oracle International Corporation Merge delete statement for database operations
US7895191B2 (en) * 2003-04-09 2011-02-22 International Business Machines Corporation Improving performance of database queries
DE10346802B4 (de) * 2003-10-06 2009-04-23 Belerofon Gmbh Verfahren zur Bearbeitung von CDR-Informationen
US7664790B2 (en) * 2004-06-18 2010-02-16 Bmc Software, Inc. Cascade delete processing
US7930291B2 (en) * 2004-06-18 2011-04-19 Bmc Software, Inc. Constraint processing
US7359923B2 (en) * 2004-08-20 2008-04-15 International Business Machines Corporation Online incremental deferred integrity processing and maintenance of rolled in and rolled out data
US8224863B2 (en) * 2004-12-29 2012-07-17 Alcatel Lucent Equivalence class-based method and apparatus for cost-based repair of database constraint violations
US7328220B2 (en) * 2004-12-29 2008-02-05 Lucent Technologies Inc. Sketch-based multi-query processing over data streams
US7702638B2 (en) 2005-04-22 2010-04-20 Sap Ag Systems and methods for off-line modeling a business application
US7720879B2 (en) 2005-04-22 2010-05-18 Sap Ag Methods of using an integrated development environment to configure business applications
US10387440B2 (en) 2007-03-29 2019-08-20 Jda Software Group, Inc. Generic data staging and loading using enhanced metadata and associated method
US9569482B2 (en) * 2007-05-09 2017-02-14 Oracle International Corporation Transforming default values dynamically
US8296316B2 (en) * 2007-10-17 2012-10-23 Oracle International Corporation Dynamically sharing a subtree of operators in a data stream management system operating on existing queries
US8073826B2 (en) 2007-10-18 2011-12-06 Oracle International Corporation Support for user defined functions in a data stream management system
US8521867B2 (en) * 2007-10-20 2013-08-27 Oracle International Corporation Support for incrementally processing user defined aggregations in a data stream management system
US7991766B2 (en) * 2007-10-20 2011-08-02 Oracle International Corporation Support for user defined aggregations in a data stream management system
US8019795B2 (en) * 2007-12-05 2011-09-13 Microsoft Corporation Data warehouse test automation framework
US8495487B2 (en) * 2009-01-04 2013-07-23 Sandra Lee Jerome Web-based dealership management system
US8108367B2 (en) * 2008-05-20 2012-01-31 International Business Machines Corporation Constraints with hidden rows in a database
US20090300069A1 (en) * 2008-05-29 2009-12-03 O'sullivan Michael Patrick Method and system for the logical deletion of relational database records
US8639675B2 (en) * 2008-08-28 2014-01-28 Make Technologies, Inc. Linking of parent-child data records in a legacy software modernization system
US9305238B2 (en) * 2008-08-29 2016-04-05 Oracle International Corporation Framework for supporting regular expression-based pattern matching in data streams
US8352517B2 (en) * 2009-03-02 2013-01-08 Oracle International Corporation Infrastructure for spilling pages to a persistent store
US8935293B2 (en) * 2009-03-02 2015-01-13 Oracle International Corporation Framework for dynamically generating tuple and page classes
US8250048B2 (en) * 2009-04-20 2012-08-21 Oracle International Corporation Access control for graph data
US8387076B2 (en) * 2009-07-21 2013-02-26 Oracle International Corporation Standardized database connectivity support for an event processing server
US8321450B2 (en) * 2009-07-21 2012-11-27 Oracle International Corporation Standardized database connectivity support for an event processing server in an embedded context
US8301660B2 (en) * 2009-07-22 2012-10-30 Oracle International Corporation Enforcing restrictions for graph data manipulation operations
US8527458B2 (en) * 2009-08-03 2013-09-03 Oracle International Corporation Logging framework for a data stream processing server
US8386466B2 (en) * 2009-08-03 2013-02-26 Oracle International Corporation Log visualization tool for a data stream processing server
US8959106B2 (en) * 2009-12-28 2015-02-17 Oracle International Corporation Class loading using java data cartridges
US9430494B2 (en) * 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US9305057B2 (en) * 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
US8713049B2 (en) 2010-09-17 2014-04-29 Oracle International Corporation Support for a parameterized query/view in complex event processing
US9189280B2 (en) 2010-11-18 2015-11-17 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9329975B2 (en) 2011-07-07 2016-05-03 Oracle International Corporation Continuous query language (CQL) debugger in complex event processing (CEP)
US9053153B2 (en) * 2012-06-18 2015-06-09 Sap Se Inter-query parallelization of constraint checking
US9026561B2 (en) 2012-07-02 2015-05-05 International Business Machines Corporation Automated report of broken relationships between tables
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9361308B2 (en) 2012-09-28 2016-06-07 Oracle International Corporation State initialization algorithm for continuous queries over archived relations
US20140149360A1 (en) * 2012-11-27 2014-05-29 Sap Ag Usage of Filters for Database-Level Implementation of Constraints
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US9098587B2 (en) 2013-01-15 2015-08-04 Oracle International Corporation Variable duration non-event pattern matching
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9047249B2 (en) 2013-02-19 2015-06-02 Oracle International Corporation Handling faults in a continuous event processing (CEP) system
US9390135B2 (en) 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9015165B1 (en) * 2014-03-03 2015-04-21 Michael L. Hamm Text-SQL relational database
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US9589085B1 (en) * 2014-12-03 2017-03-07 Cadence Design Systems, Inc. Systems and methods for viewing analog simulation check violations in an electronic design automation framework
KR20160078032A (ko) * 2014-12-24 2016-07-04 삼성전자주식회사 전자 설계 자동화를 위한 장치 및 방법
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
DE102015013593A1 (de) 2015-10-15 2017-04-20 makmad.org e.V. Effizientes Verfahren zur logischen Vervollständigung eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept
CN107229651A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 唯一性约束异常的确定方法、异常处理方法及装置
AU2016231506B2 (en) * 2016-09-20 2022-02-17 Global Software Innovation Pty Ltd Systems and methods for accessing a database management system
CN108898485A (zh) * 2018-06-07 2018-11-27 阿里巴巴集团控股有限公司 一种数据校验的方法及装置
DE102018008923A1 (de) 2018-10-09 2020-05-20 makmad.org e. V. Verfahren zur Erstellung einer effizienten, logisch vollständigen, ontologischen Ebene im erweiterten relationalen Datenbankkonzept
US11694211B2 (en) * 2021-06-28 2023-07-04 Stripe, Inc. Constant-time cascading deletion of resources

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4506326A (en) * 1983-02-28 1985-03-19 International Business Machines Corporation Apparatus and method for synthesizing a query for accessing a relational data base
US4947320A (en) * 1988-07-15 1990-08-07 International Business Machines Corporation Method for referential constraint enforcement in a database management system
US4933848A (en) * 1988-07-15 1990-06-12 International Business Machines Corporation Method for enforcing referential constraints in a database management system
EP0360387B1 (en) * 1988-09-23 1996-05-08 International Business Machines Corporation Data base management system
US5133075A (en) * 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5226158A (en) * 1989-05-24 1993-07-06 International Business Machines Corporation Method and apparatus for maintaining referential integrity within a relational database
CN1029050C (zh) * 1989-10-13 1995-06-21 国际商业机器公司 在数据库系统中强化实施参照约束
US5201046A (en) * 1990-06-22 1993-04-06 Xidak, Inc. Relational database management system and method for storing, retrieving and modifying directed graph data structures
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
US5355474A (en) * 1991-09-27 1994-10-11 Thuraisngham Bhavani M System for multilevel secure database management using a knowledge base with release-based and other security constraints for query, response and update modification
US5421008A (en) * 1991-11-08 1995-05-30 International Business Machines Corporation System for interactive graphical construction of a data base query and storing of the query object links as an object
US5367675A (en) * 1991-12-13 1994-11-22 International Business Machines Corporation Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query
US5301317A (en) * 1992-04-27 1994-04-05 International Business Machines Corporation System for adapting query optimization effort to expected execution time
US5499359A (en) * 1994-01-18 1996-03-12 Borland International, Inc. Methods for improved referential integrity in a relational database management system

Also Published As

Publication number Publication date
EP0726537A1 (en) 1996-08-14
JPH08255102A (ja) 1996-10-01
US5706494A (en) 1998-01-06

Similar Documents

Publication Publication Date Title
JP3251837B2 (ja) データベースにおける制約違反の検査方法及びそのシステム
US6453314B1 (en) System and method for selective incremental deferred constraint processing after bulk loading data
AU772754B2 (en) System and method for rewriting relational database queries
US6618719B1 (en) Database system with methodology for reusing cost-based optimization decisions
US7275056B2 (en) System and method for transforming queries using window aggregation
US6374263B1 (en) System for maintaining precomputed views
US5873075A (en) Synchronization of SQL actions in a relational database system
US5963933A (en) Efficient implementation of full outer join and anti-join
US5546576A (en) Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
US5367675A (en) Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query
US6763352B2 (en) Incremental maintenance of summary tables with complex grouping expressions
US6341281B1 (en) Database system with methods for optimizing performance of correlated subqueries by reusing invariant results of operator tree
Grefen et al. Integrity control in relational database systems—an overview
US7272591B1 (en) Method and system for updating value correlation optimizations
US5857182A (en) Database management system, method and program for supporting the mutation of a composite object without read/write and write/write conflicts
US20050165866A1 (en) Method and apparatus for updating XML views of relational data
US7844633B2 (en) System and method for storage, management and automatic indexing of structured documents
JPH0760407B2 (ja) データベース・システムの動作方法
US9171036B2 (en) Batching heterogeneous database commands
US7542962B2 (en) Information retrieval method for optimizing queries having maximum or minimum function aggregation predicates
US7512642B2 (en) Mapping-based query generation with duplicate elimination and minimal union
Simon et al. Design and implementation of an extendible integrity subsystem
Zimbrão et al. Enforcement of Business Rules in Relational Databases Using Constraints.
JPH05204727A (ja) デ−タベ−ス管理方法およびそのシステム
Cybula et al. Query optimization by result caching in the stack-based approach

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees