(57)【要約】【課題】データベースの分析において、外部キーを推定する方法を提供する。【解決手段】外部キー推定装置１０は、各テーブルのカラム名に基づいて、カラム結合パターンを特定する。また、外部キー推定装置１０は、各カラム結合パターンに含まれるいずれか一方のカラムについて、他方のカラムが主キーであること、一方のカラムが、そのテーブル内で唯一の主キーではないこと、および、一方のカラムに記録された実データが、すべて他方のカラムに記録された実データに含まれていること、を必要条件として、一方のカラムは他方のカラムを参照する外部キーであると推定する。【選択図】図５
2014186488.tif 000002
【特許請求の範囲】
【請求項１】
複数のテーブルを含むデータベースにおいて外部キーを推定する方法であって、
コンピュータが、各テーブルについて１つ以上のカラム名を取得するステップと、
コンピュータが、各テーブルの各カラムに記録された実データを取得するステップと、
コンピュータが、前記カラム名に基づき、２つのカラムからなる対をカラム結合パターンとして特定する、カラム結合パターン特定ステップと、
各カラムが外部キーであるか否かをコンピュータが推定する、外部キー推定ステップと
を備え、
前記外部キー推定ステップにおいて、各カラム結合パターンに含まれるいずれか一方のカラムについて、
‐他方のカラムが主キーであること、
‐前記一方のカラムが、そのテーブル内で唯一の主キーではないこと、および
‐前記一方のカラムに記録された実データが、すべて前記他方のカラムに記録された実データに含まれていること
を必要条件として、一方のカラムは前記他方のカラムを参照する外部キーであると推定する、データベースにおいて外部キーを推定する方法。
【請求項２】
前記カラム結合パターン特定ステップは、
前記テーブルのいずれかを参照するプログラムのソースコードにおいて、第１のテーブルの第１のカラムに記録された第１の実データと、第２のテーブルの第２のカラムに記録された第２の実データとの一致判定を行う一致判定命令を、コンピュータが前記カラム名に基づき抽出するステップと、
抽出された各一致判定命令について、前記第１のカラム及び前記第２のカラムからなる対を、コンピュータがカラム結合パターンとして特定するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記カラム結合パターン特定ステップは、異なるテーブルにおいて同一のカラム名を有する２つのカラムからなる対を、カラム結合パターンとして特定するステップを含む、請求項１または２に記載の方法。
【請求項４】
前記方法は、主キー推定ステップをさらに備え、
前記主キー推定ステップにおいて、各カラムについて、
‐そのカラムの実データが未定義値を含まないこと、および
‐そのカラムの実データが、カラム内で重複していないこと
を必要条件として、コンピュータがそのカラムを主キーであると推定する、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記コンピュータは、少なくとも１つのカラムを含む除外リストを記憶し、
前記外部キー推定ステップにおいて、いずれのカラムも前記除外リストに含まれていないことをさらに必要条件とする、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
各テーブルを含むＥＲ図をコンピュータが作成するステップをさらに備え、
前記ＥＲ図は、
各テーブルを表すエンティティと、
外部キーであるカラムのそれぞれについて、関連する２つのテーブルを関連付ける関連線と
を含む、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
請求項１〜６のいずれか一項に記載の方法を実行するコンピュータを含む、データベースの外部キー推定装置。
【請求項８】
コンピュータに、請求項１〜６のいずれか一項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースにおいて外部キーを推定する方法、装置およびプログラムに関する。
【背景技術】
【０００２】
最近のＩＴ動向調査によると、新規にシステムを開発する企業や業務は減少傾向にあり、既存システムの移行案件の割合が増えている。現行システムの移行案件では、システムの機能を理解するために、一般的に現行分析から始めるが、「メンテナンスされている設計書がない」「当時の設計者は既にいない」「システム利用者はシステムの機能を説明できない、または十分なヒアリングの時間がとれない」という制約があるのが現状である。この場合、プログラムのソースコードやデータベースのオブジェクトを分析することによって必要な設計情報を得る「リバースエンジニアリング技術」が重要になってくる。
【０００３】
データベースの設計や分析において、カラム名やデータ型を規定するテーブル定義情報や、あるカラムが主キー（Primary Key、ＰＫ）または外部キー（Foreign Key、ＦＫ）であるか否かを表す情報が重要となる。特許文献１には、データベースの設計段階において、カラム間の関係を任意に指定すると、その指定に応じて外部キーを設定する方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００８−５２４６７１号公報
【０００５】
また、データベースの分析において、既存のデータベースオブジェクトを参照し、テーブル定義情報等を取得する技術も知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、データベースオブジェクトが外部キーを表す情報を含んでいない場合に、外部キーを特定することができないという問題があった。外部キーが分からないとＥＲ図として表現できないため、分析者はテーブル間の関係を把握できず、システムを理解することも困難になる。
【０００７】
なお、カラム名等に基づいて人為的に外部キーを推定するのは現実的に不可能な場合があり、システムまたは装置を用いる方法が必須となる。たとえば、テーブル数が７００、カラム数が２万〜３万となるケースがあり、このようなケースにおいて人手で外部キーの推定作業を行うと作業量が膨大となり、また推定基準のばらつき等により推定精度も低下するおそれがある。
【０００８】
この発明は、このような問題点を解決するためになされたものであり、データベースにおいてコンピュータが外部キーを推定する方法、装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の問題点を解決するため、この発明に係る、データベースにおいて外部キーを推定する方法は、
複数のテーブルを含むデータベースにおいて外部キーを推定する方法であって、
コンピュータが、各テーブルについて１つ以上のカラム名を取得するステップと、
コンピュータが、各テーブルの各カラムに記録された実データを取得するステップと、
コンピュータが、前記カラム名に基づき、２つのカラムからなる対をカラム結合パターンとして特定する、カラム結合パターン特定ステップと、
各カラムが外部キーであるか否かをコンピュータが推定する、外部キー推定ステップと
を備え、
前記外部キー推定ステップにおいて、各カラム結合パターンに含まれるいずれか一方のカラムについて、
‐他方のカラムが主キーであること、
‐前記一方のカラムが、そのテーブル内で唯一の主キーではないこと、および
‐前記一方のカラムに記録された実データが、すべて前記他方のカラムに記録された実データに含まれていること
を必要条件として、一方のカラムは前記他方のカラムを参照する外部キーであると推定する。
【００１０】
前記カラム結合パターン特定ステップは、
前記テーブルのいずれかを参照するプログラムのソースコードにおいて、第１のテーブルの第１のカラムに記録された第１の実データと、第２のテーブルの第２のカラムに記録された第２の実データとの一致判定を行う一致判定命令を、コンピュータが前記カラム名に基づき抽出するステップと、
抽出された各一致判定命令について、前記第１のカラム及び前記第２のカラムからなる対を、コンピュータがカラム結合パターンとして特定するステップと、
を含んでもよい。
前記カラム結合パターン特定ステップは、異なるテーブルにおいて同一のカラム名を有する２つのカラムからなる対を、カラム結合パターンとして特定するステップを含んでもよい。
前記方法は、主キー推定ステップをさらに備え、
前記主キー推定ステップにおいて、各カラムについて、
‐そのカラムの実データが未定義値を含まないこと、および
‐そのカラムの実データが、カラム内で重複していないこと
を必要条件として、コンピュータがそのカラムを主キーであると推定してもよい。
前記コンピュータは、少なくとも１つのカラムを含む除外リストを記憶し、
前記外部キー推定ステップにおいて、いずれのカラムも前記除外リストに含まれていないことをさらに必要条件としてもよい。
各テーブルを含むＥＲ図をコンピュータが作成するステップをさらに備え、
前記ＥＲ図は、
各テーブルを表すエンティティと、
外部キーであるカラムのそれぞれについて、関連する２つのテーブルを関連付ける関連線と
を含んでもよい。
【００１１】
また、この発明に係る、データベースの外部キー推定装置は、上述の方法を実行するコンピュータを含む。
【００１２】
また、この発明に係るプログラムは、コンピュータに上述の方法を実行させる。
【発明の効果】
【００１３】
この発明に係るデータベースにおいて外部キーを推定する方法、装置およびプログラムによれば、データベースの実データと、データベースのカラム名とに基づき、当該データベースの外部キーを推定することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態１に係る外部キー推定装置の構成の例を示す図である。
【図２】テーブル定義情報の構成の例を示す図である。
【図３】実データの構成の例を示す図である。
【図４】ソースコードの構成の例を示す図である。
【図５】外部キー推定装置の処理の流れを表すフローチャートである。
【図６】主キー情報の例を示す図である。
【図７】実施の形態１におけるカラム結合リストの構成の例を示す図である。
【図８】除外リストの構成の例を示す図である。
【図９】実施の形態１における外部キー情報の例を示す図である。
【図１０】実施の形態１において、ＥＲ図情報によって表されるＥＲ図の例である。
【図１１】実施の形態２に係る外部キー推定装置の処理の流れを表すフローチャートである。
【図１２】実施の形態２におけるカラム結合リストの構成の例を示す図である。
【図１３】実施の形態２における外部キー情報の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態１．
図１に、本発明の実施の形態１に係る外部キー推定装置１０の構成を示す。外部キー推定装置１０は、レコードおよびカラムによって構成されるテーブルを複数含むデータベースに関するデータを入力とし、そのデータベースにおいて各カラムが外部キーであるか否かを推定する装置として機能する。この機能は、本明細書に記載される方法を実行することにより実現される。外部キー推定装置１０は周知のコンピュータとしての構成を含み、演算を行う演算手段２０と、情報を格納する記憶手段３０とを備える。演算手段２０はＣＰＵ（中央処理装置）を含み、記憶手段３０は半導体メモリおよびＨＤＤ（ハードディスクドライブ）等の記憶媒体を含む。
【００１６】
また、とくに図示しないが、外部キー推定装置１０は、入力手段および出力手段を備える。入力手段は、使用者が情報を入力するために用いる手段であり、たとえばマウスやキーボード等である。出力手段は、使用者に対して情報を出力する手段であり、たとえば液晶ディスプレイ等の表示装置であるが、プリンタ等の印刷装置であってもよい。
【００１７】
記憶手段３０は、テーブル定義情報３１、実データ３２、ソースコード３３、カラム結合リスト３４、除外リスト３５およびＥＲ図情報３６を格納する。また、記憶手段３０は、図示しない外部キー推定プログラムを格納しており、コンピュータ（とくに演算手段）は、この外部キー推定プログラムを実行することにより外部キー推定装置１０として機能する。
【００１８】
図２に、テーブル定義情報３１の構成の例を示す。図２には、１つのデータベースに含まれる４つのテーブルが示されている。本明細書では、各テーブルをテーブル名によって参照し、それぞれ「受注」テーブル、「受注明細」テーブル、「商品」テーブルおよび「ユーザ」テーブルと呼ぶ。テーブル定義情報３１は、各テーブルについて、テーブルを一意に識別するテーブル名と、そのテーブルのカラム定義情報とを含む。カラム定義情報は、図２の例では、カラム名と、データ型と、データ長と、制約とを含む。テーブル定義情報３１は、たとえばＤＤＬ（データ定義言語、Data Definition Language）を用いて表現可能である。なお、図２に示すように、カラム定義情報は各テーブルについて１つ以上のカラムを含むものである。
【００１９】
カラム名は、たとえばそのテーブルにおいてカラムを一意に識別する情報である。たとえば、「受注」テーブルは、「受注番号」カラム、「先方発注番号」カラム、「受注日」カラムおよび「更新者」カラムを含む。データ型およびデータ長は、そのカラムの実データの特性を規定する情報である。制約は、そのカラムの実データに対して課される制約条件を表す。図２の例では、一部のカラムの制約として「ｎｏｔ  ｎｕｌｌ」パラメータが指定されている。「ｎｏｔ  ｎｕｌｌ」パラメータは、そのカラムの実データはいずれもｎｕｌｌ値すなわち未定義値であってはならないという制約を表し、空白は、そのような制約が課されていないことを表す。この他の制約が指定されてもよく、たとえばそのカラムの実データがカラム内で重複してはならないという制約を表す「ｕｎｉｑｕｅ」パラメータが指定されてもよい。
【００２０】
図３に、実データ３２の構成の例を示す。なお図３には「受注」テーブルおよび「商品」テーブルの例のみ示している。実データ３２は、各テーブルのレコードごとに、各カラムに記録された値（すなわち各セルに記録された値）を表すデータを含む。
【００２１】
図４に、ソースコード３３の構成の一部の例を示す。ソースコード３３は、データベースに含まれるテーブルのいずれかを参照するプログラムのソースコードである。複数のソースコードが含まれてもよい。このようなプログラムの例としては、ビューやＤＡＯ(Data Access Objects)等のプログラムが挙げられる。図４には３つのＳＥＬＥＣＴ文が示されており、それぞれＷＨＥＲＥ節においてカラム結合条件（テーブル結合条件と呼ぶ場合もある）を指定している。
【００２２】
カラム結合条件は、第１のテーブルの第１のカラムに記録された第１の実データと、第２のテーブルの第２のカラムに記録された第２の実データとの一致判定を行う一致判定命令により表現されるということができる。図４において、最初に出現するＳＥＬＥＣＴ文を例として説明すると、「受注明細」テーブルの「商品Ｎｏ」カラムと、「商品」テーブルの「商品コード」カラムとを組み合わせた結合条件が指定されており、これらのカラムの実データの一致判定の結果に基づいてＳＥＬＥＣＴ文が実行されることになる。なお、ＳＥＬＥＣＴ文やＷＨＥＲＥ節に限らず、同等の一致判定を行う命令であればカラム結合条件を表現することが可能である。
【００２３】
カラム結合リスト３４、除外リスト３５およびＥＲ図情報３６については、外部キー推定装置１０の動作の説明に伴って後に説明する。
【００２４】
以上のように構成される外部キー推定装置１０の処理の流れを以下に説明する。
図５は、実施の形態１に係る外部キー推定装置１０の処理の流れを表すフローチャートである。なお説明の便宜上、各ステップの入出力についても破線を用いて一部図示してある。
【００２５】
まず、外部キー推定装置１０はテーブル定義情報３１を取得する（ステップＳ１）。この処理は、たとえば図示のようにデータベースオブジェクトを参照してテーブル定義情報３１を抽出してもよいし、または、テーブル定義情報３１に相当する情報を直接取得してもよい。なお、図２に示すように、取得されるテーブル定義情報３１は、各テーブルについて１つ以上のカラム名を含むものである。
【００２６】
次に、外部キー推定装置１０は、各テーブルの各カラムに記録された実データ３２を取得する（ステップＳ２）。
【００２７】
次に、外部キー推定装置１０は、取得した実データ３２に基づき、各カラムが主キーであるか否かを推定する（ステップＳ３、主キー推定ステップ）。ここで、外部キー推定装置１０は、各テーブルの各カラムについて、次の２条件を必要条件として、そのカラムが主キーであると推定する。
‐主キー条件１：そのカラムの実データが未定義値を含まない。
‐主キー条件２：そのカラムの実データが、カラム内で重複していない（すなわち、カラム内ですべて互いに異なっている）。
【００２８】
なお、本明細書において、「必要条件」および「十分条件」という用語は、数学または論理学の分野における通常の意味に解される。または、たとえば次のように解されてもよい。
「Ａ，ＢおよびＣを必要条件としてＸと推定する」という表現は、Ｘと推定されるためにはＡ，ＢおよびＣのすべてが満たされることが最低限要求されるが、さらに他の条件が追加で要求される可能性を否定しないということを意味する。すなわち、Ａ，ＢおよびＣがすべて満たされた場合には、他の条件に応じ、Ｘと推定される場合もあればＸでないと推定される場合もある。一方で、Ａ，ＢおよびＣのいずれかが満たされない場合には、他の条件に関わらず、Ｘではないと推定される。
「Ａを十分条件としてＸと推定する」という表現は、Ｘと推定されるためにはＡさえ満たされればよく、他の条件が追加で要求される可能性はないということを意味する。すなわち、Ａが満たされた場合には、他の条件に関わらず、必ずＸと推定される。一方で、Ａが満たされない場合には、他の条件に応じ、Ｘと推定される場合もあればＸでないと推定される場合もある。
当然ながら、ある推定処理に対して、ある条件（または複数の条件の組合せ）を、必要条件とすると同時に十分条件とすることも可能である。
【００２９】
主キー条件１は、たとえばテーブル定義情報３１において、そのカラムの制約に「ｎｏｔ  ｎｕｌｌ」パラメータが指定されているか否かに基づいて判定することができる。または、そのカラムの実データをすべて直接参照し、未定義値が含まれているか否かを確認して判定してもよい。
主キー条件２は、たとえばテーブル定義情報３１において、そのカラムの制約に「ｕｎｉｑｕｅ」パラメータが指定されているか否かに基づいて判定することができる。または、そのカラムの実データをすべて直接参照し、重複するデータが存在するか否かを確認して判定してもよい。
【００３０】
実施の形態１では、この推定において、上記の２条件が満たされることを十分条件とする。図３の例では、「受注」テーブルの「受注番号」カラムの実データと、「商品」テーブルの「商品コード」カラムの実データが、上記の２条件をいずれも満たすので、これらのカラムが主キーであると推定される。
【００３１】
なお、変形例として、上記の２条件以外に追加の必要条件を課してもよい。たとえば、次の各条件のいずれかまたは任意の組合せを追加の必要条件としてもよい。
‐そのカラムについてインデックスが存在している。
‐そのカラムのデータ型が、日付または日時を表すものではない。
‐そのカラムのカラム名が所定の条件を満たす。たとえば、主キーを表す可能性が高い所定の文字列を含む。どのような文字列が主キーを表す可能性が高いかは当業者が適宜決定可能であるが、たとえば、「コード」「ＩＤ」「連番」「Ｎｏ」「番号」等の文字列である。
【００３２】
このステップＳ３において、外部キー推定装置１０は、各カラムが主キーであると推定されたか否かを表す主キー情報を出力する。
図６に、主キー情報の例を示す。この例では、主キー情報は、テーブル定義情報３１において各カラムのカラム定義に追加されるフラグの形式で表されているが、他の形式で表されてもよく、たとえばテーブル定義情報３１とは独立したファイルとして記憶されてもよい。
【００３３】
次に実行されるステップＳ４〜Ｓ６が、実施の形態１におけるカラム結合パターン特定ステップを構成する。実施の形態１において、カラム結合パターン特定ステップは、ソースコード３３に基づいて、２つのカラムからなる対をカラム結合パターンとして特定するステップとして実施される。
【００３４】
ステップＳ３の後、外部キー推定装置１０は、ソースコード３３を取得する（ステップＳ４）。
次に、外部キー推定装置１０は、ソースコード３３から、カラムの一致判定命令を抽出する（ステップＳ５）。たとえば、テーブル定義情報３１に含まれるカラム名に基づき（またはテーブル名およびカラム名に基づき）、ソースコード３３において、第１のテーブルの第１のカラムに記録された第１の実データと、第２のテーブルの第２のカラムに記録された第２の実データとの一致判定を行う一致判定命令を抽出する。結果として、たとえば図４に示す３つのＳＥＬＥＣＴ文が特定される。
【００３５】
次に、外部キー推定装置１０は、抽出された一致判定命令のそれぞれについて、カラム結合パターンを特定して記憶する（ステップＳ６）。カラム結合パターンは、一致判定命令に含まれる２つのカラムからなる対として特定されるものであり、たとえばカラム結合リスト３４に記憶される。このようにして、実施の形態１におけるカラム結合パターン特定ステップが終了する。
図７に、実施の形態１におけるカラム結合リスト３４の構成の例を示す。この例では、図４の３つのＳＥＬＥＣＴ文に対応するカラム結合パターンが示されている。
【００３６】
次に、外部キー推定装置１０は、各カラム結合パターンについて、各カラムが外部キーであるか否かを推定する（ステップＳ７、外部キー推定ステップ）。たとえば、各カラム結合パターンについて、一方のカラム（以下「外部キー候補」と称する場合がある）に対し、次の４条件を必要条件として、その外部キー候補は他方のカラムを参照する外部キーであると推定する。
‐外部キー条件１：他方のカラムが主キーである。たとえば、図７に示す３つのカラム結合パターンのうち第１のものにおいて、「商品」テーブルの「商品コード」カラムは主キーであるので（図６参照）、「受注明細」テーブルの「商品Ｎｏ」カラムは外部キー候補として外部キー条件１を満たす。
‐外部キー条件２：外部キー候補であるカラムは、そのテーブル内で唯一の主キーではない。すなわち、そのテーブルは、主キーを含まないか、外部キー候補以外に主キーを含む。
‐外部キー条件３：外部キー候補であるカラムに記録された実データが、他方のカラムに記録された実データと整合している。すなわち、外部キー候補であるカラムに記録された実データが、すべて他方のカラムに記録された実データに含まれている。
‐外部キー条件４：いずれのカラムも、除外リスト３５に含まれていない。
【００３７】
図８に、除外リスト３５の構成の例を示す。除外リスト３５は、たとえば使用者によって事前に準備される。除外リスト３５は、１つ以上のカラムについて、そのカラムを特定する情報（たとえばテーブル名とカラム名との組合せ）を含むものである。図８の例では、除外リスト３５に「ユーザ」テーブルの「更新者」カラムが含まれている。
【００３８】
この推定において、上記の４条件が満たされることを十分条件としてもよく、また、これら以外に追加の必要条件を課してもよい。追加の必要条件としては、たとえば、「外部キー候補であるカラムのデータ型およびデータ長と、他方のカラムのデータ型およびデータ長とがいずれも一致している」という条件を用いることができる。
【００３９】
このように、ステップＳ７においてソースコード３３の情報を用いるので、対となるカラムのカラム名がテーブル間で一致していない場合や、カラム名に共通する文字列が一切含まれない場合であっても、カラム結合パターンを抽出することが可能である。また、逆に、カラム名が一致していても、実データが整合していない場合には、外部キーでないと正しく推定することが可能である。
【００４０】
このステップＳ７において、外部キー推定装置１０は、各カラムが外部キーであると推定されたか否かを表す外部キー情報を出力する。
図９に、実施の形態１における外部キー情報の例を示す。この例では、外部キー情報は、テーブル定義情報３１において各カラムのカラム定義に追加されるフラグの形式で表されている。
【００４１】
「受注明細」テーブルの「受注番号」カラムについて、カラム結合パターンにおける他方のカラム（「受注」テーブルの「受注番号」カラム）は主キーであり、外部キー条件１を満たす。また、「受注明細」テーブルには２つの主キーが含まれており、外部キー条件２を満たす。また、ここでは、「受注明細」テーブルの「受注番号」カラムに記録された実データが、他方のカラム（「受注」テーブルの「受注番号」カラム）の実データと整合しており、外部キー条件３を満たすと仮定する。また、ここでは、「受注明細」テーブルの「受注番号」カラムが除外リスト３５に含まれておらず、外部キー条件４を満たすと仮定する。この場合、このカラムは図９に示すように外部キーであると推定されることになる。
【００４２】
また、「受注明細」テーブルの「商品Ｎｏ」カラムについて、カラム結合パターンにおける他方のカラム（「商品」テーブルの「商品コード」カラム）は主キーであり、外部キー条件１を満たす。また、「受注明細」テーブルには２つの主キーが含まれており、外部キー条件２を満たす。また、ここでは、「受注明細」テーブルの「商品Ｎｏ」カラムに記録された実データが、他方のカラム（「商品」テーブルの「商品コード」カラム）の実データと整合しており、外部キー条件３を満たすと仮定する。また、ここでは、「受注明細」テーブルの「商品Ｎｏ」カラムが除外リスト３５に含まれておらず、外部キー条件４を満たすと仮定する。この場合、このカラムは図９に示すように外部キーであると推定されることになる。
【００４３】
なお、厳密に言えば、図９に示される情報は外部キー情報の一部のみであり、カラム間の関係を十分に特定するためには、図９に示される情報に加え、カラム結合リスト３４（図７）等を参照して各外部キーが参照しているカラムを特定する必要がある。
外部キー情報は、他の形式で表されてもよく、たとえばテーブル定義情報３１とは独立したファイルとして記憶されてもよい。
【００４４】
次に、外部キー推定装置１０は、ＥＲ図を作成する（ステップＳ８）。この処理は、たとえばＥＲ図情報３６を出力することによって行われる。ＥＲ図情報３６は、図１のように記憶手段３０に出力され記憶されてもよいし、図示しない表示装置または印刷装置等に出力されてもよい。
【００４５】
図１０に、ＥＲ図情報３６によって表されるＥＲ図の例を示す。図１０の例では、ＥＲ図は、各テーブルを表すエンティティ３６ａと、各テーブルに含まれるカラムのカラム名と、各カラムが主キーであるか否かを示す表示と、各カラムが外部キーであるか否かを示す表示と、外部キーである各カラムについて関連する２つのテーブルを関連付ける関連線３６ｂおよび３６ｃとを含む。ここで、「関連するテーブル」とは、外部キーであるカラムを含むテーブルと、その外部キーが参照するカラムを含むテーブルとを意味する。
【００４６】
図１０の例では、「（主キー）」という表記があるカラムは主キーであり、この表記がないカラムは主キーではない。外部キーについても同様である。また、主キーであるカラムのグループと、主キーでないカラムのグループとを互いに分離して配置している（図１０の例では、水平線によって上下に分離されている）。
【００４７】
さらに、ＥＲ図は、関連線３６ｂおよび３６ｃについて、外部キーを含む側のテーブルを特定する表現を含む。この例では外部キー側の端点が大きく表現されている。また、外部キーを含む側のテーブルが、他方のテーブルに依存するか否かを示す表現を含む。ここで、「依存」とは、外部キーが主キーでもあることを意味し、一方、「非依存」とは、外部キーが主キーではないことを意味する。図１０の例では、「受注明細」テーブルの「受注番号」カラムは外部キーかつ主キーであるので、この外部キーに対応する関連線３６ｂは「依存」の関係を表すものとして実線で表現されている。一方、「受注明細」テーブルの「商品Ｎｏ」カラムは外部キーであるが主キーではないので、この外部キーに対応する関連線３６ｃは「非依存」の関係を表すものとして破線で表現されている。
【００４８】
以上説明するように、本発明の実施の形態１に係る外部キーを推定する方法、外部キー推定装置１０および外部キー推定プログラムによれば、データベースの実データ３２と、データベースを参照するプログラムのソースコード３３（とくにカラム名）とに基づき、当該データベースの外部キーを推定することができる。
【００４９】
なお、本発明は、人間が行っている業務を単にシステム化するものではない。外部キーの推定作業は、作業量が膨大となるケースがあり、そのようなケースでは人間が業務として行うのは現実的に不可能であるため、コンピュータによる実施が不可欠である。
【００５０】
実施の形態２．
実施の形態２は、実施の形態１において、カラム結合パターン特定ステップ（図５のステップＳ４〜Ｓ６）の構成を変更するものである。以下、実施の形態１との相違点を説明する。
図１１は、実施の形態２に係る外部キー推定装置の処理の流れを表すフローチャートである。なお説明の便宜上、各ステップの入出力についても一部図示してある。
【００５１】
ステップＳ３の後に実行されるステップＳ１４が、実施の形態２におけるカラム結合パターン特定ステップを構成する。ステップＳ１４において、外部キー推定装置は、各テーブルのカラム定義情報を参照し、異なるテーブルにおいて同一のカラム名を有する２つのカラムを抽出する。そして、抽出されたカラムからなる対を、カラム結合パターンとして特定する。
【００５２】
なお、３つ以上の異なるテーブルに渡って同一のカラム名を有するカラムが存在する場合には、すべての可能な対をカラム結合パターンとして特定する（すなわち、ｎ個のカラムに対してｎ・（ｎ−１）／２個のカラム結合パターンが特定されることになる）。ただし、変形例として、なんらかの基準を用いて特定すべきカラム結合パターンを絞り込んでもよい。
【００５３】
以下、実施の形態２において、図２に示すテーブル定義情報３１に基づいて外部キー推定を実行した場合の動作を説明する。
図１２に、実施の形態２において作成されるカラム結合リスト３４の構成の例を示す。図２のテーブル定義情報３１から、一致するカラム名の対がすべて抽出され特定されている。
【００５４】
また、図１３に、実施の形態２における外部キー情報の例を示す。「受注明細」テーブルの「受注番号」カラムについては、実施の形態１と同様に外部キーであると推定されているが、「受注明細」テーブルの「商品Ｎｏ」カラムについては、カラム結合リスト３４に含まれないため外部キーではないと推定されている。
【００５５】
このように、実施の形態２ではソースコード３３を参照しない。したがって、ソースコード３３の一部または全部が保存されていない等の原因で、ソースコード３３に基づくカラム結合リスト３４の作成が実行できないまたは実行困難である場合には、実施の形態２のようにカラム名に基づく方法のほうがより適切に外部キーを推定できる場合がある。
【００５６】
以上説明するように、本発明の実施の形態２に係る外部キーを推定する方法、外部キー推定装置１０および外部キー推定プログラムによれば、データベースの実データ３２と、各テーブルのカラム名とに基づき、当該データベースの外部キーを推定することができる。
【００５７】
上述の実施の形態１および２において、次のような変形を施すことができる。
実施の形態１および２では、カラム定義情報は、カラム名、データ型、データ長および制約からなるが、この他の情報を含んでもよい。たとえば、各カラムが主キーであるか否かを表す情報を含んでもよい。各カラムが主キーであるか否かを表す情報が含まれている場合には、主キー判定ステップを省略してもよい（すなわち、ステップＳ１において主キーに関する情報を取得し、ステップＳ３を省略してもよい）。
【００５８】
また、カラム定義情報は、データ型、データ長および制約のいずれかまたはすべてを含まないものであってもよい。原理的には、カラム名を含んでいれば本発明の最低限の実施には十分である。
【００５９】
除外リスト３５を用いない構成であってもよい。たとえば、記憶手段３０は除外リスト３５を記憶せず、ステップＳ７において外部キー条件４（いずれのカラムも、除外リスト３５に含まれていないこと）を用いない構成としてもよい。
【００６０】
ＥＲ図に関する処理は省略してもよい。すなわち、外部キーを推定した時点で処理を終了し、ステップＳ８については実行しない形態としてもよい。
また、ＥＲ図は、図１０に示すもの以外の情報を含んでもよく、図１０に示す情報の一部を含まないものであってもよい。少なくとも、各テーブルを表すエンティティと、外部キーであるカラムのそれぞれについて関連する２つのテーブルを関連付ける関連線とを含んでいれば、ＥＲ図に該当すると解釈できる。
【００６１】
実施の形態２において、カラム結合パターンの特定は、カラム名に基づいて行われるものであればよく、カラム名が厳密に一致していないものまで含むようにしてもよい。たとえば、異なる２つのテーブルのカラム名が、所定長の一致する文字列を含む場合には、それらの対をカラム結合パターンとして抽出してもよい。判定基準は当業者が適宜設計可能である。
【００６２】
実施の形態１および２を組み合わせてもよい。たとえば、実施の形態１のステップＳ４〜Ｓ６で特定されるカラム結合パターンと、実施の形態２のステップＳ１４で特定されるカラム結合パターンとを結合してもよい。すなわち、それぞれのカラム結合リストをＯＲ結合してもよい。この場合、図７および図１２の例では、合計で１２個のカラム結合パターンが特定され、カラム結合リスト３４に含まれることになる。
【００６３】
また、実施の形態１のステップＳ４〜Ｓ６においても、実施の形態２のステップＳ１４においてもカラム結合パターンとして特定される対のみを、カラム結合リスト３４に含めてもよい。すなわち、それぞれのカラム結合リストをＡＮＤ結合してもよい。この場合、図７および図１２の例では、図７の第２番目のもの（図１２では第１番目のもの）のみ、ただ１つのカラム結合パターンが特定され、カラム結合リスト３４に含まれることになる。
【００６４】
また、カラム結合リスト３４の作成において、ＯＲ結合を用いるか、ＡＮＤ結合を用いるかを指定可能であってもよい。たとえば、外部キー推定装置１０は、カラム結合リスト３４の作成方法に関する指定入力（ＯＲ結合を用いよという指定またはＡＮＤ結合を用いよという指定）を受け付け、これに応じて異なる条件でカラム結合リスト３４を作成してもよい。
【符号の説明】
【００６５】
１０  外部キー推定装置（コンピュータ）、２０  演算手段、３０  記憶手段、３１  テーブル定義情報、３２  実データ、３３  ソースコード、３４  カラム結合リスト（カラム結合パターン）、３５  除外リスト、３６ａ  エンティティ、３６ｂ，３６ｃ  関連線、
Ｓ３  主キー推定ステップ、Ｓ４〜Ｓ６，Ｓ１４  カラム結合パターン特定ステップ、Ｓ７  外部キー推定ステップ。
【図１】
2014186488.tif 000003
【図２】
2014186488.tif 000004
【図３】
2014186488.tif 000005
【図４】
2014186488.tif 000006
【図５】
2014186488.tif 000007
【図６】
2014186488.tif 000008
【図７】
2014186488.tif 000009
【図８】
2014186488.tif 000010
【図９】
2014186488.tif 000011
【図１０】
2014186488.tif 000012
【図１１】
2014186488.tif 000013
【図１２】
2014186488.tif 000014
【図１３】
2014186488.tif 000015