(57)【要約】【課題】データベースへデータを入力する際の操作性を向上させると共に、整合性に関する制約の検証の高速化を図る。【解決手段】データローダ装置１は、検証部２、検証済データ保持部１３、制約制御部１４、データ挿入部３を有し、データベース管理システム４と連携して動作する。検証部２は、挿入データファイル群９に記載されるデータがデータベース管理システム４のデータベースへ入力されるときに、データベースが保持している整合性制約を一度停止し、その整合性制約に従い、入力データをその入力事前に検証し、検証されたデータをデータベースへ入力し、その後に整合性制約を再度有効化する。このようにしてデータ入力の際に一時的に制約を無効化することで入力順序を考慮せずにデータが入力でき、全ての入力データに対して入力前に一括して制約検証を行うことで、整合性制約の検証を高速に行える。【選択図】  図１
2006079260.tif 000002
【特許請求の範囲】
【請求項１】
外部ファイルからデータをデータベースに入力するデータ入力方法であって、
前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証ステップと、
検証された前記データを前記データベースに入力する入力ステップとを有すること特徴とするデータベースへのデータ入力方法。
【請求項２】
前記検証ステップの実施前に、前記データベースの整合性制約に基づく処理動作を一時停止するステップと、
前記入力ステップの実施後に、一時停止されている前記整合性制約に基づく処理動作を再有効化するステップとをさらに有することを特徴とする請求項１記載のデータベースへのデータ入力方法。
【請求項３】
前記検証ステップは、
前記整合性制約の内の実体整合性制約に従い、前記データを入力事前に検証する第１の検証ステップと、
前記整合性制約の内の参照整合性制約に従い、前記データを入力事前に検証する第２の検証ステップとを有することを特徴とする請求項１又は２記載のデータベースへのデータ入力方法。
【請求項４】
前記第１の検証ステップは、前記データの格納先となる前記データベース内の指定列を対象として、前記データベース内の指定列に既に格納済みの列値と、前記外部ファイルのデータ内の前記指定列に対応する列の列値とを全て集積するステップと、集積された列値が一意性を保障しているか否かを検証するステップとを有することを特徴とする請求項３記載のデータベースへのデータ入力方法。
【請求項５】
前記第２の検証ステップは、前記データの格納先となる前記データベース内の複数の指定列で構成される参照関係を対象とし、前記データベース内の複数の指定列で既に確立されている参照関係に加え、前記外部ファイルのデータ内の前記複数の指定列に対応する複数の列と新たに確立される新参照関係に基づいて、参照整合性を保障しているか否かを検証する検証ステップを有することを特徴とする請求項３記載のデータベースへのデータ入力方法。
【請求項６】
前記第２の検証ステップは、前記データの格納先となる前記データベース内の複数の指定列で構成される参照関係に対し、前記参照整合性制約に基づくデータの読み込み回数の縮退操作及びデータ並び替え操作を実施しながら、参照整合性を保障しているか否かを検証する検証ステップを有することを特徴とする請求項３記載のデータベースへのデータ入力方法。
【請求項７】
外部ファイルからデータをデータベースに入力するデータ入力装置であって、
前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証手段と、
検証された前記データを前記データベースに入力する入力手段とを有すること特徴とするデータ入力装置。
【請求項８】
前記検証ステップの実施前に、前記データベースの整合性制約に基づく処理動作を一時停止する手段と、
前記入力ステップの実施後に、一時停止されている前記整合性制約に基づく処理動作を再有効化する手段とをさらに有することを特徴とする請求項７記載のデータ入力装置。
【請求項９】
外部ファイルからデータを入力するデータ入力装置と、
前記データ入力装置により入力されたデータを格納するデータベースとを有するデータベースシステムであって、
前記データ入力装置は、
前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証手段と、
検証された前記データを前記データベースに入力する入力手段とを有すること特徴とするデータベースシステム。
【請求項１０】
前記データ入力装置は、
前記検証ステップの実施前に、前記データベースの整合性制約に基づく処理動作を一時停止する手段と、
前記入力ステップの実施後に、一時停止されている前記整合性制約に基づく処理動作を再有効化する手段とをさらに有することを特徴とする請求項９記載のデータベースシステム。
【請求項１１】
外部ファイルからデータをデータベースに入力するためのプログラムであって、
コンピュータに、
前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証ステップと、
検証された前記データを前記データベースに入力する入力ステップとを実行させることを特徴とするプログラム。
【請求項１２】
前記コンピュータに、
前記検証ステップの実施前に、前記データベースの整合性制約に基づく処理動作を一時停止するステップと、
前記入力ステップの実施後に、一時停止されている前記整合性制約に基づく処理動作を再有効化するステップとをさらに実行させることを特徴とする請求項１１記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースへのデータ入力方法、データ入力装置、データベースシステム、及びプログラムに関し、特に外部データをデータベースシステムに入力するシステムに関する。
【背景技術】
【０００２】
従来のデータベースへのデータ入力方法及びその装置の一例が、特許文献１に記載されている。図１１は、特許文献１を参照した従来の装置を示す概念図である。
【０００３】
図１１に示す従来の装置は、システム利用者１０５が利用するデータ文字列を入力するためのデータ入力装置１０１と、複数のカラム（列）を持ったデータレコード、もしくは行により構成される表を複数保持し得るデータベース管理システム１０２と、システム利用者１０５とデータベース管理システム１０２間でデータの入出力を行うためのデータベース入出力管理プログラム１０３と、データ入力装置１０１によって入力された文字列を解析し、データベース管理システム１０２のどのデータカラムに入力データを格納すべきかを判定するカラム判定手段としてのデータ文字列解析部１０４とを含んで構成される。データ入力装置１０１は、特許文献１では一般化されたものではなく、キーボードに限定されている。
【０００４】
図１１に示す従来装置において、入力データをデータベース管理システム１０２へ格納する際の手順について説明する。
【０００５】
システム利用者１０５は、データベース管理システム１０２に入力したい文字列を、データ入力装置１０１より入力する。データ入力装置１０１によって入力されたデータ文字列は、データ文字解析部１０４に送られる。
【０００６】
データ文字解析部１０４は、データ入力装置１０１によって入力された文字列がどのような文字種で構成され、それらがどのような順序および文字数で出現するかについての解析作業を実行する。すなわち、後述するようなデータの属性、長さ、周期性、特定な文字列の１つまたは２つ以上の特徴を組み合わせて解析する。
【０００７】
次いで、データ文字解析部１０４は、データベース管理システム１０２より取得した各データカラムの文字構成情報を参照・検証する。その結果、入力文字列がデータベース管理システム１０２上で管理される表のどのカラムに対する入力であるのかを判別する。
【０００８】
そして、データ文字解析部１０４は、データベース入出力管理プログラム１０３に対して、データ文字列を入力すべきデータカラムを指定する。そして、データ文字列をデータベース入出力管理プログラム１０３に出力する。
【０００９】
以上の工程後に、データベース入出力管理プログラム１０３は、データベース管理システム１０２の指定データカラムにデータ文字列を格納する。
【００１０】
データ文字解析部１０４は、以上のような解析作業を実行するが、具体的な例を挙げてその解析作業について説明する。
【００１１】
例えば、ある会社の社員のデータをデータベース管理システム１０２に入力しようとした場合、１レコードを構成する１行のカラム群が以下６つで構築されているものと仮定する。
【００１２】
１）社員番号、２）氏名、３）性別、４）生年月日、５）住所、６）電話番号
前記１）から６）の各項目に入力された文字列が振り分けられる条件は、次のとおりとする。
【００１３】
１）社員番号は、例えば「５４３５６７」等、特定桁数の数字文字だけで構成された文字列であり、データの長さと属性に特徴がある。
【００１４】
２）氏名は、例えば「佐藤一郎」等、数字を含まない全角文字列で構成される。氏名として良く使われる文字列は、例えば「佐藤」、「鈴木」、「田中」、「一郎」、「太郎」、「花子」等であり、データの属性と特定な文字列に特徴がある。
【００１５】
３）性別は、例えば「男」又は「女」等、特定の数の、特定の文字で構成され、データの長さと特定な文字列に特徴がある。
【００１６】
４）生年月日は、例えば「１９６０／１０／１０」、「Ｓ４０年９月１０日」等、年月日として適当な桁数の数字で構成され、年月日を示す文字列「／」、「年」、「月」、「日」等が適当な位置に存在し、データの属性と特定な文字列および周期性に特徴がある。
【００１７】
５）住所は、例えば「東京都杉並区杉並１−２−３」等、数値以外の全角文字で始まる。また、地名文字列を含む。さらに住所を示す特定な区切り文字、例えば「都」、「区」、「市」、「町」、「村」等が適当な位置に存在し、データの属性と特定な文字列に特徴がある。
【００１８】
６）電話番号は、例えば「０４６５−８５−１２３４」、「０３−３５４６−２２４６」等、電話番号として適当な桁数の数字で構成され、電話番号の区切り文字が適当な位置に存在し、データの属性と長さおよび周期性に特徴がある。
【００１９】
前述したように、データ文字解析部１０４においては、入力手段により入力されたデータの属性、長さ、周期性、特定な文字列の１つまたは２つ以上の特徴を組み合わせることで、格納すべきカラムをある程度正確に判定することができる。
【００２０】
この方法のカラム判定により、入力されたデータを識別して格納すべきデータベース管理システム１０２中のカラムを判定し、このカラム判定により推定されたカラムに対してデータを格納するように成されるので、システム利用者１０５がデータの入力先を指示する手続きを省くことができ、より高速なデータ入力が可能となる、とされている。
【００２１】
加えて、データベース管理システム１０２のデータフィールドの順序に縛られることなく、比較的無造作にデータを入力することも可能である、とされている。
【００２２】
より厳密な方法を取る場合、データ入力順序、データの順番をあらかじめ指定する作業を事前に実施しておけば、正しくデータを入力できることになる、はずである。
【００２３】
この特許文献１では、データ入力装置１０１は、一般化されたものではなくキーボードに限定しているが、データ入力装置１０１を、システム利用者１０５が指定するファイル読込み装置にすることは、その請求範囲を制限する事項ではないため、特許公報１の適用範囲内として扱われると解釈できる。
【特許文献１】特開平１０−２６９２４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
しかしながら、従来の技術では、下記に説明するような技術課題が存在している。
【００２５】
特許文献１が主張する、従来技術に対する新規性は、入力手段により入力されたデータの属性、長さ、周期性、特定な文字列の１つまたは２つ以上の特徴を組み合わせることで、格納すべきカラムをある程度正確に判定することができる点である。
【００２６】
現在、技術的にも商業的にも主流で、評価を確立している一般的なデータベース管理システム１０２では、内部で管理しているカラムに「整合性制約」を付与できる機能が実装されている。「整合性制約」には、通常、カラムの定義に関係する「実体整合性制約」、並びに複数カラム間で定義される関係を規定する「参照整合性制約」が存在している。この内、「実体整合性制約」には、ある任意カラムの値をＮＵＬＬ値とすることが可能か否かを規定する「ＮＵＬＬ制約」、任意カラムの値に一意性を保障する「ＵＮＩＱＵＥ制約」等が含まれる。
【００２７】
この特許文献１で主張するところの実施例に拠れば、データ文字解析部１０４が、データベース管理システム１０２より取得した各データカラムの文字構成情報を参照・検証した上で、入力文字列がデータベース管理システム１０２上で管理される表のどのカラムに対する入力なのかを判別している。
【００２８】
しかし、各データカラムの文字構成情報である、データの属性、長さ、周期性、特定な文字列の１つまたは２つ以上の特徴の組み合わせだけでは、「実体整合性制約」を違反するか否かの判定に言及していないに留まらず、実現不可能な場合も存在することを否定できない。特に「ＮＵＬＬ制約」、「ＵＮＩＱＵＥ制約」を維持しながら入力ができる機能を、保障はしていない。更に、特許文献１の実施例を見る限りにおいて、「参照整合性制約」に対する違反に対しては、摘出・検証が言及されていないだけではなく、概ねの場合、実現不可能であることが予想される。
【００２９】
そのような状況下では、データ入力装置１０１を、システム利用者１０５が指定するファイル読込み装置のみならず、キーボードとした場合、入力の度に「実体整合性制約」、もしくは「参照整合性制約」に対する違反を事前に判定できないため、データ入力の度に全てデータベース管理システム１０２に対する入力違反として扱われ、入力そのものができないと言う問題が露見し得る。
【００３０】
そのような事態を部分的に回避するには、システム利用者１０５自ら、データの入力順序に関する制限を考慮してデータ入力装置１０１を起動する必要がある。ただし、これも全ての状況下で、前述の事態を回避できる訳ではない。「参照整合性制約」が閉じた関係を作る場合は、入力そのものができないと言う問題は再度露見し、これは解決できない。
【００３１】
以上のように従来の技術では、データベースにデータを入力する際には、データの入力順序を考慮せねばならず、さらに入力したデータ１行ごとに実体整合性制約及び参照整合性制約の検証を行う必要があるため、検証に時間が掛かるという問題があった。
【００３２】
本発明は、このような従来の事情を考慮してなされたもので、データベースへデータを入力する際の操作性を向上させると共に、整合性に関する制約の検証の高速化を図ることを、その目的とする。
【課題を解決するための手段】
【００３３】
上記目的を達成するため、本発明に係るデータベースへのデータ入力方法は、外部ファイルからデータをデータベースに入力するデータ入力方法であって、前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証ステップと、検証された前記データを前記データベースに入力する入力ステップとを有すること特徴とする。
【００３４】
本発明に係るデータ入力方法において、前記検証ステップの実施前に、前記データベースの整合性制約に基づく処理動作を一時停止するステップと、前記入力ステップの実施後に、一時停止されている前記整合性制約に基づく処理動作を再有効化するステップとをさらに有してもよい。
【００３５】
また、前記検証ステップは、前記整合性制約の内の実体整合性制約に従い、前記データを入力事前に検証する第１の検証ステップと、前記整合性制約の内の参照整合性制約に従い、前記データを入力事前に検証する第２の検証ステップとを有してもよい。
【００３６】
ここで、前記第１の検証ステップは、前記データの格納先となる前記データベース内の指定列を対象として、前記データベース内の指定列に既に格納済みの列値と、前記外部ファイルのデータ内の前記指定列に対応する列の列値とを全て集積するステップと、集積された列値が一意性を保障しているか否かを検証するステップとを有してもよい。
【００３７】
また、前記第２の検証ステップは、前記データの格納先となる前記データベース内の複数の指定列で構成される参照関係を対象とし、前記データベース内の複数の指定列で既に確立されている参照関係に加え、前記外部ファイルのデータ内の前記複数の指定列に対応する複数の列と新たに確立される新参照関係に基づいて、参照整合性を保障しているか否かを検証する検証ステップを有してもよい。
【００３８】
さらに、前記第２の検証ステップは、前記データの格納先となる前記データベース内の複数の指定列で構成される参照関係に対し、前記参照整合性制約に基づくデータの読み込み回数の縮退操作及びデータ並び替え操作を実施しながら、参照整合性を保障しているか否かを検証する検証ステップを有してもよい。
【００３９】
本発明に係るデータ入力装置は、外部ファイルからデータをデータベースに入力するデータ入力装置であって、前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証手段と、検証された前記データを前記データベースに入力する入力手段とを有すること特徴とする。
【００４０】
本発明に係るデータベースシステムは、外部ファイルからデータを入力するデータ入力装置と、前記データ入力装置により入力されたデータを格納するデータベースとを有するデータベースシステムであって、前記データ入力装置は、前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証手段と、検証された前記データを前記データベースに入力する入力手段とを有することを特徴とする。
【００４１】
本発明に係るプログラムは、外部ファイルからデータをデータベースに入力するためのプログラムであって、コンピュータに、前記外部ファイルからデータが入力されるとき、前記データの格納先となる前記データベースに予め設定されている整合性制約に従い、前記データを入力事前に検証する検証ステップと、検証された前記データを前記データベースに入力する入力ステップとを実行させることを特徴とする。
【発明の効果】
【００４２】
本発明によれば、データベースへの入力事前に全ての入力データを一括して整合性に関する制約の検証を行っているため、従来の方法に比べ高速な制約の検証が可能になっている。また、本発明によれば、外部ファイル内に記載されるデータの入力順序を意識せずに任意の順序で入力を行うことができるため、操作性を大幅に向上させることができる。
【発明を実施するための最良の形態】
【００４３】
次に、本発明に係るデータベースへのデータ入力方法、データ入力装置、データベースシステム、及びプログラムの実施の形態について図面を参照して詳細に説明する。
【００４４】
図１は、本実施の形態に係るデータ入力装置を備えたデータベースシステムの全体構成を示す。図１に示すデータベースシステムは、例えばデータベース問い合わせ言語として規格化されているＳＱＬ（Structured Query Language）に従い操作可能なリレーショナルデータベース（関係データベース）を適用したものであり、そのデータベースの定義や操作等を管理するデータベース管理システム４と、このデータベース管理システム４と連携して動作する本実施の形態のデータ入力装置としてのデータローダ装置１とを備える。
【００４５】
データベース管理システム４は、機能上、主にメタ情報、カタログ情報を扱うデータディクショナリ部５と、具体的なデータを管理するデータインスタンス部６とを含んで構成される。
【００４６】
データディクショナリ部５は、機能上、更にデータベースの基本管理単位である表の定義情報を表数分、管理している表定義部８と、表毎に定義される「実体整合性制約」を管理する実体整合性制約管理部１０と、任意の複数表間に付与された「参照整合性制約」を管理する参照整合性制約管理部７とを含んで構成される。なお、表定義部８で管理する表定義情報を一般化して「表定義情報」１６と定義する。
【００４７】
データインスタンス部６は、表定義部８で管理されている表定義情報１６に従い、データを表形式で管理する。ここでは、データインスタンス部６で管理される表形式のデータを一般化して「表」１１と定義する。
【００４８】
データローダ装置１は、機能上、検証部２、データ挿入部３、ログファイル１２、検証済データ保持部１３、及び制約制御部１４を備える。このうち、検証部２は、その内部に複数の列情報保存領域１８、複数の参照先列値保存領域１９、及び複数の参照元列値保存領域２０を含む。
【００４９】
データローダ装置１は、システム利用者１５から起動コマンドａを受け取ると、動作を開始する。起動コマンドａには、挿入するデータを記載した複数の挿入データファイル群９のパス名とデータベース管理システム４内の表定義部８にて定義される表定義情報１６の関係ｒが引数として指定されている。ここで、関係ｒ内で指定される表を一般化して「指定表」ｔとする。
【００５０】
動作を開始したデータローダ装置１は、関係ｒを更に引数ｓとして扱い、引数ｓを元に検証部２を起動する要求ｂを発行する。要求ｂにより起動した検証部２は、引数ｓで指定される関係ｒの指定表群ｔの存在を確認するため、データベース管理システム４に問い合わせｃを発行する。この問い合わせｃの結果、データベース管理システム４は、表定義部８にアクセスし、指定表ｔに対する全ての表属性定義情報ｄと、この表属性定義情報ｄに付随するデータ型情報ｅとを検証部２に戻す。
【００５１】
検証部２は、実体整合性制約に関する情報を得るため、表属性定義情報ｄを元に、データベース管理システム４に問い合わせｆを発行する。この問い合わせｆの結果、データベース管理システム４は、実体整合性制約管理部１０にアクセスし、その後、指定表ｔの表属性定義情報ｄに付随する実体整合性制約情報ｇを表毎に検証部２に戻す。この問い合わせｆは、指定された指定表ｔ全てに実施される。
【００５２】
また、検証部２は、参照整合性制約に関する情報を得るため、表属性定義情報ｄを元に、データベース管理システム４に問い合わせｈを発行する。この問い合わせｈの結果、データベース管理システム４は、参照整合性制約管理部７にアクセスし、その後、指定された指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを表毎に検証部２に戻す。この問い合わせｈは、指定された指定表ｔ全てに実施される。
【００５３】
また、検証部２は、入手した参照整合性制約情報ｉを元に、指定表ｔに付与した参照整合性制約の全てを一時的に停止するため、要求ｊを制約制御部１４に発行する。制約制御部１４は、データベース管理システム４に対して、要求ｊと同意の要求ｌを発行する。要求ｌの結果、データベース管理システム４は、参照整合性制約管理部７にアクセスし、指定表ｔの参照整合性制約情報ｉから対象参照整合性制約を全て停止する。
【００５４】
さらに、検証部２は、いくつかの検証処理を実施する。最初に実施するものは、実体整合性制約の検証処理である。次に実施するのは、停止した参照整合性制約の検証処理である。これら各整合性制約の検証処理は、挿入データファイル群９に記載されるデータだけでなく、データベース管理システム４のデータインスタンス部６で管理され、関係ｒで指定されている指定表群ｔ相当の表１１内データも含めて実施される。
【００５５】
起動コマンドａで指定される全ての挿入データファイル群９のデータに関して、実体整合性制約、並びに参照整合性制約の検証ステップを実施したならば、検証部２は、検証済データのデータベース管理システム４への格納を行うため、データ挿入部３に対して起動要求ｎを発行する。その際、検証済データ保持部１３のアクセス参照先ｕが引数として渡される。
【００５６】
データ挿入部３は、起動要求ｎを受けると、指定された指定表ｔに相当する表１１へ格納するべきデータの内、全行分のデータｐを検証済データ保持部１３から入手する。その後、データインスタンス部６への格納を行うため、データｐをもとに、ＳＱＬのＩＮＳＥＲＴ文を作成し、順次、データベース管理システム４へ、ＩＮＳＥＲＴ文ｑを発行する。
【００５７】
ＩＮＳＥＲＴ文ｑに加工・翻訳された一連のデータをデータベース管理システム４に格納した後、データ挿入部３は、先に停止させた、参照整合性制約情報ｉ対応の参照整合性制約を全て再有効にするため、制約制御部１４に要求ｋを発行する。
【００５８】
制約制御部１４は、データベース管理システム４に対し、要求ｋと同意の要求ｍを発行する。要求ｍの結果、データベース管理システム４は、参照整合性制約管理部７をアクセスし、参照整合性制約情報ｉに対応する参照整合性制約を全て再有効化する。
【００５９】
次に、データローダ装置１による実体整合性制約の検証処理及び参照整合性制約の検証処理を主にして、本実施の形態の動作を説明する。
［実体整合性制約の検証処理］
データローダ装置１による実体整合性制約の検証処理は、図２及び図３に記すフローチャートの手順で行われる。これは、ステップ２０１〜２１５を含んで構成される。
【００６０】
図２において、検証部２は、まだ処理対象となっていない指定表ｔを選び、関係ｒと合わせて、挿入データファイル群９から、まだ処理対象となっていない１つの挿入データファイルを抽出し、その挿入データファイルを読み込み、処理対象とする（ステップ２０１、ステップ２０２：ＮＯ）。この時点で、既に全ての挿入データファイルが処理対象となっていた場合は、読み込むファイルが存在しないと判断し（ステップ２０２：ＹＥＳ）、処理を終了する。
【００６１】
続けて、検証部２は、指定表ｔの表属性定義情報ｄに付随する実体整合性制約情報ｇを元に、ステップ２０１にて処理対象となった挿入データファイルに関連する全ての実体整合性制約を、実体整合性制約リストとして取得する（ステップ２０３）。
【００６２】
次いで、ステップ２０３で取得した実体整合性制約リストを判定し、そのリストの中に、制約条件確認の一環として、他行を参照する必要があるもの（ここでは、「ＵＮＩＱＵＥ制約」が主対象である。）が存在する場合、検証部２内に列情報保存領域１８を追加・確保する（ステップ２０４）。
【００６３】
次いで、ステップ２０１で処理対象とした挿入データファイルから１行読み込む（ステップ２０５、ステップ２０６：ＮＯ）。既に全行が読み込まれている場合は、読み込む行が存在しないと判断し（ステップ２０６：ＹＥＳ）、図３に示すステップ２１２の処理へ移行する。
【００６４】
続けて、ステップ２０５で読み込んだ行そのものを、挿入データファイル行データとして検証済データ保持部１３に保存する（ステップ２１８）。
【００６５】
次いで、ステップ２０３で取得した実体整合性制約リストの内、ステップ２０５で取得した行に対して、検証していない実体整合性制約を１つ取得する（ステップ２０７、ステップ２０８：ＮＯ）。この時点で、既にリスト内の全ての実体整合性制約が検証されている場合は、全ての実体整合性制約を適用済みであると判断し（ステップ２０８：ＹＥＳ）、ステップ２０５の処理へ戻る。
【００６６】
次いで、ステップ２０７で取得した実体整合性制約に関する判定に、他行を参照する必要があるか、すなわちステップ２０４で検証部２内に確保した列情報保存領域１８に保存された実体整合性制約であるか否かを判定する（ステップ２０９）。
【００６７】
その結果、他行を参照する必要があると判定された場合は（ステップ２０９：ＮＯ）、ステップ２０７で取得し、ステップ２０５で読み込んだ行に対する未適用実体整合性制約の対象値を、列候補値として、ステップ２０４で確保した列情報保存領域１８に保存する（ステップ２１０）。
【００６８】
一方、他行を参照する必要がないと判定された場合は（ステップ２０９：ＹＥＳ）、ステップ２０５で読み込んだ行に対する実体整合性制約対象となる列候補値が、ステップ２０７で取得した未検証の実体整合性制約に関する条件を満足するか否かを判定する（ステップ２１１）。
【００６９】
ここで検証されるものは、ＮＵＬＬ制約とデータ型に関する制約である。この判定で、実体整合性制約の条件を満足していれば（ステップ２１１：ＹＥＳ）、ステップ２１８へ戻り、満たしていない場合は（ステップ２１１：ＮＯ）、エラーとして扱い（ステップ２１１ａ）、ログファイル１２に書き出した後、処理を終了する。
【００７０】
上記ステップ２０６の処理で既に全行が読み込まれていた場合（ステップ２０６：ＹＥＳ）、図３に示すように、ステップ２０４で確保した列情報保存領域１８から未検証状態にある領域を１つ取得する（ステップ２１２、ステップ２１３：ＮＯ）。また、全列情報保存領域１８が検証済状態にある場合は（ステップ２１３：ＹＥＳ）、ステップ２０１の処理へ戻る。
【００７１】
続けて、ステップ２１２で取得した、未検証状態にある列情報保存領域１８に保存される実体整合性制約を一つ参照し、データインスタンス部６からその実体整合性制約対象となる列値を取得する（ステップ２１４）。
【００７２】
次いで、ステップ２１４で取得した列値と、ステップ２１０で取得した列情報保存領域１８内に保存されている列候補値を全て統合し、統合データとする。この統合データには、ステップ２０７で取得した実体整合性制約が対応する。そこで統合データもとに、対応する実体整合性制約の条件を満足するか否かを判定する（ステップ２１５）。
【００７３】
この判定で、実体整合性制約の条件を満たしている場合は（ステップ２１５：ＹＥＳ）、ステップ２１２の処理に戻り、それを満たしていない場合は（ステップ２１５：ＮＯ）、エラーとして扱い、ログファイル１２に書き出した後（ステップ２１５ａ）、処理を終了する。
【００７４】
上記の実体整合性制約の検証ステップの後、検証部２は、問題の無い行に関しては、検証済データ保持部１３に一時的に保管する。そのため、検証済データ保持部１３に行データｏが渡される。ここでの実体整合性制約の検証ステップは、起動コマンドａで指定される挿入データファイル群９全てに対して実施される。
［参照整合性制約の検証処理］
次に、データローダ装置１による参照整合性制約の検証処理を実施する。参照整合性制約の検証処理は、図４〜図７に記される一連のフローチャート手順で行われ、大きくは、１）参照整合性制約の検証対象となる列情報取得ステップ、２）参照整合性制約の検証対象となる列値候補取得ステップ、３）参照整合性制約の検証対象となる列値取得ステップ、４）参照整合性制約の検証ステップとで構成される。以下、順次説明する。
１）参照整合性制約の検証対象となる列情報取得ステップ
本ステップは、図４に記されるフローチャート手順で実施される。これは、ステップ３０１〜３０６を含んで構成される。
【００７５】
まず、検証部２は、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、指定表ｔに関連する全参照整合性制約を、参照整合性制約リストとして取得する（ステップ３０１）。
【００７６】
次いで、ステップ３０１で取得した参照整合性制約リストの内、検証していない参照整合性制約を１つ取得する（ステップ３０２、ステップ３０３：ＮＯ）。この時点で、既にリスト内の全ての参照整合性制約が検証されている場合は、全ての参照整合性制約を適用済みと判断し（ステップ３０３：ＹＥＳ）、図５に示すステップ３１０の処理へ移行する。
【００７７】
次いで、ステップ３０２で取得した参照整合性制約から、参照整合性制約を構成する参照元と参照先の列情報を取得し（ステップ３０４）、取得した参照先の列情報が、指定表ｔの列となっているかを判定する（ステップ３０５）。
【００７８】
この判定で、参照先の列が指定表ｔに含まれない場合は（ステップ３０５：ＹＥＳ）、ステップ３０２の処理に戻る。
【００７９】
一方、参照先の列が指定表ｔに含まれる場合は（ステップ３０５：ＮＯ）、検証部２は、検証部２自身に参照先列情報に対応する参照先列値記憶領域１９が存在するか否かを判定する（ステップ３０６）。
【００８０】
この判定で、参照先列値の記憶領域１９が存在する場合は（ステップ３０６：ＹＥＳ）、ステップ３０２の処理に戻り、参照先列値の記憶領域１９が存在しない場合は（ステップ３０６：ＮＯ）、検証部２は、検証部２自身に、参照先列情報に対応する参照先列値記憶領域１９を新たに追加・確保する（ステップ３０７）。このとき、検証部２は、この列を参照先とする参照元列値を保存するため、検証部２自身に新たな参照元列値記憶領域２０も同時に追加・確保する。その後、ステップ３０２の処理に戻る。
２）参照整合性制約の検証対象となる列値候補取得ステップ
本ステップは、図５に記されるフローチャート手順で実施される。これは、ステップ３１０〜３１８を含んで構成される。
【００８１】
検証部２は、まだ処理対象となっていない指定表ｔを選び、ステップ２１８で検証済データ保持部１３に保存した挿入データファイル９のパス情報を元に、同じく検証済データ保持部１３に保存した挿入データファイル行データを割り出す。その後、挿入データファイル行データを読み込み、処理対象とする（ステップ３１０、ステップ３１１：ＮＯ）。この時点で、全ての挿入データファイル行データが既に処理対象となっていた場合は、読み込むファイルが存在しないと判断し（ステップ３１１：ＹＥＳ）、図６に示すステップ３２０を実行する。
【００８２】
続けて、検証部２は、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、ステップ３１０にて処理対象となった挿入データファイル行データに関連する全参照整合性制約を、参照整合性制約リストとして取得し直す（ステップ３１２、ステップ３１３：ＮＯ）。これは、ステップ３０１の処理で実施しているが、必要な限り再度、実施する。一方、列情報保存領域１８に保存した挿入データファイル行データに関連する参照整合性制約が存在しない場合は（ステップ３１３：ＹＥＳ）、ステップ３１０の処理に戻る。
【００８３】
次いで、ステップ３１０で処理対象とした挿入データファイル行データから１行分のデータを読み込む（ステップ３１４、ステップ３１５：ＮＯ）。この時点で、既に全行分のデータが読み込まれている場合は、読み込む行が存在しないと判断され（ステップ３１５：ＹＥＳ）、ステップ３１０の処理に戻る。
【００８４】
次いで、ステップ３１２で取得した参照整合性制約リストの内、ステップ３１４で取得した挿入データファイル行データを検証していない参照整合性制約を１つ選択する（ステップ３１６、ステップ３１６：ＮＯ）。この時点で、既にリスト内の全ての参照整合性制約が検証されている場合（ステップ３１６：ＹＥＳ）、ステップ３１４の処理へ戻る。
【００８５】
続けて、検証部２は、次のステップ３１８の処理を実行する。
【００８６】
即ち、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、ステップ３１０にて処理対象となった挿入データファイル行データに、ステップ３１６で取得した参照整合性制約の参照先となる列が含まれており、且つ、この当該列に対応する参照先列値記憶領域１９が、検証部２自身内に存在するか否かを判定する。
【００８７】
参照先列値記憶領域１９が存在すると判定された場合、ステップ３１４で取得した挿入データファイル行データ上の該当列の列候補値を参照先列値記憶領域１９にコピーして保存する。
【００８８】
続けて、検証部２は、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、ステップ３１０にて処理対象となった挿入データファイル行データに、ステップ３１６で取得した参照整合性制約の参照元となる列が含まれており、且つ、この列に対応する参照元列値記憶領域２０が、検証部２自身内に存在するか否かを判定する。
【００８９】
検証部２自身内に参照元列値記憶領域２０が存在すると判定され、且つ、参照元列値記憶領域２０にステップ３１４で取得した挿入データファイル行データ上の該当列の列候補値と同一値が保存されていない場合に限り、ステップ３１４で取得した挿入データファイル行データ上の該当列の列候補値を、参照先列値記憶領域２０に保存する（ステップ３１８）。それ以外は、ステップ３１６の処理に戻る。
【００９０】
ステップ３１８の処理を実行した場合は、実行後、ステップ３１６の処理に戻る。
３）参照整合性制約の検証対象となる列値取得ステップ
本ステップは、図６に記すフローチャート手順で実施される。これは、ステップ３２０〜３２４を含んで構成される。
【００９１】
まず、検証部２は、ステップ３０７で確保され、検証部２自身が保持している参照先列値記憶領域１９のうち、処理対象となっていない参照先列値記憶領域１９を１つ選択する（ステップ３２０、ステップ３２１：ＮＯ）。この時点で、全ての参照先列値記憶領域１９が既に処理対象となっている場合は、全ての記憶領域を処理済みと判断し（ステップ３２１：ＹＥＳ）、図７に示すステップ３３０の処理を実行する。
【００９２】
次いで、検証部２は、ステップ３２０で取得した参照先列値記憶領域１９と関連する参照整合性制約を、ステップ３２１で取得した参照整合性制約リストから取得し、データインスタンス部６からその参照整合性制約の対象となる列値を取得する（ステップ３２２）。
【００９３】
次いで、検証部２は、列値を、ステップ３２０で取得した参照先列値記憶領域１９にコピー・保存する（ステップ３２３）。さらに、ステップ３２０で取得した参照先列値記憶領域１９に格納されている列値を昇順にソートし、ステップ３２０に戻る（ステップ３２４）。
４）参照整合性制約の検証ステップ
本ステップは、図７に記すフローチャート手順で実施される。これは、ステップ３３０〜３４３を含んで構成される。
【００９４】
まず、検証部２は、ステップ３０７で確保され、検証部２自身が保持している参照元列値記憶領域２０のうち、まだ処理対象となっていない参照元列値記憶領域を１つ選択する（ステップ３３０、ステップ３３１：ＮＯ）。この時点で、全ての参照元列値記憶領域２０が既に処理対象となっている場合は、全ての記憶領域を処理済と判断し（ステップ３３１：ＹＥＳ）、処理を完了する。
【００９５】
次いで、検証部２は、ステップ３３０で取得した参照元列値記憶領域２０に格納されている列値を昇順にソートする（ステップ３３２）。
【００９６】
次いで、ステップ３３０で取得した参照元列値記憶領域２０に対応する参照先列値記憶領域１９を取得する（ステップ３３３）。
【００９７】
次いで、ステップ３３０で取得した参照元列値記憶領域２０に格納されている列値の先頭の値（最小の値）を取得し、これを現参照元列値とする（ステップ３３４、ステップ３３５：ＮＯ）。この時点で、現参照元列値が取得できない場合は、列値の先頭の値が存在しないと判断し（ステップ３３５：ＹＥＳ）、ステップ３３０の処理に戻る。
【００９８】
次いで、ステップ３３３で取得した参照先列値記憶領域１９に格納されている列値の先頭の値（最小の値）を取得し、これを現参照先列値とする（ステップ３３６、ステップ３３７：ＮＯ）。この時点で、現参照先列値が取得できない場合は、列値の先頭の値が存在しないと判断し（ステップ３３７：ＹＥＳ）、エラーとして扱い（ステップ３３７ａ）、ログファイル１２に書き出した後、処理を終了する。
【００９９】
次いで、現参照元列値と現参照先列値を比較し、両者が等しい場合は（現参照元列値＝現参照先列値、ステップ３３８：ＹＥＳ）、ステップ３４０の処理を実行する。
【０１００】
また、両者が等しくない場合は（ステップ３３８：ＮＯ）、現参照元列値が現参照先列値より大きいかどうか判断し（ステップ３３９）、現参照元列値が現参照先列値より大きい場合は（ステップ３３９：ＹＥＳ）、ステップ３４２の処理を実行する。それ以外の場合は（ステップ３３９：ＮＯ）、エラーとして扱い（ステップ３３９ａ）、ログファイル１２に書き出した後、処理を終了する。
【０１０１】
次いで、ステップ３３０で取得した参照元列値記憶領域２０から、現参照元列値の次の値を新たに取得し、これを現参照元列値として再設定する（ステップ３４０、ステップ３４１：ＮＯ）。この時点で、新たな現参照元列値を取得できない場合は、現参照元列値の次の値が存在しないと判断し（ステップ３４１：ＹＥＳ）、ステップ３３０の処理に戻る。
【０１０２】
次いで、ステップ３３３で取得した参照先列値記憶領域１９から、現参照先列値の次の値を新たに取得し、これを現参照先列値として再設定する（ステップ３４２、ステップ３４３：ＮＯ）。この時点で、新たな現参照先列値が取得できない場合は、現参照先列値の次の値が存在しないと判断し（ステップ３４３：ＹＥＳ）、エラーとして扱い（ステップ３４３ａ）、ログファイル１２に書き出した後、処理を終了する。また、新たな現参照先列値を取得できた場合は（ステップ３４３：ＮＯ）、ステップ３３８の処理に戻る。
【０１０３】
検証部２は、参照整合性制約の検証ステップを満足しない挿入データファイル行データが存在することを摘出した場合は、エラーとして扱い、ログファイル１２に書き出す。
【０１０４】
上記の参照整合性制約の検証ステップでは、起動コマンドａで指定される全ての挿入データファイル群９を対象とし、列情報保存領域１８に保存される挿入データファイル行データに対して実施する。
【実施例】
【０１０５】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
【０１０６】
ここでは、データディクショナリ部５には、図８（ａ）〜（ｃ）に示す表Ａ〜表Ｃに関する表定義、実体整合性制約、参照整合性制約が設定され、さらにデータインスタンス部６には、図９（ａ）〜（ｃ）に示す表Ａ〜表Ｃのデータインスタンス（データ）があらかじめ入力されている場合の実施例について説明する。
【０１０７】
ここで、図８（ａ）〜（ｃ）中の「ＰＫ」は主キー（Primary Key）を、「ＦＫ」は外部キー（Foreign Key）をそれぞれ表す。主キーは、リレーショナルデータベースを構成する表中の目的とする行を一意に識別するために使用する列（カラム）である。また、外部キーは、リレーショナルデータベースを構成する２つの表のうちの一方の表中のあるカラムの値がその他方の表の主キーを成すカラムの値のいずれかと等しい関係にある場合、他方の表の主キーを指示（参照）している一方の表の列である。例えば、参照整合性制約として、「表Ｘ．列１」に「ＦＫ（表Ｙ．列２）」が設定されている場合は、「表Ｘ．列１」（参照元）の列値（列情報）は、「表Ｙ．列２」（参照先）の列値（列情報）を参照することを意味する。
【０１０８】
この実施例において、挿入データファイル群９および起動コマンドａによる挿入データファイル（データファイルＡ〜Ｃ）と指定表（表Ａ〜表Ｃ）との対応関係が図１０（ａ）〜（ｃ）に示すようになっていた場合の動作を説明する。
【０１０９】
まず、動作を開始したデータローダ装置１は、関係ｒを更に引数ｓとして扱い、引数ｓを元に検証部２を起動する要求ｂを発行する。要求ｂにより起動した検証部２は、引数ｓで指定される関係ｒの指定表ｔ（この実施例では表Ａ、表Ｂ、表Ｃ）の存在を確認するため、データベース管理システム４に問い合わせｃを発行する。この問い合わせｃの結果、データベース管理システム４は、表定義部８にアクセスし、指定表ｔに対する全ての表属性定義情報ｄと、この表属性定義情報ｄに付随するデータ型情報ｅとを検証部２に戻す。この実施例では、指定表ｔに対応する表Ａ、表Ｂ、表Ｃについて、図８（ａ）〜（ｃ）に示されている全ての表定義情報が戻される。
【０１１０】
次いで、検証部２は、実体整合性制約に関する情報を得るため、表属性定義情報ｄを元に、データベース管理システム４に問い合わせｆを発行する。この問い合わせｆの結果、データベース管理システム４は、実体整合性制約管理部１０をアクセスする。その後、検証部２に対して、指定表ｔの表属性定義情報ｄに付随する実体整合性制約情報ｇが表毎に戻される。この問い合わせｆは、指定された指定表ｔ全てに実施される。この実施例においては、図８（ａ）〜（ｃ）に示されている表Ａ〜表Ｃ（指定表ｔ）における実体整合性制約情報ｇとして、「表Ａ．列２」に対するＵＮＩＱＵＥ制約と、「表Ｂ．列３」に対するＮＯＴ  ＮＵＬＬ制約とが戻される。
【０１１１】
次いで、検証部２は、参照整合性制約に関する情報を得るため、表属性定義情報ｄを元に、データベース管理システム４に問い合わせｈを発行する。この問い合わせｈの結果、データベース管理システム４は、参照整合性制約管理部７をアクセスする。その後、検証部２に指定された指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉが表毎に戻される。この問い合わせｈは、指定された指定表ｔ全てに実施される。この実施例においては、図８（ａ）〜（ｃ）に示されている表Ａ〜表Ｃ（指定表ｔ）における参照整合性制約情報ｉとして、「表Ｂ．列２」から「表Ａ．列１」への参照（図８（ｂ））と、「表Ｃ．列２」から「表Ａ．列１」に対する参照（図８（ｃ））と、「表Ｃ．列３」から「表Ｂ．列１」に対する参照（図８（ｃ））とが戻される。
【０１１２】
その後、検証部２は、入手した参照整合性制約情報ｉを元に、指定表ｔに付与した参照整合性制約の全てを一時的に停止するため、要求ｊを制約制御部１４に発行する。制約制御部１４は、データベース管理システム４に対して、要求ｊと同意の要求ｌを発行する。要求ｌの結果、データベース管理システム４は参照整合性制約管理部７にアクセスし、指定表ｔの参照整合性制約情報ｉから対象参照整合性制約を全て停止する。これにより、図８（ａ）〜（ｃ）に示されている参照整合性制約情報ｉ、即ち「表Ｂ．列２」から「表Ａ．列１」への参照と、「表Ｃ．列２」から「表Ａ．列１」に対する参照と、「表Ｃ．列３」から「表Ｂ．列１」に対する参照とが一時的に停止される。
【０１１３】
次に、検証部２は、前述した図２及び図３のフローチャートに従って実体整合性制約の検証処理を行う。
【０１１４】
まず、検証部２は、挿入データファイル群９からデータファイルを１つ読み込む（ステップ２０１、ステップ２０２：ＮＯ）。ここでは、図１０（ａ）に示すデータファイルＡを読み込むものとする。
【０１１５】
次いで、読み込んだデータファイルに関連する全ての実体整合性制約を、実体整合性制約リストとして取得する（ステップ２０３）。ここでは、実体整合性制約リストとして、図８（ａ）に示す「表Ａ．列２」のＵＮＩＱＵＥ制約が取得される。
【０１１６】
次いで、ステップ２０３で取得した実体整合性制約リストを判定し、そのリストの中に、制約条件確認の一環として、同一表内の他行を参照する必要があるもの（ここではＵＮＩＱＵＥ制約が主対象である。）が存在する場合、検証部２内に列情報保存領域１８を追加・確保する（ステップ２０４）。ここでは、実体整合性制約リストには、制約条件確認のために同一表内の他行を参照する必要があるＵＮＩＱＵＥ制約が取得されているため、列情報保存領域１８として、そのＵＮＩＱＵＥ制約に対応する「表Ａ．列２」を保存する領域が確保される。
【０１１７】
次いで、ステップ２０１で処理対象とされたデータファイルＡから１行読み込む（ステップ２０５、ステップ２０６：ＮＯ）。これにより、図１０（ａ）に示すように、データファイルＡから“３、５、アメリカ、ニューヨーク”という行が読み込まれる。続けて、データファイルＡから読み込んだ１行分のデータそのものを、挿入データファイル行データｏとして検証済データ保持部１３に保存する（ステップ２１８）。
【０１１８】
次いで、ステップ２０３で取得された実体整合性制約リストの内、ステップ２０５で取得した行に対して、検証していない実体整合性制約を１つ取得する（ステップ２０７、ステップ２０８：ＮＯ）。ここでは、実体整合性制約リストには、「表Ａ．列２」のＵＮＩＱＵＥ制約だけが登録されているため、これが取得される。
【０１１９】
さらに、ステップ２０７で取得した実体整合性制約に関する判定に、他行を参照する必要があるか、すなわちステップ２０４で検証部２内に確保した列情報保存領域１８に保存された実体整合性制約であるか否かを判定する（ステップ２０９）。ここでは、「表Ａ．列２」のＵＮＩＱＵＥ制約に対応する列情報保存領域１８は確保されているため、ステップ２０７で取得し、ステップ２０５で読み込んだ行に対する未適用の実体整合性制約の対象値を、列候補値として、ステップ２０４で確保された列情報保存領域１８に保存する（ステップ２０９：ＮＯ、ステップ２１０）。ここでは、未適用の実体整合性制約の対象値として、値“５”が保存される。
【０１２０】
これで、ステップ２０３で取得した実体整合性制約リストの全ての実体整合性制約が検証され、さらにステップ２０１で処理対象としたデータファイルＡの全ての行が処理されたことになるため（ステップ２０８：ＹＥＳ、２０６：ＹＥＳ）、図３に示すステップ２１２の処理へ移行する。
【０１２１】
即ち、ステップ２０４で確保された列情報保存領域１８から、未検証状態にある領域を１つ取得する（ステップ２１２）。ここでは、未検証状態にある領域として、ＵＮＩＱＵＥ制約に対応する「表Ａ．列２」を保存する領域が取得される。
【０１２２】
次いで、データインスタンス部６のデータから、実体整合性制約対象となる列値を取得する（ステップ２１４）。ここでは、図９（ａ）に示すデータインスタンス部６のデータ（表Ａ）のうち、「表Ａ．列２」には、“３”、“２”という値が格納されているため、この２つの値が取得される。
【０１２３】
次に、ステップ２１４で取得された列値と、ステップ２１０で取得された列情報保存領域１８内に保存されている列候補値とを全て統合し、統合データとする。これにより、列情報保存領域１８に保存されていた値“５”と、「表Ａ．列２」から取得された“３”、“２”とが統合されて、１つの統合データとなる。この統合データには、ステップ２０７で取得された実体整合性制約が対応する。そこで、統合データをもとに、対応する実体整合性制約の条件を満足するか否かを判定する（ステップ２１５）。ここでは、“３”、“２”、“５”という値の集合は、「ＵＮＩＱＵＥ制約」を満たすため、検証は成功する。
【０１２４】
以上により、データファイルＡに対応する全ての列情報保存領域１８が処理されたため、ステップ２０１の処理に戻る（ステップ２１３：ＹＥＳ）。
【０１２５】
次いで、挿入データファイル群９から次のデータファイルを読み込む（ステップ２０１）。ここでは、図１０（ｂ）に示すデータファイルＢが読み込まれる。このデータファイルＢも、上記処理により、データファイルＡと同様に処理されるが、データファイルＢに対応する表Ｂには、図８（ｂ）に示すように、実体整合性制約として、ＮＯＴ  ＮＵＬＬ制約のみが設定されており、ＮＯＴ  ＮＵＬＬ制約は、判定に他行を参照する必要がないため、ステップ２０４、２１０、２１４の処理では、何も実行されない。その代わりに、ステップ２１１の処理により、１行読み込みを行うごとに実体整合性制約の検証が行われる。
【０１２６】
次いで、挿入データファイル群９から次のデータファイル、即ち図１０（ｃ）データファイルＣが読み込まれるが、このデータファイルＣに対応する表Ｃには、図８（ｃ）に示すように、実体整合性制約が設定されていないため、検証は行われない。
【０１２７】
以上の処理により、データファイルＡ、Ｂ、Ｃが実体整合性制約を満たしていることが確認された。さらに、検証済データ保持部１３には、データファイルＡ、Ｂ、Ｃの各データが保存された。
【０１２８】
以上により、検証部２による実体整合性制約の検証処理が終了する（ステップ２０２：ＹＥＳ）。
【０１２９】
次に、検証部２は、前述した図４〜図７のフローチャートに従って参照整合性制約の検証処理を行う。
【０１３０】
まず、検証部２は、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、指定表ｔに関連する全ての参照整合性制約を、参照整合性制約リストとして取得する（ステップ３０１）。ここでは、参照整合性制約リストとして、図８（ａ）〜（ｃ）に示されている表Ａ〜表Ｃ（指定表ｔ）の参照整合性制約情報ｉである、「表Ｂ．列２」から「表Ａ．列１」への参照、「表Ｃ．列２」から「表Ａ．列１」に対する参照、「表Ｃ．列３」から「表Ｂ．列１」に対する参照が取得される。
【０１３１】
次いで、取得された参照整合性制約リストから参照整合性制約を１つ取得する。ここでは、まず、「表Ｂ．列２」から「表Ａ．列１」への参照を取得する（ステップ３０２、ステップ３０３：ＮＯ）。次いで、参照整合性制約を構成する参照元と参照先の列情報を取得する（ステップ３０４）。ここでは、参照元が「表Ｂ．列２」、参照先が「表Ａ．列１」となる。
【０１３２】
次いで、ステップ３０４で取得された参照先の列情報が指定表ｔの列となっているか否かを判定する（ステップ３０５）。ここでは、参照先の表である「表Ａ」は、指定表ｔ（表Ａ、表Ｂ、表Ｃ）に含まれるため（ステップ３０５：ＮＯ）、次に、「表Ａ．列１」に対応する参照先列値記憶領域１９が存在するか否かを判定する（ステップ３０６）。
【０１３３】
この時点では、まだ「表Ａ．列１」に対応する参照先列値記憶領域１９は存在しないため（ステップ３０６：ＮＯ）、「表Ａ．列１」に対応する参照先列値記憶領域１９を新たに追加・確保する（ステップ３０７）。更に、検証部２は、この列（表Ａ．列１）を参照先とする参照元列値を保存するため、検証部２自身に新たな参照元列値記憶領域２０も同時に追加・確保する（ステップ３０７）。
【０１３４】
以後、同様の処理を、「表Ｃ．列２」から「表Ａ．列１」に対する参照に対しても実行するが、「表Ａ．列１」に対応する参照先列値記憶領域１９は、上記処理により既に確保されているため、参照先列値記憶領域１９の確保は行われない。
【０１３５】
一方、「表Ｃ．列３」から「表Ｂ．列１」に対する参照については、「表Ｂ．列１」に対応する参照先列値記憶領域１９がまだ確保されていないため、「表Ｂ．列１」に対応する参照先列値記憶領域１９、及び参照元列値記憶領域２０が確保される。
【０１３６】
以上により、参照整合性制約リストの全ての参照整合性制約が適用されると（ステップ３０３：ＹＥＳ）、検証部２は、まだ処理対象となっていない指定表ｔを選び、ステップ２１８で検証済データ保持部１３に保存した挿入データファイル９のパス情報を元に、同じく検証済データ保持部１３に保存した挿入データファイル行データｏを割り出す。その後、挿入データファイル行データｏを読み込み、処理対象とする（ステップ３１０、ステップ３１１：ＮＯ）。ここでは、データファイルＡに対応する検証済データ保持部１３に保存した挿入データファイル行データｏを処理対象とする。
【０１３７】
続けて、検証部２は、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、ステップ３１０にて処理対象となった挿入データファイル行データｏに関連する全ての参照整合性制約を、参照整合性制約リストとして取得する（ステップ３１２、ステップ３１３：ＮＯ）。ここでは、表Ａに関連する、「表Ｂ．列２」から「表Ａ．列１」への参照、「表Ｃ．列２」から「表Ａ．列１」に対する参照を取得する。
【０１３８】
次いで、ステップ３１０で処理対象とされた挿入データファイル行データｏから１行分のデータを読み込む（ステップ３１４、ステップ３１５：ＹＥＳ）。ここでは、図１０（ａ）に示すように、データファイルＡに対応する挿入データファイル行データｏから、“３、５、アメリカ、ニューヨーク”という行が読み込まれる。
【０１３９】
次いで、ステップ３１２で取得された参照整合性制約リストの内、ステップ３１４で取得された挿入データファイル行データｏを検証していない参照整合性制約を１つ選択する（ステップ３１６、ステップ３１７：ＮＯ）。ここでは、まず、「表Ｂ．列２」から「表Ａ．列１」への参照が取得される。
【０１４０】
続けて、検証部２は、ステップ３１８の処理を実行する。
【０１４１】
即ち、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、ステップ３１０にて処理対象となった挿入データファイル行データｏに、ステップ３１６で取得された参照整合性制約の参照先となる列が含まれており、且つ、この列に対応する参照先列値記憶領域１９が、検証部２自身内に存在するか否かを判定する。ここでは、「表Ａ．列１」に対応する参照先列値記憶領域１９が確保されているため、ステップ３１４で取得された挿入データファイル行データｏ上の該当列の列候補値を参照先列値記憶領域１９にコピーして保存する。ここでは、“３”が保存される。
【０１４２】
続けて、検証部２は、指定表ｔの表属性定義情報ｄに付随する参照整合性制約情報ｉを元に、ステップ３１０にて処理対象となった挿入データファイル行データｏに、ステップ３１６で取得された参照整合性制約の参照元となる列が含まれているか否かを検証する。ここでは、参照元である「表Ｂ．列２」は、表Ａの列ではないため、処理は行われない。
【０１４３】
同様に、ステップ３１６〜３１８の処理が「表Ｃ．列２」から「表Ａ．列１」に対する参照に対しても行われる。さらに、データファイルＢ、Ｃに対してステップ３１０〜３１８の処理が行われる。
【０１４４】
これにより、「表Ａ．列１」に対応する参照先列値記憶領域１９には“３”が、「表Ａ．列１」に対応する参照元列値記憶領域２０には“１”、“２”、“３”が、「表Ｂ．列１」に対応する参照先列値記憶領域１９には“４”、“５”が、「表Ｂ．列１」に対応する参照元列値記憶領域２０には“１”、“４”、“５”が格納される。
【０１４５】
以上により、挿入データファイル群９から読み込むデータファイルが存在しなくなると（ステップ３１１：ＹＥＳ）、検証部２は、ステップ３０７で確保され、検証部２自身が保持している参照先列値記憶領域１９のうち、処理対象となっていない参照先列値記憶領域１９を１つ選択する（ステップ３２０、ステップ３２１：ＮＯ）。ここでは、「表Ａ．列１」に対応する参照先列値記憶領域１９が取得される。
【０１４６】
次いで、検証部２は、ステップ３２０で取得された参照先列値記憶領域１９と関連する参照整合性制約を、ステップ３２１で取得された参照整合性制約リストから取得し、データインスタンス部６のデータから、参照整合性制約の対象となる列値を取得する（ステップ３２２）。ここでは、「表Ａ．列１」の列値が取得される。図９によれば、「表Ａ．列１」には“１”、“２”が格納されているため、この列値が取得される。
【０１４７】
次いで、検証部２は、取得された“１”、“２”の列値を、ステップ３２０で取得した参照先列値記憶領域１９にコピーして保存する（ステップ３２３）。これにより、「表Ａ．列１」に対応する参照先列値記憶領域１９には、“１”、“２”、“３”が格納される。さらに、この列値は、昇順にソートされる。
【０１４８】
以後、同様の処理が「表Ｂ．列１」に対応する参照先列値記憶領域１９に対しても行われ、“１”、“２”、“３”、“４”、“５”が格納される。
【０１４９】
以上により、参照先列値記憶領域１９の全ての記憶領域が処理されると（ステップ３２１：ＹＥＳ）、検証部２は、ステップ３０７で確保され、検証部２自身が保持している参照元列値記憶領域２０のうち、まだ処理対象となっていない参照元列値記憶領域を１つ選択する（ステップ３３０、ステップ３３１：ＮＯ）。ここでは、「表Ａ．列１」に対応する参照元列値記憶領域２０が取得される。検証部２は、ステップ３３０で取得された参照元列値記憶領域２０に格納されている列値を昇順にソートする（ステップ３３２）。
【０１５０】
次いで、ステップ３３０で取得された参照元列値記憶領域２０に対応する参照先列値記憶領域１９を取得する（ステップ３３３）。ここでは、「表Ａ．列１」に対応する参照先列値記憶領域１９が取得される。
【０１５１】
次いで、ステップ３３０で取得された参照元列値記憶領域２０に格納されている列値の先頭の値（最小の値）を取得し、これを現参照元列値とする（ステップ３３４、ステップ３３５：ＮＯ）。ここでは、“１”が取得される。
【０１５２】
次いで、ステップ３３３で取得された参照先列値記憶領域１９に格納されている列値の先頭の値（最小の値）を取得し、これを現参照先列値とする（ステップ３３６、ステップ３３７：ＮＯ）。ここでは、“１”が取得される。
【０１５３】
次いで、現参照元列値と現参照先列値を比較する（ステップ３３８、３３９）。ここでは、両者は等しいため（ステップ３３８：ＹＥＳ）、現参照元列値の次の値と、現参照先列値の次の値が取得される（ステップ３４０、ステップ３４１：ＮＯ、ステップ３４２、ステップ３４３：ＮＯ）。ここでは、“２”と“２”が取得される。
【０１５４】
その結果、再度、現参照元列値と現参照先列値が比較され、これも等しいため、現参照元列値の次の値と、現参照先列値の次の値である、“３”と“３”が取得され、比較される。これにより、全ての参照元列値記憶領域２０に格納されている値について検証が成功する。
【０１５５】
次いで、「表Ｂ．列１」に対応する参照先列値記憶領域１９と、「表Ｂ．列１」に対応する参照元列値記憶領域２０とについて同様の処理を行う。
【０１５６】
この場合、参照元列値記憶領域２０に格納されている列値の先頭の値は“１”、参照先列値記憶領域１９に格納されている列値の先頭の値は“１”で、これらは等しいため、検証に成功するが、現参照元列値の次の値は“４”、現参照先列値の次の値は“２”となり、参照元列値＞参照先列値となる。
【０１５７】
この場合、ステップ３３９の処理でＹＥＳと判定され、参照先列値のみが現参照先列値の次の値となる。これにより、参照先列値は“３”となるが、やはり参照元列値＞参照先列値となる。ここで再度参照先列値のみが現参照先列値の次の値となる。これにより、参照先列値は“４”となり、参照元列値と等しくなるため、検証に成功する。
【０１５８】
次いで、現参照元列値の次の値と、現参照先列値の次の値である、“５”と“５”が取得され、これらは等しいため、検証に成功する。
【０１５９】
以上により、全ての参照元列値記憶領域２０に対して検証が成功するため、データファイルＡ、Ｂ、Ｃは、参照整合性制約を満たしていることが確認された。
【０１６０】
これにより、検証部２による参照整合性制約の検証処理が終了する（ステップ３３１：ＹＥＳ）。
【０１６１】
以上のようにして、起動コマンドａで指定される全ての挿入データファイル群９のデータに関して、実体整合性制約と参照整合性制約の検証ステップの処理が終了すると、検証部２は、検証済データのデータベース管理システム４への格納を行うため、データ挿入部３に対して起動要求ｎを発行する。その際、検証済データ保持部１３のアクセス参照先ｕが引数として渡される。
【０１６２】
データ挿入部３は、起動要求ｎを受けると、指定された指定表ｔに相当する表１１へ格納するべきデータの内、全行分のデータｐを検証済データ保持部１３から入手する。その後、データインスタンス部６への格納を行うため、データｐをもとに、ＳＱＬの該当ＩＮＳＥＲＴ文を作成し、順次、データベース管理システム４へ、ＩＮＳＥＲＴ文ｑを発行する。これにより、表Ａ〜表Ｃへ、データファイルＡ〜Ｃの各データがそれぞれ格納される。
【０１６３】
このようにして、ＩＮＳＥＲＴ文ｑに加工・翻訳された一連のデータをデータベース管理システム４に格納した後、データ挿入部３は、先に停止させた参照整合性制約情報ｉに対応する参照整合性制約を全て再有効にするため、制約制御部１４に要求ｋを発行する。
【０１６４】
その後、制約制御部１４は、データベース管理システム４に対し、要求ｋと同意の要求ｍを発行する。この要求ｍの結果、データベース管理システム４は、参照整合性制約管理部７をアクセスし、参照整合性制約情報ｉに対応する参照整合性制約を全て再有効化する。これにより、「表Ｂ．列２」から「表Ａ．列１」への参照、「表Ｃ．列２」から「表Ａ．列１」に対する参照、「表Ｃ．列３」から「表Ｂ．列１」に対する参照が有効になる。
【０１６５】
上記一連の動作を終了した段階で、本データローダ装置１は、動作を終了する。
【０１６６】
従って、本実施の形態によれば、全ての入力データを一括して整合性に関する制約の検証を行っているため、従来の方法に比べ高速な制約の検証が可能になっている。また、外部ファイル内に記載されるデータの入力順序を意識せずに任意の順序で入力を行うことができるため、操作性を大幅に向上させることができる。このようにして、データベースへデータを入力する際の操作性を向上させると共に、整合性に関する制約の検証の高速化を図ることができる。
【０１６７】
なお、本発明は、代表的に例示した上述の実施の形態に限定されるものではなく、当業者であれば、特許請求の範囲の記載内容に基づき、その要旨を逸脱しない範囲内で種々の態様に変形、変更することができる。これらの変更例や変形例も本発明の権利範囲に属するものである。
【０１６８】
以下、本発明のその他の実施の態様について説明する。
［第一のデータ入力方式］
本方式は、システム利用者が、外部ファイルからデータベースへデータを入力する際に、前記外部ファイル内に記載されるデータを、前記データベースが保持している実体整合性制約及び参照整合性制約に従い、入力事前に検証するステップを含むこと特徴とする。
【０１６９】
これによれば、実体整合性制約、もしくは参照整合性制約に対する整合性違反を事前に判定できない故、データベース管理システムに対するデータ入力の際、入力の度に整合性違反が報告され、入力そのものができないという従来技術の課題を解決することができる。
［第二のデータ入力方式］
本方式は、システム利用者が、外部ファイルからデータベースへデータを入力する際に、前記データベースが保持している整合性制約を一度停止するステップを実施し、外部ファイル内に記載されるデータを、データベースが保持している整合性制約に従い、入力事前に検証した後、前記データを入力するステップを実施し、入力後に前記整合性制約を再度有効化するステップを実施することで、前記整合性制約による前述データの入力順序制限を考慮不要にできることを特徴とする。
【０１７０】
これによれば、実体整合性制約、もしくは参照整合性制約に対する整合性違反を事前に判定できない故、外部ファイルからデータベース管理システムへデータを入力する際に、システム利用者が当該データの入力順序を考慮する必要があるという従来技術の課題を解決することができる。
［第三のデータ入力方式］
本方式は、システム利用者が、外部ファイルからデータベースへデータを入力する際に、当該外部ファイル内に記載される前記データを、前記データベースが保持している実体整合性制約に従い入力事前に検証するステップを実施する場合、前記データベース内の指定カラムに関し、前記データベースが既に保持しているカラム値、ならびに前記外部ファイル内の対応するカラム値を全て集積し、一意性を保障しているか否かの検証ステップの実施を含むことを特徴とする。
【０１７１】
これによれば、実体整合性制約、もしくは参照整合性制約に対する整合性違反を事前に判定できない故、データベース管理システムに対するデータ入力の際、入力の度に整合性違反が報告され、入力そのものができないという従来技術の課題を解決することができる。
［第四のデータ入力方式］
本方式は、システム利用者が、外部ファイルからデータベースへデータを入力する際に、当該外部ファイル内に記載される前記データを、前記データベースが保持している参照整合性制約に従い入力事前に検証するステップを実施する場合、前記データベース内の複数指定カラムで構成される参照関係に関し、前記データベースが既に確立している参照関係のみならず、前記外部ファイル内の対応するカラム値と新たに構成する新参照関係も含めて、前記参照整合性を保障しているか否かの検証ステップの実施を含むことを特徴とする。
【０１７２】
これによれば、実体整合性制約、もしくは参照整合性制約に対する整合性違反を事前に判定できない故、データベース管理システムに対するデータ入力の際、入力の度に整合性違反が報告され、入力そのものができないという従来技術の課題を解決することができる。
［第五のデータ入力方式］
本方式は、システム利用者が、外部ファイルからデータベースへデータを入力する際に、当該外部ファイル内に記載される前述データを、前述データベースが保持している参照整合性制約に従い入力事前に検証するステップを実施する場合、当該参照整合性制約に基づく前記データの読み込み回数の縮退操作、ならびにデータ並び替え操作を実施することで、参照の検証に掛かる計算量を極小化した方式で当該参照整合性を保障しているか否かの検証ステップ実施を含むことを特徴とする。
［第一のデータ入力装置］
本装置は、システム利用者が、外部ファイルからデータベースへデータを入力する際に、当該データベースが保持している整合性制約を一度停止するステップを実施し、前記外部ファイル内に記載される前述データを、前記データベースが保持している前記整合性制約に従い、入力事前に検証した後、前記データを入力するステップを実施し、入力後に前記整合性制約を再度有効化するステップを実施することで、整合性制約によるデータの入力順序制限を考慮不要とするデータベースへのデータ入力方式を採用したものである。
【０１７３】
これによれば、外部ファイル内に記載されるデータの入力順序を意識せずに、かつデータベースが保持している整合性に関する制約を解決しつつ、システムを操作することができる。
【図面の簡単な説明】
【０１７４】
【図１】本発明の実施の形態に係るデータ入力装置を備えたデータベースシステムの全体構成を示す概略ブロック図である。
【図２】本発明の実施の形態に係るデータ入力装置による実体整合性制約の検証ステップを説明する概略フローチャートである。
【図３】本発明の実施の形態に係るデータ入力装置による実体整合性制約の検証ステップを説明する概略フローチャートである。
【図４】本発明の実施の形態に係るデータ入力装置による参照整合性制約の検証ステップの内、参照整合性制約の検証対象となる列情報取得ステップを説明する概略フローチャートである。
【図５】本発明の実施の形態に係るデータ入力装置による参照整合性制約の検証ステップの内、参照整合性制約の検証対象となる列値候補取得ステップを説明する概略フローチャートである。
【図６】本発明の実施の形態に係るデータ入力装置による参照整合性制約の検証ステップの内、参照整合性制約の検証対象となる列値取得ステップを説明する概略フローチャートである。
【図７】本発明の実施の形態に係るデータ入力装置による参照整合性制約の検証ステップの内、参照整合性制約の検証ステップを説明する概略フローチャートである。
【図８】本発明の実施例の表定義を説明する図である。
【図９】本発明の実施例の表のデータインスタンスを説明する図である。
【図１０】本発明の実施例の挿入データファイル群を説明する図である。
【図１１】従来技術のデータベースへのデータ入力方法及びその装置を説明する概略ブロック図である。
【符号の説明】
【０１７５】
１  データローダ装置
２  検証部
３  データ挿入部
４  データベース管理システム
５  データディクショナリ部
６  データインスタンス部
７  参照整合性制約管理部
８  表定義部
９  挿入データファイル
１０  実体整合性制約管理部
１１  表
１２  ログファイル
１３  検証済データ保持部
１４  制約制御部
１５  システム利用者
１６  表定義情報
１８  列情報保存領域
１９  参照先列値保存領域
２０  参照元列値保存領域
ａ  起動コマンド
ｂ  起動要求
ｃ  問い合わせ
ｄ  表属性定義情報
ｅ  データ型情報
ｆ  問い合わせ
ｇ  実体整合性制約情報
ｈ  問い合わせ
ｉ  参照整合性制約情報
ｊ  要求
ｋ  要求
ｌ  要求
ｍ  要求
ｎ  起動要求
ｏ  行データ
ｐ  データ
ｑ  ＩＮＳＥＲＴ文
ｒ  表定義の関係
ｓ  引数
ｔ  指定表
ｕ  アクセス参照先
１０１  入力装置
１０２  データベース管理システム
１０３  データベース入出力管理プログラム
１０４  データ文字列解析部
１０５  システム利用者
【図１】
2006079260.tif 000003
【図２】
2006079260.tif 000004
【図３】
2006079260.tif 000005
【図４】
2006079260.tif 000006
【図５】
2006079260.tif 000007
【図６】
2006079260.tif 000008
【図７】
2006079260.tif 000009
【図８】
2006079260.tif 000010
【図９】
2006079260.tif 000011
【図１０】
2006079260.tif 000012
【図１１】
2006079260.tif 000013