JP2014186488A - データベースにおいて外部キーを推定する方法、装置およびプログラム - Google Patents

データベースにおいて外部キーを推定する方法、装置およびプログラム Download PDF

Info

Publication number
JP2014186488A
JP2014186488A JP2013060275A JP2013060275A JP2014186488A JP 2014186488 A JP2014186488 A JP 2014186488A JP 2013060275 A JP2013060275 A JP 2013060275A JP 2013060275 A JP2013060275 A JP 2013060275A JP 2014186488 A JP2014186488 A JP 2014186488A
Authority
JP
Japan
Prior art keywords
column
foreign key
key
computer
actual data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013060275A
Other languages
English (en)
Other versions
JP5827260B2 (ja
Inventor
Masaki Komata
正樹 小俣
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.)
Mitsubishi Electric Information Systems Corp
Mitsubishi Electric Information Technology Corp
Original Assignee
Mitsubishi Electric Information Systems Corp
Mitsubishi Electric Information Technology 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 Mitsubishi Electric Information Systems Corp, Mitsubishi Electric Information Technology Corp filed Critical Mitsubishi Electric Information Systems Corp
Priority to JP2013060275A priority Critical patent/JP5827260B2/ja
Publication of JP2014186488A publication Critical patent/JP2014186488A/ja
Application granted granted Critical
Publication of JP5827260B2 publication Critical patent/JP5827260B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データベースの分析において、外部キーを推定する方法を提供する。
【解決手段】外部キー推定装置10は、各テーブルのカラム名に基づいて、カラム結合パターンを特定する。また、外部キー推定装置10は、各カラム結合パターンに含まれるいずれか一方のカラムについて、他方のカラムが主キーであること、一方のカラムが、そのテーブル内で唯一の主キーではないこと、および、一方のカラムに記録された実データが、すべて他方のカラムに記録された実データに含まれていること、を必要条件として、一方のカラムは他方のカラムを参照する外部キーであると推定する。
【選択図】図5

Description

本発明は、データベースにおいて外部キーを推定する方法、装置およびプログラムに関する。
最近のIT動向調査によると、新規にシステムを開発する企業や業務は減少傾向にあり、既存システムの移行案件の割合が増えている。現行システムの移行案件では、システムの機能を理解するために、一般的に現行分析から始めるが、「メンテナンスされている設計書がない」「当時の設計者は既にいない」「システム利用者はシステムの機能を説明できない、または十分なヒアリングの時間がとれない」という制約があるのが現状である。この場合、プログラムのソースコードやデータベースのオブジェクトを分析することによって必要な設計情報を得る「リバースエンジニアリング技術」が重要になってくる。
データベースの設計や分析において、カラム名やデータ型を規定するテーブル定義情報や、あるカラムが主キー(Primary Key、PK)または外部キー(Foreign Key、FK)であるか否かを表す情報が重要となる。特許文献1には、データベースの設計段階において、カラム間の関係を任意に指定すると、その指定に応じて外部キーを設定する方法が記載されている。
特表2008−524671号公報
また、データベースの分析において、既存のデータベースオブジェクトを参照し、テーブル定義情報等を取得する技術も知られている。
しかしながら、従来技術では、データベースオブジェクトが外部キーを表す情報を含んでいない場合に、外部キーを特定することができないという問題があった。外部キーが分からないとER図として表現できないため、分析者はテーブル間の関係を把握できず、システムを理解することも困難になる。
なお、カラム名等に基づいて人為的に外部キーを推定するのは現実的に不可能な場合があり、システムまたは装置を用いる方法が必須となる。たとえば、テーブル数が700、カラム数が2万〜3万となるケースがあり、このようなケースにおいて人手で外部キーの推定作業を行うと作業量が膨大となり、また推定基準のばらつき等により推定精度も低下するおそれがある。
この発明は、このような問題点を解決するためになされたものであり、データベースにおいてコンピュータが外部キーを推定する方法、装置およびプログラムを提供することを目的とする。
上述の問題点を解決するため、この発明に係る、データベースにおいて外部キーを推定する方法は、
複数のテーブルを含むデータベースにおいて外部キーを推定する方法であって、
コンピュータが、各テーブルについて1つ以上のカラム名を取得するステップと、
コンピュータが、各テーブルの各カラムに記録された実データを取得するステップと、
コンピュータが、前記カラム名に基づき、2つのカラムからなる対をカラム結合パターンとして特定する、カラム結合パターン特定ステップと、
各カラムが外部キーであるか否かをコンピュータが推定する、外部キー推定ステップと
を備え、
前記外部キー推定ステップにおいて、各カラム結合パターンに含まれるいずれか一方のカラムについて、
‐他方のカラムが主キーであること、
‐前記一方のカラムが、そのテーブル内で唯一の主キーではないこと、および
‐前記一方のカラムに記録された実データが、すべて前記他方のカラムに記録された実データに含まれていること
を必要条件として、一方のカラムは前記他方のカラムを参照する外部キーであると推定する。
前記カラム結合パターン特定ステップは、
前記テーブルのいずれかを参照するプログラムのソースコードにおいて、第1のテーブルの第1のカラムに記録された第1の実データと、第2のテーブルの第2のカラムに記録された第2の実データとの一致判定を行う一致判定命令を、コンピュータが前記カラム名に基づき抽出するステップと、
抽出された各一致判定命令について、前記第1のカラム及び前記第2のカラムからなる対を、コンピュータがカラム結合パターンとして特定するステップと、
を含んでもよい。
前記カラム結合パターン特定ステップは、異なるテーブルにおいて同一のカラム名を有する2つのカラムからなる対を、カラム結合パターンとして特定するステップを含んでもよい。
前記方法は、主キー推定ステップをさらに備え、
前記主キー推定ステップにおいて、各カラムについて、
‐そのカラムの実データが未定義値を含まないこと、および
‐そのカラムの実データが、カラム内で重複していないこと
を必要条件として、コンピュータがそのカラムを主キーであると推定してもよい。
前記コンピュータは、少なくとも1つのカラムを含む除外リストを記憶し、
前記外部キー推定ステップにおいて、いずれのカラムも前記除外リストに含まれていないことをさらに必要条件としてもよい。
各テーブルを含むER図をコンピュータが作成するステップをさらに備え、
前記ER図は、
各テーブルを表すエンティティと、
外部キーであるカラムのそれぞれについて、関連する2つのテーブルを関連付ける関連線と
を含んでもよい。
また、この発明に係る、データベースの外部キー推定装置は、上述の方法を実行するコンピュータを含む。
また、この発明に係るプログラムは、コンピュータに上述の方法を実行させる。
この発明に係るデータベースにおいて外部キーを推定する方法、装置およびプログラムによれば、データベースの実データと、データベースのカラム名とに基づき、当該データベースの外部キーを推定することができる。
本発明の実施の形態1に係る外部キー推定装置の構成の例を示す図である。 テーブル定義情報の構成の例を示す図である。 実データの構成の例を示す図である。 ソースコードの構成の例を示す図である。 外部キー推定装置の処理の流れを表すフローチャートである。 主キー情報の例を示す図である。 実施の形態1におけるカラム結合リストの構成の例を示す図である。 除外リストの構成の例を示す図である。 実施の形態1における外部キー情報の例を示す図である。 実施の形態1において、ER図情報によって表されるER図の例である。 実施の形態2に係る外部キー推定装置の処理の流れを表すフローチャートである。 実施の形態2におけるカラム結合リストの構成の例を示す図である。 実施の形態2における外部キー情報の例を示す図である。
以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態1.
図1に、本発明の実施の形態1に係る外部キー推定装置10の構成を示す。外部キー推定装置10は、レコードおよびカラムによって構成されるテーブルを複数含むデータベースに関するデータを入力とし、そのデータベースにおいて各カラムが外部キーであるか否かを推定する装置として機能する。この機能は、本明細書に記載される方法を実行することにより実現される。外部キー推定装置10は周知のコンピュータとしての構成を含み、演算を行う演算手段20と、情報を格納する記憶手段30とを備える。演算手段20はCPU(中央処理装置)を含み、記憶手段30は半導体メモリおよびHDD(ハードディスクドライブ)等の記憶媒体を含む。
また、とくに図示しないが、外部キー推定装置10は、入力手段および出力手段を備える。入力手段は、使用者が情報を入力するために用いる手段であり、たとえばマウスやキーボード等である。出力手段は、使用者に対して情報を出力する手段であり、たとえば液晶ディスプレイ等の表示装置であるが、プリンタ等の印刷装置であってもよい。
記憶手段30は、テーブル定義情報31、実データ32、ソースコード33、カラム結合リスト34、除外リスト35およびER図情報36を格納する。また、記憶手段30は、図示しない外部キー推定プログラムを格納しており、コンピュータ(とくに演算手段)は、この外部キー推定プログラムを実行することにより外部キー推定装置10として機能する。
図2に、テーブル定義情報31の構成の例を示す。図2には、1つのデータベースに含まれる4つのテーブルが示されている。本明細書では、各テーブルをテーブル名によって参照し、それぞれ「受注」テーブル、「受注明細」テーブル、「商品」テーブルおよび「ユーザ」テーブルと呼ぶ。テーブル定義情報31は、各テーブルについて、テーブルを一意に識別するテーブル名と、そのテーブルのカラム定義情報とを含む。カラム定義情報は、図2の例では、カラム名と、データ型と、データ長と、制約とを含む。テーブル定義情報31は、たとえばDDL(データ定義言語、Data Definition Language)を用いて表現可能である。なお、図2に示すように、カラム定義情報は各テーブルについて1つ以上のカラムを含むものである。
カラム名は、たとえばそのテーブルにおいてカラムを一意に識別する情報である。たとえば、「受注」テーブルは、「受注番号」カラム、「先方発注番号」カラム、「受注日」カラムおよび「更新者」カラムを含む。データ型およびデータ長は、そのカラムの実データの特性を規定する情報である。制約は、そのカラムの実データに対して課される制約条件を表す。図2の例では、一部のカラムの制約として「not null」パラメータが指定されている。「not null」パラメータは、そのカラムの実データはいずれもnull値すなわち未定義値であってはならないという制約を表し、空白は、そのような制約が課されていないことを表す。この他の制約が指定されてもよく、たとえばそのカラムの実データがカラム内で重複してはならないという制約を表す「unique」パラメータが指定されてもよい。
図3に、実データ32の構成の例を示す。なお図3には「受注」テーブルおよび「商品」テーブルの例のみ示している。実データ32は、各テーブルのレコードごとに、各カラムに記録された値(すなわち各セルに記録された値)を表すデータを含む。
図4に、ソースコード33の構成の一部の例を示す。ソースコード33は、データベースに含まれるテーブルのいずれかを参照するプログラムのソースコードである。複数のソースコードが含まれてもよい。このようなプログラムの例としては、ビューやDAO(Data Access Objects)等のプログラムが挙げられる。図4には3つのSELECT文が示されており、それぞれWHERE節においてカラム結合条件(テーブル結合条件と呼ぶ場合もある)を指定している。
カラム結合条件は、第1のテーブルの第1のカラムに記録された第1の実データと、第2のテーブルの第2のカラムに記録された第2の実データとの一致判定を行う一致判定命令により表現されるということができる。図4において、最初に出現するSELECT文を例として説明すると、「受注明細」テーブルの「商品No」カラムと、「商品」テーブルの「商品コード」カラムとを組み合わせた結合条件が指定されており、これらのカラムの実データの一致判定の結果に基づいてSELECT文が実行されることになる。なお、SELECT文やWHERE節に限らず、同等の一致判定を行う命令であればカラム結合条件を表現することが可能である。
カラム結合リスト34、除外リスト35およびER図情報36については、外部キー推定装置10の動作の説明に伴って後に説明する。
以上のように構成される外部キー推定装置10の処理の流れを以下に説明する。
図5は、実施の形態1に係る外部キー推定装置10の処理の流れを表すフローチャートである。なお説明の便宜上、各ステップの入出力についても破線を用いて一部図示してある。
まず、外部キー推定装置10はテーブル定義情報31を取得する(ステップS1)。この処理は、たとえば図示のようにデータベースオブジェクトを参照してテーブル定義情報31を抽出してもよいし、または、テーブル定義情報31に相当する情報を直接取得してもよい。なお、図2に示すように、取得されるテーブル定義情報31は、各テーブルについて1つ以上のカラム名を含むものである。
次に、外部キー推定装置10は、各テーブルの各カラムに記録された実データ32を取得する(ステップS2)。
次に、外部キー推定装置10は、取得した実データ32に基づき、各カラムが主キーであるか否かを推定する(ステップS3、主キー推定ステップ)。ここで、外部キー推定装置10は、各テーブルの各カラムについて、次の2条件を必要条件として、そのカラムが主キーであると推定する。
‐主キー条件1:そのカラムの実データが未定義値を含まない。
‐主キー条件2:そのカラムの実データが、カラム内で重複していない(すなわち、カラム内ですべて互いに異なっている)。
なお、本明細書において、「必要条件」および「十分条件」という用語は、数学または論理学の分野における通常の意味に解される。または、たとえば次のように解されてもよい。
「A,BおよびCを必要条件としてXと推定する」という表現は、Xと推定されるためにはA,BおよびCのすべてが満たされることが最低限要求されるが、さらに他の条件が追加で要求される可能性を否定しないということを意味する。すなわち、A,BおよびCがすべて満たされた場合には、他の条件に応じ、Xと推定される場合もあればXでないと推定される場合もある。一方で、A,BおよびCのいずれかが満たされない場合には、他の条件に関わらず、Xではないと推定される。
「Aを十分条件としてXと推定する」という表現は、Xと推定されるためにはAさえ満たされればよく、他の条件が追加で要求される可能性はないということを意味する。すなわち、Aが満たされた場合には、他の条件に関わらず、必ずXと推定される。一方で、Aが満たされない場合には、他の条件に応じ、Xと推定される場合もあればXでないと推定される場合もある。
当然ながら、ある推定処理に対して、ある条件(または複数の条件の組合せ)を、必要条件とすると同時に十分条件とすることも可能である。
主キー条件1は、たとえばテーブル定義情報31において、そのカラムの制約に「not null」パラメータが指定されているか否かに基づいて判定することができる。または、そのカラムの実データをすべて直接参照し、未定義値が含まれているか否かを確認して判定してもよい。
主キー条件2は、たとえばテーブル定義情報31において、そのカラムの制約に「unique」パラメータが指定されているか否かに基づいて判定することができる。または、そのカラムの実データをすべて直接参照し、重複するデータが存在するか否かを確認して判定してもよい。
実施の形態1では、この推定において、上記の2条件が満たされることを十分条件とする。図3の例では、「受注」テーブルの「受注番号」カラムの実データと、「商品」テーブルの「商品コード」カラムの実データが、上記の2条件をいずれも満たすので、これらのカラムが主キーであると推定される。
なお、変形例として、上記の2条件以外に追加の必要条件を課してもよい。たとえば、次の各条件のいずれかまたは任意の組合せを追加の必要条件としてもよい。
‐そのカラムについてインデックスが存在している。
‐そのカラムのデータ型が、日付または日時を表すものではない。
‐そのカラムのカラム名が所定の条件を満たす。たとえば、主キーを表す可能性が高い所定の文字列を含む。どのような文字列が主キーを表す可能性が高いかは当業者が適宜決定可能であるが、たとえば、「コード」「ID」「連番」「No」「番号」等の文字列である。
このステップS3において、外部キー推定装置10は、各カラムが主キーであると推定されたか否かを表す主キー情報を出力する。
図6に、主キー情報の例を示す。この例では、主キー情報は、テーブル定義情報31において各カラムのカラム定義に追加されるフラグの形式で表されているが、他の形式で表されてもよく、たとえばテーブル定義情報31とは独立したファイルとして記憶されてもよい。
次に実行されるステップS4〜S6が、実施の形態1におけるカラム結合パターン特定ステップを構成する。実施の形態1において、カラム結合パターン特定ステップは、ソースコード33に基づいて、2つのカラムからなる対をカラム結合パターンとして特定するステップとして実施される。
ステップS3の後、外部キー推定装置10は、ソースコード33を取得する(ステップS4)。
次に、外部キー推定装置10は、ソースコード33から、カラムの一致判定命令を抽出する(ステップS5)。たとえば、テーブル定義情報31に含まれるカラム名に基づき(またはテーブル名およびカラム名に基づき)、ソースコード33において、第1のテーブルの第1のカラムに記録された第1の実データと、第2のテーブルの第2のカラムに記録された第2の実データとの一致判定を行う一致判定命令を抽出する。結果として、たとえば図4に示す3つのSELECT文が特定される。
次に、外部キー推定装置10は、抽出された一致判定命令のそれぞれについて、カラム結合パターンを特定して記憶する(ステップS6)。カラム結合パターンは、一致判定命令に含まれる2つのカラムからなる対として特定されるものであり、たとえばカラム結合リスト34に記憶される。このようにして、実施の形態1におけるカラム結合パターン特定ステップが終了する。
図7に、実施の形態1におけるカラム結合リスト34の構成の例を示す。この例では、図4の3つのSELECT文に対応するカラム結合パターンが示されている。
次に、外部キー推定装置10は、各カラム結合パターンについて、各カラムが外部キーであるか否かを推定する(ステップS7、外部キー推定ステップ)。たとえば、各カラム結合パターンについて、一方のカラム(以下「外部キー候補」と称する場合がある)に対し、次の4条件を必要条件として、その外部キー候補は他方のカラムを参照する外部キーであると推定する。
‐外部キー条件1:他方のカラムが主キーである。たとえば、図7に示す3つのカラム結合パターンのうち第1のものにおいて、「商品」テーブルの「商品コード」カラムは主キーであるので(図6参照)、「受注明細」テーブルの「商品No」カラムは外部キー候補として外部キー条件1を満たす。
‐外部キー条件2:外部キー候補であるカラムは、そのテーブル内で唯一の主キーではない。すなわち、そのテーブルは、主キーを含まないか、外部キー候補以外に主キーを含む。
‐外部キー条件3:外部キー候補であるカラムに記録された実データが、他方のカラムに記録された実データと整合している。すなわち、外部キー候補であるカラムに記録された実データが、すべて他方のカラムに記録された実データに含まれている。
‐外部キー条件4:いずれのカラムも、除外リスト35に含まれていない。
図8に、除外リスト35の構成の例を示す。除外リスト35は、たとえば使用者によって事前に準備される。除外リスト35は、1つ以上のカラムについて、そのカラムを特定する情報(たとえばテーブル名とカラム名との組合せ)を含むものである。図8の例では、除外リスト35に「ユーザ」テーブルの「更新者」カラムが含まれている。
この推定において、上記の4条件が満たされることを十分条件としてもよく、また、これら以外に追加の必要条件を課してもよい。追加の必要条件としては、たとえば、「外部キー候補であるカラムのデータ型およびデータ長と、他方のカラムのデータ型およびデータ長とがいずれも一致している」という条件を用いることができる。
このように、ステップS7においてソースコード33の情報を用いるので、対となるカラムのカラム名がテーブル間で一致していない場合や、カラム名に共通する文字列が一切含まれない場合であっても、カラム結合パターンを抽出することが可能である。また、逆に、カラム名が一致していても、実データが整合していない場合には、外部キーでないと正しく推定することが可能である。
このステップS7において、外部キー推定装置10は、各カラムが外部キーであると推定されたか否かを表す外部キー情報を出力する。
図9に、実施の形態1における外部キー情報の例を示す。この例では、外部キー情報は、テーブル定義情報31において各カラムのカラム定義に追加されるフラグの形式で表されている。
「受注明細」テーブルの「受注番号」カラムについて、カラム結合パターンにおける他方のカラム(「受注」テーブルの「受注番号」カラム)は主キーであり、外部キー条件1を満たす。また、「受注明細」テーブルには2つの主キーが含まれており、外部キー条件2を満たす。また、ここでは、「受注明細」テーブルの「受注番号」カラムに記録された実データが、他方のカラム(「受注」テーブルの「受注番号」カラム)の実データと整合しており、外部キー条件3を満たすと仮定する。また、ここでは、「受注明細」テーブルの「受注番号」カラムが除外リスト35に含まれておらず、外部キー条件4を満たすと仮定する。この場合、このカラムは図9に示すように外部キーであると推定されることになる。
また、「受注明細」テーブルの「商品No」カラムについて、カラム結合パターンにおける他方のカラム(「商品」テーブルの「商品コード」カラム)は主キーであり、外部キー条件1を満たす。また、「受注明細」テーブルには2つの主キーが含まれており、外部キー条件2を満たす。また、ここでは、「受注明細」テーブルの「商品No」カラムに記録された実データが、他方のカラム(「商品」テーブルの「商品コード」カラム)の実データと整合しており、外部キー条件3を満たすと仮定する。また、ここでは、「受注明細」テーブルの「商品No」カラムが除外リスト35に含まれておらず、外部キー条件4を満たすと仮定する。この場合、このカラムは図9に示すように外部キーであると推定されることになる。
なお、厳密に言えば、図9に示される情報は外部キー情報の一部のみであり、カラム間の関係を十分に特定するためには、図9に示される情報に加え、カラム結合リスト34(図7)等を参照して各外部キーが参照しているカラムを特定する必要がある。
外部キー情報は、他の形式で表されてもよく、たとえばテーブル定義情報31とは独立したファイルとして記憶されてもよい。
次に、外部キー推定装置10は、ER図を作成する(ステップS8)。この処理は、たとえばER図情報36を出力することによって行われる。ER図情報36は、図1のように記憶手段30に出力され記憶されてもよいし、図示しない表示装置または印刷装置等に出力されてもよい。
図10に、ER図情報36によって表されるER図の例を示す。図10の例では、ER図は、各テーブルを表すエンティティ36aと、各テーブルに含まれるカラムのカラム名と、各カラムが主キーであるか否かを示す表示と、各カラムが外部キーであるか否かを示す表示と、外部キーである各カラムについて関連する2つのテーブルを関連付ける関連線36bおよび36cとを含む。ここで、「関連するテーブル」とは、外部キーであるカラムを含むテーブルと、その外部キーが参照するカラムを含むテーブルとを意味する。
図10の例では、「(主キー)」という表記があるカラムは主キーであり、この表記がないカラムは主キーではない。外部キーについても同様である。また、主キーであるカラムのグループと、主キーでないカラムのグループとを互いに分離して配置している(図10の例では、水平線によって上下に分離されている)。
さらに、ER図は、関連線36bおよび36cについて、外部キーを含む側のテーブルを特定する表現を含む。この例では外部キー側の端点が大きく表現されている。また、外部キーを含む側のテーブルが、他方のテーブルに依存するか否かを示す表現を含む。ここで、「依存」とは、外部キーが主キーでもあることを意味し、一方、「非依存」とは、外部キーが主キーではないことを意味する。図10の例では、「受注明細」テーブルの「受注番号」カラムは外部キーかつ主キーであるので、この外部キーに対応する関連線36bは「依存」の関係を表すものとして実線で表現されている。一方、「受注明細」テーブルの「商品No」カラムは外部キーであるが主キーではないので、この外部キーに対応する関連線36cは「非依存」の関係を表すものとして破線で表現されている。
以上説明するように、本発明の実施の形態1に係る外部キーを推定する方法、外部キー推定装置10および外部キー推定プログラムによれば、データベースの実データ32と、データベースを参照するプログラムのソースコード33(とくにカラム名)とに基づき、当該データベースの外部キーを推定することができる。
なお、本発明は、人間が行っている業務を単にシステム化するものではない。外部キーの推定作業は、作業量が膨大となるケースがあり、そのようなケースでは人間が業務として行うのは現実的に不可能であるため、コンピュータによる実施が不可欠である。
実施の形態2.
実施の形態2は、実施の形態1において、カラム結合パターン特定ステップ(図5のステップS4〜S6)の構成を変更するものである。以下、実施の形態1との相違点を説明する。
図11は、実施の形態2に係る外部キー推定装置の処理の流れを表すフローチャートである。なお説明の便宜上、各ステップの入出力についても一部図示してある。
ステップS3の後に実行されるステップS14が、実施の形態2におけるカラム結合パターン特定ステップを構成する。ステップS14において、外部キー推定装置は、各テーブルのカラム定義情報を参照し、異なるテーブルにおいて同一のカラム名を有する2つのカラムを抽出する。そして、抽出されたカラムからなる対を、カラム結合パターンとして特定する。
なお、3つ以上の異なるテーブルに渡って同一のカラム名を有するカラムが存在する場合には、すべての可能な対をカラム結合パターンとして特定する(すなわち、n個のカラムに対してn・(n−1)/2個のカラム結合パターンが特定されることになる)。ただし、変形例として、なんらかの基準を用いて特定すべきカラム結合パターンを絞り込んでもよい。
以下、実施の形態2において、図2に示すテーブル定義情報31に基づいて外部キー推定を実行した場合の動作を説明する。
図12に、実施の形態2において作成されるカラム結合リスト34の構成の例を示す。図2のテーブル定義情報31から、一致するカラム名の対がすべて抽出され特定されている。
また、図13に、実施の形態2における外部キー情報の例を示す。「受注明細」テーブルの「受注番号」カラムについては、実施の形態1と同様に外部キーであると推定されているが、「受注明細」テーブルの「商品No」カラムについては、カラム結合リスト34に含まれないため外部キーではないと推定されている。
このように、実施の形態2ではソースコード33を参照しない。したがって、ソースコード33の一部または全部が保存されていない等の原因で、ソースコード33に基づくカラム結合リスト34の作成が実行できないまたは実行困難である場合には、実施の形態2のようにカラム名に基づく方法のほうがより適切に外部キーを推定できる場合がある。
以上説明するように、本発明の実施の形態2に係る外部キーを推定する方法、外部キー推定装置10および外部キー推定プログラムによれば、データベースの実データ32と、各テーブルのカラム名とに基づき、当該データベースの外部キーを推定することができる。
上述の実施の形態1および2において、次のような変形を施すことができる。
実施の形態1および2では、カラム定義情報は、カラム名、データ型、データ長および制約からなるが、この他の情報を含んでもよい。たとえば、各カラムが主キーであるか否かを表す情報を含んでもよい。各カラムが主キーであるか否かを表す情報が含まれている場合には、主キー判定ステップを省略してもよい(すなわち、ステップS1において主キーに関する情報を取得し、ステップS3を省略してもよい)。
また、カラム定義情報は、データ型、データ長および制約のいずれかまたはすべてを含まないものであってもよい。原理的には、カラム名を含んでいれば本発明の最低限の実施には十分である。
除外リスト35を用いない構成であってもよい。たとえば、記憶手段30は除外リスト35を記憶せず、ステップS7において外部キー条件4(いずれのカラムも、除外リスト35に含まれていないこと)を用いない構成としてもよい。
ER図に関する処理は省略してもよい。すなわち、外部キーを推定した時点で処理を終了し、ステップS8については実行しない形態としてもよい。
また、ER図は、図10に示すもの以外の情報を含んでもよく、図10に示す情報の一部を含まないものであってもよい。少なくとも、各テーブルを表すエンティティと、外部キーであるカラムのそれぞれについて関連する2つのテーブルを関連付ける関連線とを含んでいれば、ER図に該当すると解釈できる。
実施の形態2において、カラム結合パターンの特定は、カラム名に基づいて行われるものであればよく、カラム名が厳密に一致していないものまで含むようにしてもよい。たとえば、異なる2つのテーブルのカラム名が、所定長の一致する文字列を含む場合には、それらの対をカラム結合パターンとして抽出してもよい。判定基準は当業者が適宜設計可能である。
実施の形態1および2を組み合わせてもよい。たとえば、実施の形態1のステップS4〜S6で特定されるカラム結合パターンと、実施の形態2のステップS14で特定されるカラム結合パターンとを結合してもよい。すなわち、それぞれのカラム結合リストをOR結合してもよい。この場合、図7および図12の例では、合計で12個のカラム結合パターンが特定され、カラム結合リスト34に含まれることになる。
また、実施の形態1のステップS4〜S6においても、実施の形態2のステップS14においてもカラム結合パターンとして特定される対のみを、カラム結合リスト34に含めてもよい。すなわち、それぞれのカラム結合リストをAND結合してもよい。この場合、図7および図12の例では、図7の第2番目のもの(図12では第1番目のもの)のみ、ただ1つのカラム結合パターンが特定され、カラム結合リスト34に含まれることになる。
また、カラム結合リスト34の作成において、OR結合を用いるか、AND結合を用いるかを指定可能であってもよい。たとえば、外部キー推定装置10は、カラム結合リスト34の作成方法に関する指定入力(OR結合を用いよという指定またはAND結合を用いよという指定)を受け付け、これに応じて異なる条件でカラム結合リスト34を作成してもよい。
10 外部キー推定装置(コンピュータ)、20 演算手段、30 記憶手段、31 テーブル定義情報、32 実データ、33 ソースコード、34 カラム結合リスト(カラム結合パターン)、35 除外リスト、36a エンティティ、36b,36c 関連線、
S3 主キー推定ステップ、S4〜S6,S14 カラム結合パターン特定ステップ、S7 外部キー推定ステップ。

Claims (8)

  1. 複数のテーブルを含むデータベースにおいて外部キーを推定する方法であって、
    コンピュータが、各テーブルについて1つ以上のカラム名を取得するステップと、
    コンピュータが、各テーブルの各カラムに記録された実データを取得するステップと、
    コンピュータが、前記カラム名に基づき、2つのカラムからなる対をカラム結合パターンとして特定する、カラム結合パターン特定ステップと、
    各カラムが外部キーであるか否かをコンピュータが推定する、外部キー推定ステップと
    を備え、
    前記外部キー推定ステップにおいて、各カラム結合パターンに含まれるいずれか一方のカラムについて、
    ‐他方のカラムが主キーであること、
    ‐前記一方のカラムが、そのテーブル内で唯一の主キーではないこと、および
    ‐前記一方のカラムに記録された実データが、すべて前記他方のカラムに記録された実データに含まれていること
    を必要条件として、一方のカラムは前記他方のカラムを参照する外部キーであると推定する、データベースにおいて外部キーを推定する方法。
  2. 前記カラム結合パターン特定ステップは、
    前記テーブルのいずれかを参照するプログラムのソースコードにおいて、第1のテーブルの第1のカラムに記録された第1の実データと、第2のテーブルの第2のカラムに記録された第2の実データとの一致判定を行う一致判定命令を、コンピュータが前記カラム名に基づき抽出するステップと、
    抽出された各一致判定命令について、前記第1のカラム及び前記第2のカラムからなる対を、コンピュータがカラム結合パターンとして特定するステップと、
    を含む、請求項1に記載の方法。
  3. 前記カラム結合パターン特定ステップは、異なるテーブルにおいて同一のカラム名を有する2つのカラムからなる対を、カラム結合パターンとして特定するステップを含む、請求項1または2に記載の方法。
  4. 前記方法は、主キー推定ステップをさらに備え、
    前記主キー推定ステップにおいて、各カラムについて、
    ‐そのカラムの実データが未定義値を含まないこと、および
    ‐そのカラムの実データが、カラム内で重複していないこと
    を必要条件として、コンピュータがそのカラムを主キーであると推定する、請求項1〜3のいずれか一項に記載の方法。
  5. 前記コンピュータは、少なくとも1つのカラムを含む除外リストを記憶し、
    前記外部キー推定ステップにおいて、いずれのカラムも前記除外リストに含まれていないことをさらに必要条件とする、請求項1〜4のいずれか一項に記載の方法。
  6. 各テーブルを含むER図をコンピュータが作成するステップをさらに備え、
    前記ER図は、
    各テーブルを表すエンティティと、
    外部キーであるカラムのそれぞれについて、関連する2つのテーブルを関連付ける関連線と
    を含む、請求項1〜5のいずれか一項に記載の方法。
  7. 請求項1〜6のいずれか一項に記載の方法を実行するコンピュータを含む、データベースの外部キー推定装置。
  8. コンピュータに、請求項1〜6のいずれか一項に記載の方法を実行させるプログラム。
JP2013060275A 2013-03-22 2013-03-22 データベースにおいて外部キーを推定する方法、装置およびプログラム Active JP5827260B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013060275A JP5827260B2 (ja) 2013-03-22 2013-03-22 データベースにおいて外部キーを推定する方法、装置およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013060275A JP5827260B2 (ja) 2013-03-22 2013-03-22 データベースにおいて外部キーを推定する方法、装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2014186488A true JP2014186488A (ja) 2014-10-02
JP5827260B2 JP5827260B2 (ja) 2015-12-02

Family

ID=51834015

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013060275A Active JP5827260B2 (ja) 2013-03-22 2013-03-22 データベースにおいて外部キーを推定する方法、装置およびプログラム

Country Status (1)

Country Link
JP (1) JP5827260B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527960A (ja) * 1991-07-24 1993-02-05 Toshiba Corp データベース構築方法
JPH07281882A (ja) * 1994-04-14 1995-10-27 Mitsubishi Electric Corp データベース正規化支援装置
JP2011248434A (ja) * 2010-05-24 2011-12-08 Nec Corp データベース・レプリケーション・システム、データベース・レプリケーション方法、情報処理装置、及び、プログラム
JP2012103847A (ja) * 2010-11-09 2012-05-31 Nec Corp データベース移行管理装置及びその方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527960A (ja) * 1991-07-24 1993-02-05 Toshiba Corp データベース構築方法
JPH07281882A (ja) * 1994-04-14 1995-10-27 Mitsubishi Electric Corp データベース正規化支援装置
JP2011248434A (ja) * 2010-05-24 2011-12-08 Nec Corp データベース・レプリケーション・システム、データベース・レプリケーション方法、情報処理装置、及び、プログラム
JP2012103847A (ja) * 2010-11-09 2012-05-31 Nec Corp データベース移行管理装置及びその方法

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
CSNB199700114001; C.J Date: データベースシステム概論 原書6版, 19970325, p.629-631, 丸善株式会社 *
CSNB201100990001; 国本 温子: 速効!図解 Access2010 総合版 第1版, 20100717, p.182-187, (株)毎日コミュニケーションズ *
CSND199801378006; 矢澤 久雄: 'データ収集からシミュレーションまで...パソコンで究める設計技法回路設計のためのパソコン活用' トランジスタ技術 第35巻 第5号(通巻第404号), 19980501, p.268-280, CQ出版株式会社 *
CSND200100299011; 高橋 栄司: 'データモデリングマイスターを目指して データベースよい設計/悪い設計' DB Magazine 第8巻 第13号(通巻110号), 19991201, p.100-111, 株式会社翔泳社 SHOEISHA *
JPN6013060535; 矢澤 久雄: 'データ収集からシミュレーションまで...パソコンで究める設計技法回路設計のためのパソコン活用' トランジスタ技術 第35巻 第5号(通巻第404号), 19980501, p.268-280, CQ出版株式会社 *
JPN6013060538; 高橋 栄司: 'データモデリングマイスターを目指して データベースよい設計/悪い設計' DB Magazine 第8巻 第13号(通巻110号), 19991201, p.100-111, 株式会社翔泳社 SHOEISHA *
JPN6013060539; C.J Date: データベースシステム概論 原書6版, 19970325, p.629-631, 丸善株式会社 *
JPN6014009844; 国本 温子: 速効!図解 Access2010 総合版 第1版, 20100717, p.182-187, (株)毎日コミュニケーションズ *

Also Published As

Publication number Publication date
JP5827260B2 (ja) 2015-12-02

Similar Documents

Publication Publication Date Title
Aguirre-Urreta et al. Sample size determination and statistical power analysis in PLS using R: an annotated tutorial
TW498201B (en) System and method for generating year 2000 test cases
US9092586B1 (en) Version management mechanism for fluid guard ring PCells
EP2863311B1 (en) Domain centric test data generation
KR20200093441A (ko) 지식 그래프 중의 데이터 모델을 획득하는 방법, 장치, 기기 및 저장 매체
JP2017041171A (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
JP6419667B2 (ja) テストdbデータ生成方法及び装置
WO2016063502A1 (ja) 知識管理装置、知識管理方法、及び、プログラムの記録媒体
JP2017045080A (ja) 業務フロー仕様再生方法
US9732593B2 (en) Systems, methods, and computer medium to optimize storage for hydrocarbon reservoir simulation
US10241899B2 (en) Test input information search device and method
US20130006683A1 (en) System and method of managing testing for a healthcare systems transition
US8166453B2 (en) Method and system for inconsistency resolution with cycle detection in a model-driven software environment
JP5827260B2 (ja) データベースにおいて外部キーを推定する方法、装置およびプログラム
JP6549786B2 (ja) データクレンジングシステム、方法、及び、プログラム
JP6123372B2 (ja) 情報処理システム、名寄せ判定方法及びプログラム
JP2018045508A (ja) 情報処理装置、情報処理方法、及び、プログラム
Zahari et al. Data quality issues in data migration
JP2018028776A (ja) ソフトウェア資産管理装置、ソフトウェア資産管理方法、および、ソフトウェア資産管理プログラム
JP6633009B2 (ja) 表データ分析プログラム
JP5202655B2 (ja) 業務フローチャート検索装置及びプログラム
JP2016126532A (ja) 算出プログラム、情報処理装置、および算出方法
Feng et al. Seqpare: a novel metric of similarity between genomic interval sets
WO2021020055A1 (ja) 設計支援システム、設計支援方法及び設計支援プログラム
Pham et al. ELODU: Entity Resolution in Big Data

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151015

R150 Certificate of patent or registration of utility model

Ref document number: 5827260

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250