(57)【特許請求の範囲】
【請求項１】
複数のテーブルを有するデータベースのデータ連携を支援するデータ連携支援装置において、
前記複数のテーブルのそれぞれに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す主キー情報と、前記複数のテーブルのそれぞれに含まれる複数のカラムのそれぞれに格納されるデータの属性を示す属性情報と、前記複数のテーブル間の参照関係を示す参照関係情報とを記憶する情報記憶部と、
前記複数のテーブルから、主キーになっている２つ以上のカラムを含みデータ連携の連携先となる１つのテーブルを選択するテーブル選択部と、
前記情報記憶部に記憶された主キー情報に基づき、前記テーブル選択部により選択されたテーブルに含まれる複数のカラムから、前記２つ以上のカラムを特定するカラム特定部と、
前記情報記憶部に記憶された主キー情報と属性情報と参照関係情報とに基づき、前記複数のテーブルのうち前記テーブル選択部により選択されたテーブル以外のテーブルから、参照関係によって結ばれた２つ以上のテーブルの組み合わせであって、前記カラム特定部により特定されたカラムと対応するカラムが当該２つ以上のテーブルに分かれて各テーブルの主キーとして存在する組み合わせを抽出するテーブル抽出部と、
前記テーブル抽出部により抽出された組み合わせに含まれるテーブルを結合して１つのテーブルを作成するテーブル結合部と、
前記テーブル選択部により選択されたテーブルと前記テーブル結合部により作成されたテーブルとのスキーママッチングを行い、スキーママッチングの結果に基づき、前記テーブル抽出部により抽出された組み合わせを、前記テーブル選択部により選択されたテーブルのデータ連携に利用することを推奨するかどうか判断する推奨判断部と
を備えることを特徴とするデータ連携支援装置。
【請求項２】
前記テーブル抽出部により２つ以上の組み合わせが抽出された場合、
前記テーブル結合部は、前記テーブル抽出部により抽出された組み合わせごとに、組み合わせに含まれるテーブルを結合して１つのテーブルを作成し、
前記推奨判断部は、前記テーブル抽出部により抽出された組み合わせごとに、前記テーブル選択部により選択されたテーブルと前記テーブル結合部により作成されたテーブルとのスキーママッチングを行い、
前記推奨判断部は、スキーママッチングの結果に基づき、前記テーブル抽出部により抽出された組み合わせのうち１つの組み合わせを、前記テーブル選択部により選択されたテーブルのデータ連携に利用することを推奨する推奨情報を出力することを特徴とする請求項１のデータ連携支援装置。
【請求項３】
前記推奨判断部は、前記テーブル抽出部により抽出された組み合わせを、前記テーブル選択部により選択されたテーブルのデータ連携に利用することを推奨する場合、前記テーブル選択部により選択されたテーブルに含まれる複数のカラムから、前記テーブル結合部により作成されたテーブルに、対応するカラムが存在しないカラムを抽出し、前記複数のテーブルのうち前記テーブル選択部により選択されたテーブル以外のテーブルから、抽出したカラムと対応するカラムを含み、前記テーブル結合部により作成されたテーブルに結合可能なテーブルを検出し、検出したテーブルを、前記テーブル抽出部により抽出された組み合わせに追加することを特徴とする請求項１のデータ連携支援装置。
【請求項４】
複数のテーブルを有するデータベースのデータ連携を支援するデータ連携支援方法において、
前記複数のテーブルのそれぞれに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す主キー情報と、前記複数のテーブルのそれぞれに含まれる複数のカラムのそれぞれに格納されるデータの属性を示す属性情報と、前記複数のテーブル間の参照関係を示す参照関係情報とを記憶する情報記憶部を備えるコンピュータを用いて、
前記複数のテーブルから、主キーになっている２つ以上のカラムを含みデータ連携の連携先となる１つのテーブルを選択し、
前記情報記憶部に記憶された主キー情報に基づき、前記選択により選択されたテーブルに含まれる複数のカラムから、前記２つ以上のカラムを特定し、
前記情報記憶部に記憶された主キー情報と属性情報と参照関係情報とに基づき、前記複数のテーブルのうち前記選択により選択されたテーブル以外のテーブルから、参照関係によって結ばれた２つ以上のテーブルの組み合わせであって、前記特定により特定されたカラムと対応するカラムが当該２つ以上のテーブルに分かれて各テーブルの主キーとして存在する組み合わせを抽出し、
前記抽出により抽出された組み合わせに含まれるテーブルを結合して１つのテーブルを作成し、
前記選択により選択されたテーブルと前記結合により作成されたテーブルとのスキーママッチングを行い、スキーママッチングの結果に基づき、前記抽出により抽出された組み合わせを、前記選択により選択されたテーブルのデータ連携に利用することを推奨するかどうか判断することを特徴とするデータ連携支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ連携支援装置及びデータ連携支援方法に関するものである。
【背景技術】
【０００２】
システム間の連携、あるいは、システム同士の統合に伴って、システム別のデータベース間のデータ連携、あるいは、同じデータベース内の別々のテーブル間のデータ連携が必要となる。データ連携では、連携先となるテーブル（即ち、連携先テーブル）のカラムに格納するデータを、どのテーブル（即ち、連携元テーブル）のカラムから抽出すればよいかというデータ連携関係を定義する必要がある。【０００３】
データ連携関係を定義するためには、テーブル間のカラムの対応関係を何らかの手段で検出する必要がある。さらに、連携元テーブルから連携先テーブルのカラムの組み合わせであるテーブルレイアウトがテーブル操作によって作成できる必要がある。このようなデータ構造の変換が実施できないと、連携先テーブルにデータを格納することができない。連携先テーブルとレイアウトが一致する連携元テーブルがなく、２つ以上の連携元テーブルからデータを集めて連携先テーブルを作成する場合には、テーブル間のカラムの類似性によって対応関係を判断するだけでは不十分である。実際にそれら２つ以上の連携元テーブルに対して結合（例えば、ＪＯＩＮ）操作を実施できることが必要である。結合される連携元テーブルは、それぞれ結合操作のための共通カラム（即ち、結合キー）を持つ必要がある。【０００４】
データ連携関係の定義は、一般的に、人間が各システムのデータベースのテーブル定義書に記述されたテーブル定義情報等を参照して作成する。その作業は、データベース技術と業務内容を理解した高度な技術者が労働集約的に実施する必要があった。【０００５】
データ連携関係を自動抽出する技術として、データベースのテーブルのレコード（即ち、実データ）を利用する技術が存在する（例えば、特許文献１参照）。【０００６】
特許文献１では、連携元テーブルと連携先テーブルの全て又はサンプリングしたレコードのデータを取り込む。データの内容を解析し、対応関係を推測しながら、連携元テーブルのレコードから連携先テーブルのレコードを作成する。ただし、テーブル定義情報の利用は限定的である。【０００７】
類似するカラムの対応関係を自動抽出する技術として、いわゆるスキーママッチング技術が存在する（例えば、非特許文献１参照）。【０００８】
スキーママッチング技術では、例えば、２つのテーブル、あるいは、それぞれテーブルの集合体である２つのスキーマの構造に関するテーブル定義情報を入力として受け取る。テーブルのカラムの名称及びデータ型、テーブル間の関係等から、カラムの類似度を判断する。これにより、異なるテーブルのカラム間の対応関係を抽出する。【０００９】
スキーママッチング技術では、主にテーブル定義情報を利用する。レコード（即ち、実データ）を利用する場合もあるが、利用は限定的である。一般的に、レコードから年月日のデータが「ＹＹＭＭＤＤ」なのか「ＹＹＹＹ／ＭＭ／ＤＤ」なのかというようなカラムのフォーマット情報を抽出し、メタデータとして利用する。ここで、「Ｙ」は年の１桁数値、「Ｍ」は月の１桁数値、「Ｄ」は日の１桁数値である。例えば、２０１３年４月１日は「ＹＹＹＹ／ＭＭ／ＤＤ」のフォーマットで表すと「２０１３／０４／０１」となる。【００１０】
スキーママッチング技術では、類似度の判断基準としてカラムの名称が最もよく利用されてきた。システム間ではカラムの命名規則が異なることが多いため、スキーママッチング技術は、システム間のデータ連携関係を自動抽出する処理には向かないと考えられてきた。しかし、命名規則の差異を吸収するためのデータ項目辞書の整備により、命名規則が異なるシステム間で類似するカラムの抽出が可能となっている。データ項目辞書の整備は、以前は人手で行われていたが、近年は辞書の自動生成技術が発展してきている。そのため、データ連携関係の自動抽出のような分野でも、スキーママッチング技術の利用が可能になってきている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第８０８２２４３号明細書
【非特許文献】
【００１２】
【非特許文献１】Ｒｏｎａｌｄ  Ｆａｇｉｎ，  Ｌａｕｒａ  Ｍ．  Ｈａａｓ，  Ｍａｕｒｉｃｉｏ  Ｈｅｒｎａｎｄｅｚ，  Ｒｅｎｅｅ  Ｊ．  Ｍｉｌｌｅｒ，  Ｌｕｃｉａｎ  Ｐｏｐａ，  ａｎｄ  Ｙａｎｎｉｓ  Ｖｅｌｅｇｒａｋｉｓ，  “Ｃｌｉｏ：  Ｓｃｈｅｍａ  Ｍａｐｐｉｎｇ  Ｃｒｅａｔｉｏｎ  ａｎｄ  Ｄａｔａ  Ｅｘｃｈａｎｇｅ”，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  Ｖｏｌｕｍｅ  ５６００，  ２００９
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献１では、連携元テーブルと連携先テーブルのレコードを利用してデータ連携関係を自動抽出する。データ連携関係の抽出精度を高めるためには、全てのレコードを利用することが必要である。その場合、大量のレコードに対する処理が必要となる。そのような処理を大規模なシステムに対して実行した場合、処理時間が実用的な時間に収まらない可能性が高い。必然的に処理の対象とするシステムを絞り込まざるを得ない。その結果、自動抽出されるデータ連携関係は局所的な解となり、全体的な視点で見直した場合、不要なデータ連携が発見されることになる。【００１４】
利用するレコードの数を減らすためにサンプリング技術を活用することも可能である。しかし、テーブル間の参照関係を考慮しながらサンプリングを行うことは困難である。サンプリングの結果、本来は参照関係のあるテーブルが、参照関係のないように見えてしまう可能性がある。【００１５】
以上のように、特許文献１のようなレコードの利用が必須となる技術は、レコードの量によって適用できるシステムの範囲が制限されるという課題がある。【００１６】
また、特許文献１のような技術では、事前にレコードの準備が必須であるという課題がある。例えば、連携先テーブルが新規に作成するテーブルであるとすると、利用できるレコードが存在しないため、データ連携関係を自動抽出できない。【００１７】
非特許文献１のようなスキーママッチング技術では、レコードの準備は必須ではない。テーブル定義情報のようなメタデータのみから、類似するカラムの対応関係を抽出できる。そのため、レコードを利用する技術と比較すると、扱うデータ量が少なくて済むという利点がある。大規模なシステム全体を処理の対象とすることができる。【００１８】
しかし、スキーママッチング技術は、類似するカラムを見つけ出す技術である。そのため、データ連携関係のみではなく、テーブル間の参照整合性制約及び意味的な参照関係も区別なしに抽出してしまうという課題がある。特に、データベース内に同義のカラムが多数存在する場合、スキーママッチング技術の観点からは正しい対応関係であっても、データ連携関係ではない対応関係が多数検出されてしまう。【００１９】
また、スキーママッチング技術では、データ連携を行うために連携元テーブルから連携先テーブルのレイアウトをテーブル操作によって作成する必要がある点について考慮されていないという課題がある。【００２０】
本発明は、例えば、データ連携において、連携先となるテーブルのカラムに格納するデータを、どのテーブルのカラムから抽出すればよいかを、効率よく、的確に判断することを目的とする。
【課題を解決するための手段】
【００２１】
本発明の一の態様に係るデータ連携支援装置は、
複数のテーブルを有するデータベースのデータ連携を支援する装置であり、
前記複数のテーブルのそれぞれに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す主キー情報と、前記複数のテーブルのそれぞれに含まれる複数のカラムのそれぞれに格納されるデータの属性を示す属性情報と、前記複数のテーブル間の参照関係を示す参照関係情報とを記憶する情報記憶部と、
前記複数のテーブルから、主キーになっている２つ以上のカラムを含みデータ連携の連携先となる１つのテーブルを選択するテーブル選択部と、
前記情報記憶部に記憶された主キー情報に基づき、前記テーブル選択部により選択されたテーブルに含まれる複数のカラムから、前記２つ以上のカラムを特定するカラム特定部と、
前記情報記憶部に記憶された主キー情報と属性情報と参照関係情報とに基づき、前記複数のテーブルのうち前記テーブル選択部により選択されたテーブル以外のテーブルから、参照関係によって結ばれた２つ以上のテーブルの組み合わせであって、前記カラム特定部により特定されたカラムと対応するカラムが当該２つ以上のテーブルに分かれて各テーブルの主キーとして存在する組み合わせを抽出するテーブル抽出部と、
前記テーブル抽出部により抽出された組み合わせに含まれるテーブルを結合して１つのテーブルを作成するテーブル結合部と、
前記テーブル選択部により選択されたテーブルと前記テーブル結合部により作成されたテーブルとのスキーママッチングを行い、スキーママッチングの結果に基づき、前記テーブル抽出部により抽出された組み合わせを、前記テーブル選択部により選択されたテーブルのデータ連携に利用することを推奨するかどうか判断する推奨判断部とを備える。
【発明の効果】
【００２２】
本発明の一の態様によれば、データ連携支援装置が、データ連携において、連携先となるテーブルのカラムに格納するデータを、どのテーブルのカラムから抽出すればよいかを、効率よく、的確に判断することができる。
【図面の簡単な説明】
【００２３】
【図１】実施の形態１に係るデータ連携支援装置の構成を示すブロック図。
【図２】実施の形態１に係る入力情報の例を示す表。
【図３】実施の形態１に係る入力情報と参照関係情報とが合成された情報の例を示す表。
【図４】実施の形態１に係るデータ連携支援装置の動作の例を示すフローチャート。
【図５】実施の形態１に係る連携元情報と参照関係情報とが合成された情報と、暫定仮想テーブル情報との例を示す表。
【図６】実施の形態１に係る連携元情報と参照関係情報とが合成された情報の別の例を示す表。
【図７】実施の形態１に係る連携元情報と参照関係情報とが合成された情報と、暫定仮想テーブル情報との別の例を示す表。
【図８】実施の形態１に係るデータ連携支援装置の動作の例を示すフローチャート。
【図９】実施の形態１に係る仮想テーブルと目標テーブルとのスキーママッチングを示す概念図。
【図１０】実施の形態１に係るデータ連携支援装置の動作の例を示すフローチャート。
【図１１】実施の形態１に係る連携元テーブルと目標テーブルとのスキーママッチングを示す概念図。
【図１２】実施の形態１に係る連携元テーブルと仮想テーブルとのスキーママッチングを示す概念図。
【図１３】実施の形態１に係るデータ連携支援装置のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態について、図を用いて説明する。
【００２５】
実施の形態１．
図１は、本実施の形態に係るデータ連携支援装置１００の構成を示すブロック図である。
【００２６】
図１において、データ連携支援装置１００は、複数のテーブルを有するデータベースのデータ連携を支援する装置である。データ連携支援装置１００により支援されるデータ連携は、データベースの異なるインスタンス間のデータ連携であってもよいし、同じインスタンスの異なるスキーマ間のデータ連携であってもよいし、同じスキーマの異なるテーブル間のデータ連携であってもよい。
【００２７】
データ連携支援装置１００は、情報記憶部１０１、テーブル選択部１０２、カラム特定部１０３、テーブル抽出部１０４、テーブル結合部１０５、推奨判断部１０６を備える。
【００２８】
図１には示していないが、データ連携支援装置１００は、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアはデータ連携支援装置１００の各部によって利用される。例えば、処理装置は、データ連携支援装置１００の各部でデータ又は情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、そのデータ又は情報を記憶するために利用される。入力装置は、そのデータ又は情報を入力するために利用される。出力装置は、そのデータ又は情報を出力するために利用される。
【００２９】
情報記憶部１０１は、連携元情報１１１、連携先情報１１２、参照関係情報１１３、入力情報１１４を、記憶装置を利用して記憶する。
【００３０】
連携元情報１１１は、データ連携の連携元となるデータベース（即ち、連携元データベース）の複数のテーブル（即ち、連携元テーブル）を定義する情報である。連携元情報１１１には、連携元データベースの主キー情報及び属性情報が含まれる。連携元データベースの主キー情報とは、複数の連携元テーブルのそれぞれに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す情報である。連携元データベースの属性情報とは、複数の連携元テーブルのそれぞれに含まれる複数のカラムのそれぞれに格納されるデータの属性（例えば、カラム名、データ型）を示す情報である。
【００３１】
連携先情報１１２は、データ連携の連携先となるデータベース（即ち、連携先データベース）の複数のテーブル（即ち、連携先テーブル）を、前述したデータ連携関係が既に与えられた範囲内で定義する情報である。１つの連携先テーブルの各カラムに格納するデータを、どのテーブル（即ち、連携元テーブル、他の連携先テーブル、あるいは、これらのテーブルの組み合わせ）のカラムから抽出すればよいかが既に決まっている場合、その連携先テーブルは、データ連携関係が既に与えられた連携先テーブルとなる。連携先情報１１２には、連携先データベースの主キー情報及び属性情報のうち、データ連携関係が既に与えられた連携先テーブルの主キー情報及び属性情報が含まれる。連携先データベースの主キー情報とは、複数の連携先テーブルのそれぞれに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す情報である。連携先データベースの属性情報とは、複数の連携先テーブルのそれぞれに含まれる複数のカラムのそれぞれに格納されるデータの属性（例えば、カラム名、データ型）を示す情報である。
【００３２】
参照関係情報１１３は、テーブル間の参照関係を示す情報である。本実施の形態では、テーブル間の参照整合性制約だけでなく、意味的な参照関係も「参照関係」とみなすものとする。２つのテーブルのうち一方のテーブルに含まれるカラムが他方のテーブルに含まれるカラムに対応しており、当該一方のテーブルのカラムが外部キーに設定されている場合、参照整合性制約があることになる。２つのテーブルのうち一方のテーブルに含まれるカラムが他方のテーブルに含まれるカラムに対応しているが、当該一方のテーブルのカラムが外部キーに設定されていない場合、意味的な参照関係があることになる。参照関係情報１１３は、任意の方法で作成することができる。
【００３３】
入力情報１１４は、クライアント装置２００（例えば、パーソナルコンピュータ）のユーザにより手動で作成されるか、あるいは、クライアント装置２００で実行されるクライアントプログラムにより自動的に作成される。入力情報１１４は、クライアント装置２００から入力装置を介して入力される。入力情報１１４は、データ連携関係が未だ与えられていない連携先テーブル（即ち、目標テーブル）を定義する情報である。入力情報１１４には、目標テーブルの主キー情報及び属性情報が含まれる。
【００３４】
テーブル選択部１０２は、情報記憶部１０１に記憶された入力情報１１４を読み取る。テーブル選択部１０２は、読み取った入力情報１１４により定義された目標テーブルを選択する。本実施の形態では、目標テーブルに含まれる複数のカラムのうち、２つ以上のカラムが主キーになっているものとする。よって、テーブル選択部１０２は、連携元データベース及び連携先データベースの複数のテーブルから、主キーになっている２つ以上のカラムを含みデータ連携の連携先となる１つのテーブルを選択することになる。
【００３５】
カラム特定部１０３は、テーブル選択部１０２により読み取られた入力情報１１４に含まれる主キー情報に基づき、テーブル選択部１０２により選択された目標テーブルに含まれる複数のカラムから、主キーになっているカラム（即ち、前述した２つ以上のカラム）を特定する。
【００３６】
テーブル抽出部１０４は、情報記憶部１０１に記憶された連携元情報１１１と連携先情報１１２と参照関係情報１１３とを読み取る。テーブル抽出部１０４は、読み取った連携元情報１１１及び連携先情報１１２に含まれる主キー情報及び属性情報と、読み取った参照関係情報１１３とに基づき、連携元データベース及び連携先データベースの複数のテーブルのうちテーブル選択部１０２により選択された目標テーブル以外のテーブルから、以下の（１）及び（２）の条件を満たす２つ以上のテーブルの組み合わせを抽出する。
（１）当該２つ以上のテーブルが参照関係によって結ばれている。例えば、３つのテーブルのうち１つ目のテーブルが２つ目のテーブルを参照し、当該２つ目のテーブルが３つ目のテーブルを参照しているとき、当該３つのテーブルは参照関係によって結ばれていることになる。
（２）カラム特定部１０３により特定されたカラムと対応するカラムが当該２つ以上のテーブルに分かれて各テーブルの主キーとして存在する。例えば、２つのカラムがカラム特定部１０３により特定され、２つのテーブルの一方に、当該２つのカラムの一方と類似するカラムが主キーとして存在し、当該２つのテーブルの他方に、当該２つのカラムの他方と類似するカラムが主キーとして存在しているとき、当該２つのカラムと対応するカラムが当該２つのテーブルに分かれて各テーブルの主キーとして存在していることになる。
【００３７】
テーブル結合部１０５は、テーブル抽出部１０４により抽出された組み合わせに含まれるテーブルを結合して１つのテーブル（即ち、仮想テーブル）を作成する。
【００３８】
推奨判断部１０６は、テーブル選択部１０２により選択された目標テーブルとテーブル結合部１０５により作成された仮想テーブルとのスキーママッチングを行う。推奨判断部１０６は、そのスキーママッチングの結果に基づき、テーブル抽出部１０４により抽出された組み合わせを、テーブル選択部１０２により選択された目標テーブルのデータ連携に利用することを推奨すべきかどうか判断する。「推奨すべき」場合、推奨判断部１０６は、テーブル抽出部１０４により抽出された組み合わせを、テーブル選択部１０２により選択された目標テーブルのデータ連携に利用することを推奨する推奨情報１６１を、出力装置を介してクライアント装置２００へ出力する。「推奨すべきでない」場合、推奨判断部１０６は、テーブル選択部１０２により選択された目標テーブルのデータ連携に利用できるテーブルがない旨、あるいは、テーブル抽出部１０４により抽出された組み合わせを、テーブル選択部１０２により選択された目標テーブルのデータ連携に利用することを推奨しない旨を示す情報を、出力装置を介してクライアント装置２００へ出力する。
【００３９】
本実施の形態において、テーブル抽出部１０４により２つ以上の組み合わせが抽出された場合、テーブル結合部１０５は、テーブル抽出部１０４により抽出された組み合わせごとに、組み合わせに含まれるテーブルを結合して仮想テーブルを作成する。推奨判断部１０６は、テーブル抽出部１０４により抽出された組み合わせごとに、テーブル選択部１０２により選択された目標テーブルとテーブル結合部１０５により作成された仮想テーブルとのスキーママッチングを行う。推奨判断部１０６は、そのスキーママッチングの結果に基づき、テーブル抽出部１０４により抽出された組み合わせのうち１つの組み合わせを、テーブル選択部１０２により選択された目標テーブルのデータ連携に利用することを推奨する推奨情報１６１を出力する。
【００４０】
本実施の形態において、推奨判断部１０６は、テーブル抽出部１０４により抽出された組み合わせを、テーブル選択部１０２により選択された目標テーブルのデータ連携に利用することを推奨する場合、テーブル選択部１０２により選択された目標テーブルに含まれる複数のカラムから、テーブル結合部１０５により作成された仮想テーブルに、対応するカラムが存在しないカラムを抽出する。推奨判断部１０６は、そのようなカラムを抽出した場合、連携元データベース及び連携先データベースの複数のテーブルのうちテーブル選択部１０２により選択された目標テーブル以外のテーブルから、抽出したカラムと対応するカラムを含み、テーブル結合部１０５により作成された仮想テーブルに結合可能なテーブルを検出する。具体的には、推奨判断部１０６は、情報記憶部１０１に記憶された連携元情報１１１と連携先情報１１２とを読み取る。推奨判断部１０６は、読み取った連携元情報１１１及び連携先情報１１２に含まれる主キー情報及び属性情報に基づき、連携元データベース及び連携先データベースの複数のテーブルのうちテーブル選択部１０２により選択された目標テーブル以外のテーブルから、抽出したカラムと対応するカラムを含むテーブルを検出する。推奨判断部１０６は、そのようなテーブルを検出した場合、検出したテーブルとテーブル結合部１０５により作成された仮想テーブルとが結合できるかどうか判断する。「結合できる」場合、推奨判断部１０６は、検出したテーブルを、テーブル抽出部１０４により抽出された組み合わせに追加した上で、推奨情報１６１を出力する。「結合できない」場合、推奨判断部１０６は、検出したテーブルを無視して、推奨情報１６１を出力する。即ち、推奨判断部１０６は、抽出したカラムと対応するカラムを含み、テーブル結合部１０５により作成された仮想テーブルに結合可能なテーブルを検出した場合、検出したテーブルとテーブル抽出部１０４により抽出されたテーブルとの組み合わせを、テーブル選択部１０２により選択された目標テーブルのデータ連携に利用することを推奨する推奨情報１６１を出力する。
【００４１】
本実施の形態において、推奨判断部１０６のスキーママッチングを行う部分には、従来のスキーママッチング技術を実装することができる。
【００４２】
前述したように、本実施の形態では、入力情報１１４により定義された目標テーブルに含まれる複数のカラムのうち、２つ以上のカラムが主キーになっている。目標テーブルに含まれる複数のカラムのうち、１つのカラムのみが主キーになっている場合、その目標テーブルについては、任意の方法を用いてデータ連携関係を抽出することができる。
【００４３】
以下では、データ連携支援装置１００の動作（即ち、本実施の形態に係るデータ連携支援方法）の例を説明する。
【００４４】
図２は、入力情報１１４の例を示す表である。
【００４５】
図２において、入力情報１１４には、カラム名、データ型、主／外部キーの情報（即ち、属性情報及び主キー情報）が含まれる。前述したように、入力情報１１４は、目標テーブルを定義する情報である。例えば、入力情報１１４では、目標テーブルの「会社コード」、「注文詳細ＩＤ」、「注文ＩＤ」カラムが主キーであることが示されている。
【００４６】
図２に示した入力情報１１４がクライアント装置２００によって入力され、情報記憶部１０１に記憶されると、テーブル選択部１０２は、その入力情報１１４を読み取る。テーブル選択部１０２は、読み取った入力情報１１４により定義された目標テーブルを選択する。
【００４７】
図３は、入力情報１１４と参照関係情報１１３とが合成された情報の例を示す表である。
【００４８】
図３において、入力情報１１４に含まれる主／外部キーの情報は、目標テーブルの参照関係情報１１３でもある。前述したように、参照関係情報１１３は、テーブル間の参照関係を示す情報である。例えば、参照関係情報１１３では、目標テーブルの主キーである「会社コード」、「注文詳細ＩＤ」、「注文ＩＤ」カラムが外部キーでもあることが示されている。参照関係情報１１３では、「店舗ＩＤ」、「商品コード」、「ブランドＩＤ」カラムも外部キーであることが示されている。
【００４９】
図３で黒塗りされている項目は、外部キーの参照先のテーブルに、対応するカラムが存在するカラムである。例えば、「店舗ＩＤ」カラムの参照先のテーブルには、「店舗名」、「店舗住所」、「店長＿社員ＩＤ」、「店長名」カラムに対応するカラムが存在する。
【００５０】
参照関係情報１１３は、前述したように、任意の方法で作成することができる。例えば、カラム特定部１０３に、参照関係情報１１３を作成する機能を実装することができる。その場合、カラム特定部１０３は、図２に示した入力情報１１４に基づき、テーブル選択部１０２により選択された目標テーブルに含まれる複数のカラムのそれぞれについて、他のテーブルのカラムを参照できるかどうか判断する。例えば、カラム特定部１０３は、目標テーブルと他のテーブルとのスキーママッチングを行う。スキーママッチングの結果、「店舗ＩＤ」カラムと対応するカラムを主キーとして含み、かつ、「店舗名」、「店舗住所」、「店長＿社員ＩＤ」、「店長名」カラムと対応するカラムを非主キーとして含むテーブルが抽出されると、カラム特定部１０３は、「店舗ＩＤ」、「店舗名」、「店舗住所」、「店長＿社員ＩＤ」、「店長名」カラムについて、参照関係情報１１３を作成又は更新する。参照関係情報１１３では、「店舗ＩＤ」カラムが外部キーに設定される。参照関係情報１１３では、「店舗名」、「店舗住所」、「店長＿社員ＩＤ」、「店長名」カラムが「店舗ＩＤ」カラムに紐付けられる。
【００５１】
図４は、データ連携支援装置１００の動作の例を示すフローチャートである。図５は、連携元情報１１１と参照関係情報１１３とが合成された情報と、後述する暫定仮想テーブル情報３０１との例を示す表である。
【００５２】
ステップＳ１１において、カラム特定部１０３は、入力情報１１４に含まれる主／外部キーの情報（即ち、目標テーブルの主キー情報）を参照する。カラム特定部１０３は、参照した情報に基づき、テーブル選択部１０２により選択された目標テーブルの主キーになっているカラムを特定する。カラム特定部１０３は、特定したカラムの一覧を示すキー項目情報３０２を生成する。
【００５３】
例えば、カラム特定部１０３は、図３に示した入力情報１１４に含まれる主／外部キーの情報から、図５に示すようなキー項目情報３０２を生成する。キー項目情報３０２では、目標テーブルの「会社コード」、「注文詳細ＩＤ」、「注文ＩＤ」カラムが主キーであることが示されている。
【００５４】
ステップＳ１２において、テーブル抽出部１０４は、情報記憶部１０１から連携元情報１１１と連携先情報１１２と参照関係情報１１３とを取得する。また、テーブル抽出部１０４は、カラム特定部１０３からキー項目情報３０２を取得する。
【００５５】
例えば、テーブル抽出部１０４は、図５に示すような連携元情報１１１と参照関係情報１１３とが合成された情報を取得する。連携元情報１１１は、図３に示した入力情報１１４と同様の形式で、各連携元テーブルを定義する情報である。参照関係情報１１３は、図３に示した参照関係情報１１３と同様の形式で、テーブル間の参照関係を示す情報である。注文テーブルの連携元情報１１１では、注文テーブルの「注文ＩＤ」カラムが主キーであることが示されている。注文テーブルの参照関係情報１１３では、注文テーブルの「会社コード」カラムが外部キーであることが示されている。注文テーブルの参照関係情報１１３には、注文テーブルの「会社コード」カラムが会社テーブルの「会社コード」カラムを参照することを示す参照関係レコード３０３が含まれている。会社テーブルの連携元情報１１１では、会社テーブルの「会社コード」カラムが主キーであることが示されている。会社テーブルの参照関係情報１１３では、会社テーブルに外部キーがないことが示されている。注文詳細テーブルの連携元情報１１１では、注文詳細テーブルの「注文詳細ＩＤ」、「注文ＩＤ」カラムが主キーであることが示されている。注文詳細テーブルの参照関係情報１１３では、注文詳細テーブルの「注文ＩＤ」、「店舗ＩＤ」カラムが外部キーであることが示されている。注文詳細テーブルの参照関係情報１１３には、注文詳細テーブルの「注文ＩＤ」カラムが注文テーブルの「注文ＩＤ」カラムを参照することを示す参照関係レコード３０４が含まれている。
【００５６】
ステップＳ１３において、テーブル抽出部１０４は、ステップＳ１２で取得した連携元情報１１１と連携先情報１１２とキー項目情報３０２とを参照して、目標テーブルの主キーになっているカラムの全て又は一部と対応するカラムが含まれるテーブルを選択する。テーブル抽出部１０４は、選択したテーブルを現時点の仮想テーブルとみなす。
【００５７】
例えば、テーブル抽出部１０４は、キー項目情報３０２で示されている「注文ＩＤ」カラムと、注文テーブルの連携元情報１１１で示されている「注文ＩＤ」カラムとが類似すると判定し、注文テーブルを選択する。テーブル抽出部１０４は、注文テーブルを現時点の仮想テーブルとみなす。この例では、注文テーブルは、連携元テーブルの１つであるが、目標テーブルとは異なる連携先テーブルの１つであってもよい。
【００５８】
ステップＳ１４において、テーブル抽出部１０４は、ステップＳ１２で取得した連携元情報１１１と連携先情報１１２とキー項目情報３０２とを参照して、目標テーブルの主キーになっているカラムのうち、現時点の仮想テーブルに含まれていないカラムがあるかどうか判定する。テーブル抽出部１０４は、現時点の仮想テーブルに含まれていないカラムがあれば、ステップＳ１５に進む。テーブル抽出部１０４は、目標テーブルの主キーになっているカラムの全てが現時点の仮想テーブルに含まれていれば、ステップＳ１７に進む。
【００５９】
例えば、テーブル抽出部１０４は、キー項目情報３０２で示されている「会社コード」、「注文詳細ＩＤ」カラムが現時点の仮想テーブルに含まれていないと判定する。
【００６０】
ステップＳ１５において、テーブル抽出部１０４は、ステップＳ１２で取得した連携元情報１１１と連携先情報１１２と参照関係情報１１３とキー項目情報３０２とを参照して、ステップＳ１３で選択したテーブルと直接あるいは間接的に（即ち、他の選択済のテーブルを介して）参照関係によって結ばれており、かつ、現時点の仮想テーブルに含まれていないカラムと対応するカラムが含まれるテーブルがあるかどうか判定する。テーブル抽出部１０４は、そのようなテーブルがあれば、そのテーブルを選択し、ステップＳ１６に進む。テーブル抽出部１０４は、そのようなテーブルがなければ、現時点の仮想テーブルをキャンセルして、ステップＳ１８に進む。
【００６１】
例えば、テーブル抽出部１０４は、参照関係レコード３０３で注文テーブルの参照先として示されている会社テーブルの連携元情報１１１を参照する。テーブル抽出部１０４は、キー項目情報３０２で示されている「会社コード」カラムと、会社テーブルの連携元情報１１１で示されている「会社コード」カラムとが類似すると判定し、会社テーブルを選択する。この例では、会社テーブルは、連携元テーブルの１つであるが、目標テーブルとは異なる連携先テーブルの１つであってもよい。
【００６２】
ステップＳ１６において、テーブル結合部１０５は、現時点の仮想テーブルとステップＳ１５で選択されたテーブルとを結合して１つのテーブルを作成する。テーブル結合部１０５は、作成したテーブルを現時点の仮想テーブルとみなし（即ち、現時点の仮想テーブルを更新し）、ステップＳ１４に戻る。
【００６３】
例えば、テーブル結合部１０５は、注文テーブルである現時点の仮想テーブルと会社テーブルとを結合して、新たに現時点の仮想テーブルを作成する。その後のステップＳ１４において、テーブル抽出部１０４は、キー項目情報３０２で示されている「注文詳細ＩＤ」カラムが現時点の仮想テーブルに含まれていないと判定する。ステップＳ１５において、テーブル抽出部１０４は、参照関係レコード３０４で注文テーブルの参照元として示されている注文詳細テーブルの連携元情報１１１を参照する。テーブル抽出部１０４は、キー項目情報３０２で示されている「注文詳細ＩＤ」カラムと、注文詳細テーブルの連携元情報１１１で示されている「注文詳細ＩＤ」カラムとが類似すると判定し、注文詳細テーブルを選択する。ステップＳ１６において、テーブル結合部１０５は、注文テーブルと会社テーブルとを結合して得られた現時点の仮想テーブルと注文詳細テーブルとを結合して、新たに現時点の仮想テーブルを作成する。さらに、その後のステップＳ１４において、テーブル抽出部１０４は、キー項目情報３０２で示されているカラムの全てが現時点の仮想テーブルに含まれていると判定し、ステップＳ１７に進む。
【００６４】
ステップＳ１７において、テーブル結合部１０５は、暫定仮想テーブル情報３０１を作成する。暫定仮想テーブル情報３０１は、現時点の仮想テーブルを定義する情報である。暫定仮想テーブル情報３０１には、仮想テーブルの主キー情報と属性情報と参照関係情報が含まれる。仮想テーブルの主キー情報とは、仮想テーブルに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す情報である。仮想テーブルの主キー情報は、目標テーブルの主キー情報と一致していなければならない。仮想テーブルの属性情報とは、仮想テーブルに含まれる複数のカラムのそれぞれに格納されるデータの属性（例えば、カラム名、データ型）を示す情報である。仮想テーブルの参照関係情報とは、仮想テーブルと他のテーブルとの間の参照関係を示す情報である。
【００６５】
例えば、テーブル結合部１０５は、図５に示すような暫定仮想テーブル情報３０１を作成する。暫定仮想テーブル情報３０１は、図５に示した連携元情報１１１と参照関係情報１１３とが合成された情報と同様の形式で、仮想テーブルを定義する情報である。暫定仮想テーブル情報３０１では、仮想テーブルの「会社コード」、「注文詳細ＩＤ」、「注文ＩＤ」カラムが主キーであることが示されている。暫定仮想テーブル情報３０１では、仮想テーブルの「注文ＩＤ」カラムが外部キーであることが示されている。
【００６６】
ステップＳ１８において、テーブル抽出部１０４は、ステップＳ１３で選択したテーブルを含むテーブルの組み合わせの全てについて、ステップＳ１４〜Ｓ１７の処理が完了したかどうか判定する。テーブル抽出部１０４は、処理が完了していれば、ステップＳ１９に進む。テーブル抽出部１０４は、処理が完了していなければ、ステップＳ１３で選択したテーブルを新たに現時点の仮想テーブルとみなし、ステップＳ１４に戻る。テーブル結合部１０５は、ステップＳ１７の処理が実行される度に、新たに（即ち、仮想テーブルごとに）暫定仮想テーブル情報３０１を作成する。
【００６７】
ステップＳ１９において、テーブル抽出部１０４は、ステップＳ１３で他に選択可能なテーブルがあるかどうか判定する。テーブル抽出部１０４は、そのようなテーブルがあれば、ステップＳ１３に戻る。テーブル抽出部１０４は、そのようなテーブルがなければ、処理を終了する。
【００６８】
以下では、スコープという概念について説明する。
【００６９】
図５の例では、結合されるテーブル群が同一データベース（即ち、同一インスタンス）の同一スキーマに属することを想定している。しかし、通常、データ連携は複数のシステム間で行われる。そのため、異なるスキーマ間の参照関係、あるいは、異なるデータベース間の参照関係も考慮する必要がある。
【００７０】
図６は、連携元情報１１１と参照関係情報１１３とが合成された情報の別の例を示す表である。
【００７１】
図６の例では、図５の例と同様のテーブルが複数のスキーマ、あるいは、複数のデータベースに分かれて存在している。ＤＢ−１というデータベースのスキーマＡには、図５の例と同様の注文テーブル及び注文詳細テーブルが存在する。同じデータベースのスキーマＢには、図５の例と同様の会社テーブルが存在する。ＤＢ−２という別のデータベースのスキーマ１には、別の会社テーブルが存在する。
【００７２】
注文テーブルの参照関係情報１１３には、注文テーブルの「会社コード」カラムがＤＢ−１のスキーマＢに属する会社テーブルの「会社コード」カラムを参照することを示す参照関係レコード３０３が含まれている。注文テーブルの参照関係情報１１３には、さらに、注文テーブルの「会社コード」カラムがＤＢ−２のスキーマ１に属する会社テーブルの「会社コード」カラムを参照することを示す参照関係レコード３０５が含まれている。
【００７３】
参照関係レコード３０３，３０４，３０５には、スコープに関する情報が含まれている。ステップＳ１５において、テーブル抽出部１０４は、この情報に基づいて、テーブルを抽出する。即ち、テーブル抽出部１０４は、選択済のテーブルとの参照関係を有するテーブルを、そのテーブルが選択済のテーブルと同一スキーマ内に存在するのか、同一データベース内に存在するのか、異なるデータベースに属するのかを区別しながら、抽出する。
【００７４】
図７は、連携元情報１１１と参照関係情報１１３とが合成された情報と、暫定仮想テーブル情報３０１との別の例を示す表である。
【００７５】
ステップＳ１５において、テーブル抽出部１０４は、参照関係レコード３０５で注文テーブルの参照先として示されている別のデータベースに属する会社テーブルの連携元情報１１１を参照することができる。テーブル抽出部１０４は、キー項目情報３０２で示されている「会社コード」カラムと、ＤＢ−２のスキーマ１に属する会社テーブルの連携元情報１１１で示されている「会社コード」カラムとが類似すると判定し、この会社テーブルを選択する。
【００７６】
ステップＳ１７において、テーブル結合部１０５は、図５に示した暫定仮想テーブル情報３０１とは別に、図７に示すような暫定仮想テーブル情報３０１を作成することができる。図７の例における仮想テーブルは、図５の例における仮想テーブルと比べて、「ブランドＩＤ」カラムが追加されている。図３に示した入力情報１１４では、目標テーブルに「ブランドＩＤ」カラムが含まれることが示されている。よって、図７の例における仮想テーブルは、図５の例における仮想テーブルと比べて、目標テーブルに対応するカラム数が多いという点で優っている。
【００７７】
ステップＳ１５では、スコープ（例えば、同一データベース内、同一スキーマ内）が指定されてもよい。その場合、テーブル抽出部１０４は、指定されたスコープ内でテーブルを抽出する。
【００７８】
図４の動作により、目標テーブルと主キーのカラムが類似する複数の仮想テーブルが作成された場合、これら複数の仮想テーブルの中で、目標テーブルとなるべく多くの非主キーのカラムが類似する仮想テーブルがデータ連携に適している。そのような仮想テーブルを検出するために、スキーママッチング技術を利用することができる。
【００７９】
図８は、図４の動作の後におけるデータ連携支援装置１００の動作の例を示すフローチャートである。図９は、仮想テーブルと目標テーブルとのスキーママッチングを示す概念図である。
【００８０】
ステップＳ２１において、推奨判断部１０６は、情報記憶部１０１から入力情報１１４と、ステップＳ１７で作成された暫定仮想テーブル情報３０１とを取得する。
【００８１】
例えば、推奨判断部１０６は、図９に示すように、図３に示した情報（即ち、入力情報１１４と参照関係情報１１３とが合成された情報）と、図７に示した暫定仮想テーブル情報３０１とを取得する。
【００８２】
ステップＳ２２において、推奨判断部１０６は、ステップＳ２１で取得した入力情報１１４により定義された目標テーブルと、ステップＳ２１で取得した暫定仮想テーブル情報３０１により定義された仮想テーブルとのスキーママッチングを行う。目標テーブルと仮想テーブルとの間で主キーは可能な限り一致している。そのため、非主キーのカラムの類似性が確認される。カラムの類似性を判断するために、既存のスキーママッチング技術が活用できる。
【００８３】
例えば、推奨判断部１０６は、図３に示した情報により定義された目標テーブルと、図７に示した暫定仮想テーブル情報３０１により定義された仮想テーブルとのスキーママッチングを行う。前述したように、図３で黒塗りされている項目は、他のテーブルを参照すれば取得できるカラムである。よって、これらのカラムについてのスキーママッチングの結果は無視される。あるいは、これらのカラムについてはスキーママッチングが省略される。
【００８４】
ステップＳ２３において、推奨判断部１０６は、ステップＳ２２で行ったスキーママッチングの結果（即ち、マッチングスコア）を集計し、仮想テーブルのいずれのカラムが、目標テーブルの非主キーのカラムと類似するか判断する。
【００８５】
例えば、推奨判断部１０６は、スキーママッチングの結果に基づき、仮想テーブルの「顧客コード」、「店舗ＩＤ」、「ブランドＩＤ」カラムが、それぞれ目標テーブルの同名のカラムと類似すると判断する。
【００８６】
図４の動作により複数の仮想テーブルが作成されている場合は、ステップＳ２１〜Ｓ２３の処理が仮想テーブルごとに実行される。
【００８７】
図１０は、図８の動作の後におけるデータ連携支援装置１００の動作の例を示すフローチャートである。図１１は、連携元テーブルと目標テーブルとのスキーママッチングを示す概念図である。図１２は、連携元テーブルと仮想テーブルとのスキーママッチングを示す概念図である。
【００８８】
ステップＳ３１において、推奨判断部１０６は、情報記憶部１０１から連携元情報１１１と連携先情報１１２と参照関係情報１１３とを取得する。
【００８９】
例えば、推奨判断部１０６は、図１１に示すような連携元情報１１１と参照関係情報１１３とが合成された情報を取得する。注文テーブルの連携元情報１１１では、社員テーブルの「社員ＩＤ」カラムが主キーであることが示されている。社員テーブルの参照関係情報１１３では、社員テーブルに外部キーがないことが示されている。ディスカウントテーブルの連携元情報１１１では、ディスカウントテーブルの「注文詳細ＩＤ」、「注文ＩＤ」カラムが主キーであることが示されている。ディスカウントテーブルの参照関係情報１１３では、ディスカウントテーブルの「注文ＩＤ」、「店舗ＩＤ」、「商品コード」カラムが外部キーであることが示されている。
【００９０】
ステップＳ３２において、推奨判断部１０６は、ステップＳ２１で取得した入力情報１１４により定義された目標テーブルに含まれる複数のカラムから、ステップＳ２１で取得した暫定仮想テーブル情報３０１により定義された仮想テーブルに、対応するカラムが存在しないカラムを抽出する。即ち、推奨判断部１０６は、目標テーブルの非主キーのカラムのうち、ステップＳ２３で仮想テーブルのカラムと類似すると判断したカラム以外のカラムを抽出する。
【００９１】
図１１で黒塗りされている項目は、主キーになっているカラムと、外部キーの参照先のテーブルと仮想テーブルとのいずれかに、対応するカラムが存在するカラムである。
【００９２】
ステップＳ３３において、推奨判断部１０６は、ステップＳ３２で抽出したカラムと、ステップＳ３１で取得した情報により定義された連携元テーブル及び連携先テーブルとのスキーママッチングを行う。
【００９３】
例えば、推奨判断部１０６は、図３に示した情報により定義された目標テーブルと、図１１に示した情報により定義された社員テーブル及びディスカウントテーブルとのスキーママッチングを行う。前述したように、図１１で黒塗りされている項目は、主キーのカラム、あるいは、他のテーブルを参照すれば取得できるカラムである。よって、これらのカラムについてのスキーママッチングの結果は無視される。あるいは、これらのカラムについてはスキーママッチングが省略される。
【００９４】
ステップＳ３４において、推奨判断部１０６は、ステップＳ３３で行ったスキーママッチングの結果（即ち、マッチングスコア）を集計し、いずれかの連携元テーブル又はいずれかの連携先テーブルのいずれのカラムが、目標テーブルの残りのカラムと類似するか判断する。
【００９５】
例えば、推奨判断部１０６は、スキーママッチングの結果に基づき、社員テーブルの「社員名」カラムが、目標テーブルの「担当営業」カラムと類似すると判断する。推奨判断部１０６は、ディスカウントテーブルの「ディスカウント」、「商品コード」カラムが、目標テーブルの同名のカラムと類似すると判断する。
【００９６】
ステップＳ３５において、推奨判断部１０６は、ステップＳ３４で目標テーブルの残りのカラムと類似すると判断したカラムを含む連携元テーブル又は連携先テーブルと、ステップＳ２１で取得した暫定仮想テーブル情報３０１により定義された仮想テーブルとのスキーママッチングを行う。
【００９７】
例えば、推奨判断部１０６は、図１２に示すように、図１１に示した情報により定義された社員テーブル及びディスカウントテーブルと、図９に示した暫定仮想テーブル情報３０１により定義された仮想テーブルとのスキーママッチングを行う。
【００９８】
ステップＳ３６において、推奨判断部１０６は、ステップＳ３５で行ったスキーママッチングの結果（即ち、マッチングスコア）を集計し、ステップＳ３４で目標テーブルの残りのカラムと類似すると判断したカラムを含む連携元テーブル又は連携先テーブルと、ステップＳ２１で取得した暫定仮想テーブル情報３０１により定義された仮想テーブルとが結合できるかどうか判断する。推奨判断部１０６は、両テーブルが結合できる場合、ステップＳ３７に進む。推奨判断部１０６は、両テーブルが結合できない場合、ステップＳ２１で取得した暫定仮想テーブル情報３０１により定義された仮想テーブルを最終的な仮想テーブルとみなし、ステップＳ３８に進む。ただし、推奨判断部１０６は、最終的な仮想テーブルから、対応するカラムが目標テーブルにないカラムを除外する。
【００９９】
ステップＳ３７において、推奨判断部１０６は、ステップＳ３４で目標テーブルの残りのカラムと類似すると判断したカラムを含む連携元テーブル又は連携先テーブルと、ステップＳ２１で取得した暫定仮想テーブル情報３０１により定義された仮想テーブルとを結合して１つのテーブルを作成する。推奨判断部１０６は、作成したテーブルを最終的な仮想テーブルとみなし、ステップＳ３８に進む。ただし、推奨判断部１０６は、最終的な仮想テーブルから、対応するカラムが目標テーブルにないカラムを除外する。
【０１００】
例えば、推奨判断部１０６は、図１２に示した暫定仮想テーブル情報３０１により定義された仮想テーブルと、図１２に示した情報により定義された社員テーブル及びディスカウントテーブルとを結合して、最終的な仮想テーブルを作成する。
【０１０１】
ステップＳ３８において、推奨判断部１０６は、最終的な仮想テーブルの基になったテーブルの組み合わせを、目標テーブルのデータ連携に利用することを推奨する推奨情報１６１を、出力装置を介してクライアント装置２００へ出力する。
【０１０２】
図４の動作により複数の仮想テーブルが作成されている場合は、ステップＳ３１〜Ｓ３７の処理が仮想テーブルごとに実行される。ステップＳ３８において、推奨判断部１０６は、仮想テーブルごとに、目標テーブルと最終的な仮想テーブルとのスキーママッチングを行う。推奨判断部１０６は、そのスキーママッチングのスコアが最も高い（又はそのスキーママッチングのスコアが上位ｎ番目（ｎ＞１）までの）最終的な仮想テーブルを選択する。推奨判断部１０６は、選択した最終的な仮想テーブルの基になったテーブルの組み合わせを、目標テーブルのデータ連携に利用することを推奨する推奨情報１６１を、出力装置を介してクライアント装置２００へ出力する。
【０１０３】
目標テーブルの一部のカラムと対応するカラムが最終的な仮想テーブルに含まれないことがある。即ち、目標テーブルが既存のテーブルのみを利用したデータ連携では実現できないことがある。そのような場合、仮想テーブルと連携元テーブルを結合するための情報を関連テーブルとして手動で作成することが考えられる。この場合、どのような関連テーブルを作成すればよいか調査する必要があるが、推奨情報１６１をクライアント装置２００へ提供することにより、調査量の削減に寄与することができる。
【０１０４】
本実施の形態では、データ連携関係の自動推奨にあたってレコードデータが必須ではなく、テーブル定義情報等のメタデータのみあればよい。そのため、データ連携関係を探索するシステムの範囲を広く設定できる。その結果として、システム全体を考慮したデータ連携関係の全体最適解を見つけ出すことが可能となる。つまり、本実施の形態によれば、データ連携において、連携先となるテーブルのカラムに格納するデータを、どのテーブルのカラムから抽出すればよいかを、効率よく、的確に判断することができる。
【０１０５】
本実施の形態では、システム全体という広いスコープでデータ連携関係を探索することができるため、検出漏れを最小限にできるという効果が得られる。
【０１０６】
データ連携関係の自動推奨では、探索スコープが狭くなると、本来連携元とすべきテーブルが排除される可能性がある。本来連携元とすべきテーブルのコピーあるいは変形を連携元として誤検出してしまう可能性がある。そのような誤検出があると、定義したデータ連携関係において、本来連携元とすべきテーブルからそのコピーあるいは変形を作成する別のデータ連携処理との依存関係が生じてしまう。本実施の形態によれば、そのように本来必要のないデータ連携関係が定義されてしまう事態（即ち、部分最適解）を回避することができる
【０１０７】
本実施の形態では、データ連携関係の自動推奨という目的に固有の要件である、連携先テーブルのレコードレイアウトを連携元テーブル群から結合操作等により再現できるという要件に対応するために、仮想テーブルを作成して、仮想テーブルと連携先テーブルに対してスキーママッチング技術を適用する。このため、データ連携に使用できない対応関係は自動的に出力から省かれる。本実施の形態では、通常のスキーママッチング技術で大量に発生するデータ連携関係の候補の中からデータ連携に使用できるカラム間の対応関係のみを抽出して提供する。このため、自動推奨結果が人間により確認される際に、人間の作業量が大幅に削減される。
【０１０８】
さらに、本実施の形態では、スコープを広げるだけではなく、データベーススキーマ内、データベース内、データベース外のように複数のスコープを明示的に分けて、それぞれについて仮想テーブルを作成する。このため、データ連携関係の候補をスコープ別に確認することが可能である。例えば、データベーススキーマ内では取得することができないデータ項目についてデータベース外までスコープを広げると取得できることが確認できる。よって、データベース外とのデータ連携コストとデータベーススキーマ内のデータ連携コストとを比較しながら、状況に応じたデータ連携関係を定義することが可能となる。
【０１０９】
図１３は、本実施の形態に係るデータ連携支援装置１００のハードウェア構成の一例を示す図である。
【０１１０】
図１３において、データ連携支援装置１００は、コンピュータであり、ＬＣＤ９０１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ９０６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ９０１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス９０３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【０１１１】
データ連携支援装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、処理装置の一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ９０６、ＨＤＤ９２０（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
【０１１２】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５は、入力装置の一例である。また、通信ボード９１５、ＬＣＤ９０１、プリンタ９０６は、出力装置の一例である。
【０１１３】
通信ボード９１５は、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信ボード９１５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【０１１４】
ＨＤＤ９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本発明の実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ９１１により読み出され実行される。ファイル群９２４には、本発明の実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶される。ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【０１１５】
本発明の実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ９１４等のメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、ＨＤＤ９２０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス９１２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【０１１６】
本発明の実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本発明の実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本発明の実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【０１１７】
以上、本発明の実施の形態について説明したが、本発明は、この実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１１８】
１００  データ連携支援装置、１０１  情報記憶部、１０２  テーブル選択部、１０３  カラム特定部、１０４  テーブル抽出部、１０５  テーブル結合部、１０６  推奨判断部、１１１  連携元情報、１１２  連携先情報、１１３  参照関係情報、１１４  入力情報、１６１  推奨情報、２００  クライアント装置、３０１  暫定仮想テーブル情報、３０２  キー項目情報、３０３，３０４，３０５  参照関係レコード、９０１  ＬＣＤ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  ＨＤＤ、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
0006017055.tif 000002
【図２】
0006017055.tif 000003
【図３】
0006017055.tif 000004
【図４】
0006017055.tif 000005
【図５】
0006017055.tif 000006
【図６】
0006017055.tif 000007
【図７】
0006017055.tif 000008
【図８】
0006017055.tif 000009
【図９】
0006017055.tif 000010
【図１０】
0006017055.tif 000011
【図１１】
0006017055.tif 000012
【図１２】
0006017055.tif 000013
【図１３】
0006017055.tif 000014