JP5241370B2 - テーブル分類装置、テーブル分類方法及びテーブル分類プログラム - Google Patents

テーブル分類装置、テーブル分類方法及びテーブル分類プログラム Download PDF

Info

Publication number
JP5241370B2
JP5241370B2 JP2008199127A JP2008199127A JP5241370B2 JP 5241370 B2 JP5241370 B2 JP 5241370B2 JP 2008199127 A JP2008199127 A JP 2008199127A JP 2008199127 A JP2008199127 A JP 2008199127A JP 5241370 B2 JP5241370 B2 JP 5241370B2
Authority
JP
Japan
Prior art keywords
column
classification
tables
group
similar
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008199127A
Other languages
English (en)
Other versions
JP2010039593A (ja
Inventor
茂伸 高山
綾子 桐村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Corp filed Critical Mitsubishi Electric Corp
Priority to JP2008199127A priority Critical patent/JP5241370B2/ja
Priority to US12/360,432 priority patent/US8112448B2/en
Priority to CN200910130228A priority patent/CN101639859A/zh
Publication of JP2010039593A publication Critical patent/JP2010039593A/ja
Application granted granted Critical
Publication of JP5241370B2 publication Critical patent/JP5241370B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/956Hierarchical
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement

Landscapes

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

Description

本発明は、例えば、データベースが有する複数のテーブルを分類する技術に関する。
企業には様々なデータベースが混在しており、データベースは大規模化、複雑化している。企業内または企業間において、様々な種類のデータベースを統合する際には、データの整合性を図るため、同一の内容を表すテーブル若しくをカラムは統合する必要がある。そこで、まず、データベースやモデリングの専門化がデータベースの仕様書を調べた結果や、それぞれの組織に所属するスペシャリストの意見に基づき、類似しているテーブルやカラム、または冗長なテーブルやカラムの一覧表を作成する。そして、作成した一覧表に基づき、データベースを統合する。
近年、データベースの統合としてはスキーママッチングを支援するツールが開発されている。このツールは、類似した名称のテーブルやカラムを全社のデータベースの中から検索して、統合を支援するものである。
非特許文献1には、スキーマ統合という観点における統合の手法についての記載がある。非特許文献1では、テーブルを構成するカラムタイプの分類において、カラムのタイプや、キー項目か否かなどを考慮してカラム同士を比較する例が示されている。しかし、非特許文献1には、カラム同士を比較することについての記載はあるが、テーブルを構成するカラムのタイプ等に基づいてテーブル同士を比較することについての記載はない。
Rahm,E. and Bernstein,P.A.: A survey of approaches to automatic schema matching. VLDB J(10) pp.334−350,2001
企業内または企業間のデータベースの統合においては、大規模な場合であれば数万にもおよぶカラムを比較し、数百、数千におよぶテーブルの中から、同一のカラムから構成されているテーブルや類似したカラムから構成されているテーブルを抽出する。そして、同一のカラムから構成されているテーブルは一方を削除し、類似したカラムから構成されているテーブルは統合するなどの処理が必要である。
しかし、カラム同士の類似性が分かったとしても、カラム同士の類似性の情報に基づいてテーブル同士が類似するか否かを判断することは容易ではない。例えば、同一のカラムXを含むテーブルAとテーブルBがあるとする。ここで、テーブルAではカラムXは主キーであり、テーブルBではカラムXはテーブルAを参照する外部キーである場合がある。この場合、テーブルAとテーブルBとが同一のカラムXを含んでいたとしても、テーブルAとテーブルBとにおけるカラムXの意味(役割)は異なる。つまり、テーブルAとテーブルBとは、同一のカラムXを含んでいても、類似しているテーブルとは言えず統合の対象とはなり得ない。このように、単に一つ一つのカラムの同一性、類似性を比較するだけでは、テーブル構造としての同一性、類似性を判断することはできない。
本発明は、例えば、データベースにおける複数のテーブルを類似するテーブルからなるグループに分類することにより、データベースの統合を容易にすることを目的とする。
本発明に係るテーブル分類装置は、例えば、複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類装置であり、
処理装置により、上記複数のテーブルの各テーブルにおけるカラムの位置を含むカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第1の分類部と、
処理装置により、上記各テーブルにおけるカラムの位置以外のカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第2の分類部と、
上記第1の分類部と上記第2の分類部とにより分類された結果を出力装置へ出力する出力部と
を備えることを特徴とする。
本発明に係るテーブル分類装置では、テーブルにおけるカラムの位置を含むカラム情報によりテーブルが類似するか否かを判定する。テーブルにおけるカラムの位置により、そのテーブルにおけるカラムの役割を判断することが可能である。したがって、本発明に係るテーブル分類装置によれば、テーブルにおけるカラムの役割を考慮してテーブルの類似性を判断し、テーブルを分類することができる。
実施の形態1.
この実施の形態では、(1)テーブルにおけるカラムの意味(役割)を考慮してテーブルの類似性を判断し、テーブルを分類する意味分類方法と、(2)テーブルにおけるカラムの意味を考慮せずテーブルの類似性を判断し、テーブルを分類する統計分類方法との2つの分類方法を組合せたテーブルの分類方法について説明する。
図1は、テーブル分類装置1の機能を示す機能ブロック図である。
テーブル分類装置1は、企業内の様々なデータベースに格納されている複数のテーブルを、テーブルが有するカラムのタイプ、サイズ、精度(スケール)の類似度に基づき、複数のグループに分類する。
テーブル分類装置1は、リスト作成部10、意味分類部20(第1の分類部)、統計分類部30(第2の分類部)、出力部40を備える。
リスト作成部10は、入力となるデータベースカタログを取り込む。リスト作成部10は、データベースカタログとカラム対応表14とを入力として、テーブルリスト11とカラムリスト12と多頻出カラムリスト13とを処理装置により生成して、出力する。
意味分類部20は、意味分類方法によりテーブルを分類する。意味分類部20は、テーブルリスト11とカラムリスト12とを入力として、テーブルリスト11が示す複数のテーブルを複数のグループに分類したテーブル意味分類表21を処理装置により生成して、出力する。
意味分類部20は、各テーブルにおけるカラムの位置に基づき、そのテーブルにおけるそのカラムの意味を判定する。また、意味分類部20は、所定の意味を有するカラムが、そのテーブルにおいて重要なカラムであると判定する。意味分類部20は、重要であると判定した所定の意味を有するカラムが類似するか否かにより、テーブルが類似するか否かを判定する。そして、意味分類部20は、判定結果に従いテーブルを複数のグループに分類したテーブル意味分類表21を生成する。
ここでは、意味分類部20は、各テーブルの先頭付近のカラムは、キー項目である可能性が高く、重要なカラムであるとする。そして、意味分類部20は、先頭付近のカラムが類似するか否かにより、テーブルを複数のグループに分類したテーブル意味分類表21を生成する。
統計分類部30は、統計分類方法によりテーブルを分類する。統計分類部30は、テーブル意味分類表21と多頻出カラムリスト13とを入力として、意味分類部20が同一のグループに分類したテーブルをさらに細かく分類したテーブル分類リスト31を処理装置により生成して、出力する。
統計分類部30は、テーブルにおけるそのカラムの意味は考慮せず、統計的に重要なカラムを判定する。統計分類部30は、統計的に重要であると判定したカラムが共通するか否かにより、テーブルが類似するか否かを判定する。そして、統計分類部30は、判定結果に従いテーブルを複数のグループに分類したテーブル分類リスト31を生成する。
ここでは、統計分類部30は、出現頻度の高いカラムは、重要なカラムであるとする。そして、出現頻度の高いカラムが共通するか否かにより、テーブルを複数のグループに分類したテーブル分類リスト31を生成する。
特に、統計分類部30は、意味分類部20が同一のグループに分類した複数のテーブルを、さらに細かく分類する。
出力部40は、意味分類部20と統計分類部30とにより分類された結果を出力装置へ出力する。つまり、出力部40は、テーブル分類リスト31を出力する。
なお、データベースカタログは、データベースを構成するテーブルのテーブル情報有する。データベースカタログは、一般のデータベースが有する情報である。ここでは、リスト作成部10は、種類の異なる様々なデータベースのデータベースカタログ(図1では、データベースカタログ501、502、503)を入力としている。
次に、テーブルリスト11、カラムリスト12、多頻出カラムリスト13、カラム対応表14とについて説明する。また、テーブルリスト11、カラムリスト12、多頻出カラムリスト13、カラム対応表14との説明と併せて、リスト作成部10の動作とについて説明する。
図2は、テーブルリスト11を示す図である。テーブルリスト11は、データベースに含まれるテーブルについての情報(テーブルノード111)と、テーブルに含まれるカラムについての情報(カラムノード112)とを有する。
図3は、テーブルリスト11が有するテーブルノード111、カラムノード112を示す図である。図3(a)はテーブルノード111を示す図であり、図3(b)はカラムノード112を示す図である。
まず、リスト作成部10は、各データベースカタログから順次テーブルの情報を取得する。リスト作成部10は、データベース標準のアプリケーションプログラムインタフェースなどを利用すれば、データベースカタログからテーブル情報を取得できる。
テーブルの情報は、テーブル名とテーブルを構成するカラムの情報とを有する。また、カラムの情報は、カラムのタイプ(例えば、文字型、数値型、日付型など)、サイズ、スケール(精度)、キー情報(主キー、外部キーなど)、NULLが許されるか否かなどの情報を有する。
次に、リスト作成部10は、入手したテーブルの情報からテーブルリスト11を構成するテーブルノード111およびカラムノード112を作成する。
テーブルノード111は、ノード識別番号113、ノード名114、ノードタイプ115を備える。ノード識別番号113には、ノードを一意に識別するための識別子が格納される。ノード名114には、テーブル名が格納される。ノードタイプ115には、テーブルを識別するための識別子が格納される。
カラムノード112には、ノード識別番号113、ノード名114、ノードタイプ115、カラムタイプ116、サイズ117、スケール118、キー情報119(キー項目か否か)、NULL値の可否120(NULL値が許されるカラムか否か)を有する。ノード識別番号113には、ノードを一意に識別するための識別子が格納される。ノード名114には、カラム名が格納される。ノードタイプ115には、カラムを識別するための識別子が格納される。また、カラムタイプ116、サイズ117、スケール118、キー情報119、NULL値の可否120には、そのカラムの設定情報が格納される。
そして、リスト作成部10は、各テーブルについて、テーブルノード111からテーブルに属するカラムノード112を、そのテーブルにおけるカラムの並び順に従いリストで接続する。全てのテーブルについてテーブルノード111とカラムノード112とを作成した後、リスト作成部10は、各テーブルノード111をリストで接続する。これにより、テーブルリスト11が作成される。
図4は、カラム対応表14を示す図である。
カラム対応表14は、種類の異なるデータベース間のカラムの対応関係を示す情報である。
企業内で利用している種類の異なる様々なデータベース管理システムによって、カラムの型の定義が異なる。そこで、リスト作成部10は、カラム対応表14により種類の異なるデータベース間のカラムの対応を識別する。
カラム対応表14は、DB種別141(データベース種別)、固有カラムタイプ142、共通カラムタイプ143を有する。
DB種別141には、個別のデータベース管理システム名(例えばOracle(登録商標)、IBM DB2(登録商標)、Microsoft(登録商標) SQLServerなど)が格納される。
固有カラムタイプ142には、各データベース管理システムで定義されているカラムタイプが格納される。
共通カラムタイプ143には、データベース管理システム毎の個別のデータタイプを共通的に扱うためのカラムタイプを示す情報であって、固有カラムタイプ142に格納されたカラムタイプに対応する情報が格納される。
図5は、カラムリスト12を示す図である。
カラムリスト12は、全てのテーブルに存在するカラムの一覧情報である。カラムリスト12は、カラム番号121、カラムタイプ122、サイズ123、スケール124、出現回数125を有する。
リスト作成部10は、テーブルリスト11およびカラム対応表14を入力として、カラムリスト12を作成する。ここでは、リスト作成部10は、カラムタイプ、サイズ、スケールが同一であるカラムは同一のカラムであると扱い、カラムリスト12を作成する。
リスト作成部10は、テーブルリスト11の先頭のテーブルノード111から順に各カラムノード112のカラムタイプ116、サイズ117、スケール118を取得する。次に、リスト作成部10は、カラム対応表14に基づき、取得したカラムタイプ116を共通カラムタイプ143に変換する。そして、リスト作成部10は、カラムリスト12に新たなレコードを追加する。リスト作成部10は、追加したレコードのカラム番号121に任意の値を格納し、カラムタイプ122に取得した共通カラムタイプ143を格納し、サイズ123に取得したサイズ117を格納し、スケール124に取得したスケール118を格納し、出現回数125に1を格納する。
なお、リスト作成部10は、既にカラムリスト12に同一のカラムが存在する場合には、そのカラムの出現回数125をインクリメントする。
図6は、多頻出カラムリスト13を示す図である。
多頻出カラムリスト13は、カラムリスト12が示す複数のカラムのうち、出現頻度の高いカラムについての情報である。多頻出カラムリスト13は、出現順位131、カラム番号132、出現回数133、出現率134を有する。
リスト作成部10は、カラムリスト12を入力として、多頻出カラムリスト13を作成する。リスト作成部10は、最低出現率を定義し、最低出現率以上のカラムを出現率の順番にソートして多頻出カラムリスト13を作成する。ここでは、最低出現率を2.0%とした。
なお、出現率とは、全テーブルのうち、そのカラムが含まれているテーブルの割合である。つまり、「出現率=そのカラムを含むテーブル数/全テーブルの数」である。
次に、意味分類部20の動作について説明する。
図7は、意味分類部20の動作を示すフローチャートである。
意味分類部20は、先頭の幾つか(所定個)のカラムが同一のカラムタイプ、サイズ、スケールで構成されるテーブルを同一のグループに分類する。これは、先頭にある幾つかのカラムはキー項目の可能性が高く、意味的に重要なカラムである可能性が高いためである。
なお、以下の説明において、RECURSIVE_NUMは、意味分類方法によりどの程度まで細かく分類するかを決定するパラメータである。例えば、以下の説明では、RECURSIVE_NUMを20と定義する。RECURSIVE_NUMを20と定義した場合、1つのグループに属するテーブルの数が20より多いときには、さらにそのグループを細かく分類することを試みる。
<S1>:意味分類部20は、テーブルリスト11を入力として処理を開始する。なお、テーブルリスト11のテーブルノード111は、そのテーブルノード111を構成するカラムノード112のカラムタイプ116、サイズ117、スケール118でソートされているものとする。
<S2>:意味分類部20は、変数Xに1を代入する。変数Xは、先頭から何個目までが同一のカラムノード112であれば、テーブルノード111を同一のグループに分類するかを決定するものである。つまり、変数Xが1なら、先頭1個のカラムノード112が同一のテーブルノード111を同一のグループに分類することを意味する。
<S3>:意味分類部20は、全てのテーブルノード111を仮想的なルートグループに接続する。また、意味分類部20は、ルートグループをXの未処理リストに登録する。
<S4>:意味分類部20は、Xの未処理リストに登録されているノードがあるか否か判定する。未処理リストに登録されているノードがない場合(S4でNO)、意味分類部20は<S12>へ進み、処理を終了する。一方、未処理リストに登録されているノードがある場合(S4でYES)、意味分類部20は<S5>へ進む。
<S5>:意味分類部20は、グループ内で先頭からX番目のカラムノード112までが同一のテーブルノード111を仮グループとして一時的にグループ化する。
ここで、意味分類部20は、カラムノード112が同一か否か比較するため、まずカラムノード112のカラムタイプ116(データベース固有のカラムタイプ)をカラム対応表14を用いて共通カラムタイプ143に変換する。次に、意味分類部20は、変換した共通カラムタイプ143と、カラムノード112のサイズ117、スケール118とに基づき、カラムリスト12からカラム番号121を取得する。そして、意味分類部20は、取得したカラム番号121が同一か否かを比較して、カラムノード112が同一か否かを判定する。
<S6>:意味分類部20は、仮グループに含まれるテーブルノード111の数がRECURSIVE_NUM未満か否か判定する。テーブルノード111の数がRECURSIVE_NUM以上である場合(S6でNO)、意味分類部20は、<S7>へ進む。一方、テーブルノード111の数がRECURSIVE_NUM未満である場合(S6でYES)、意味分類部20は、<S8>へ進む。
<S7>:意味分類部20は、RECURSIVE_NUM以上のであった仮グループを本グループとする。つまり、RECURSIVE_NUM以上のであった仮グループは、一時的な仮グループではなく、本グループとしてグループ化する。また、意味分類部20は、X+1の未処理リストに登録する。グループ化されたテーブルノード111は、X+1の未処理リストに登録されることにより、さらに分類される対象となる。
<S8>:一方、意味分類部20は、RECURSIVE_NUM未満であった仮グループのグループ化を解除する。つまり、RECURSIVE_NUM未満であった仮グループはグループ化しない。その仮グループに属していたテーブルノード111を処理済リストに繋ぐ。つまり、グループ化されなかったテーブルノード111についてのグループ分けは終了となる。
<S9>:意味分類部20は、Xの未処理リストに繋がれた全ての仮グループについて処理が済んだか否かを判定する。全ての仮グループについて処理が済んでいない場合(S9でNO)、意味分類部20は<S10>へ進む。一方、全ての仮グループについて処理が済んだ場合(S9でYES)、意味分類部20は<S11>へ進む。
<S10>:意味分類部20は、全ての仮グループについて処理が済んでいないため、次の仮グループについて処理を実行する。
<S11>:一方、意味分類部20は、全ての仮グループについて処理が済んだため、Xをインクリメント(+1)して<S4>へ戻る。つまり、意味分類部20は、グループ化されたテーブルノード111をさらにグループ分けする。
<S12>:意味分類部20は、処理を終了する。
次に、図8から図12までに基づき、意味分類部20の動作の一例を説明する。図8から図12までは、意味分類部20によるテーブル分類を説明するための図である。
<S1>では、意味分類部20は、テーブルリスト11を入力として処理を開始する。なお、各テーブルノード111は、テーブルノード111を構成するカラムノード112のカラムタイプ116、サイズ117、スケール118でソートされている。
次に、<S2>では、意味分類部20は、変数Xに1を代入する。
次に、<S3>では、意味分類部20は、全てのテーブルノード111を仮想的なルートグループに接続する。また、意味分類部20は、ルートグループをXの未処理リストに登録する。つまり、図8に示すように、テーブルリスト11が示す各テーブルノード111がルートグループに接続される。また、ルートグループがX=1の未処理リストに登録されるため、全てのテーブルノード111がX=1の未処理リストに登録された状態となる。
次に、<S4>では、意味分類部20は、Xの未処理リストに繋がっているノードがあるか否か判定する。ここでは、図8に示すテーブルノード111が未処理リストに接続されているため、<S5>へ進む。
<S5>では、意味分類部20は、グループ内で先頭からX(=1)番目のカラムノード112までが同一のテーブルノード111を仮グループとして一時的にグループ化する。
ここでは、Xが1であるため、先頭の1つのカラムノード112が同一であるテーブルノード111を同一の仮グループに分類する。図9に示すように、M個の仮グループに分類されたとする。
次に、意味分類部20は、<S6>から<S10>までを繰り返し、各仮グループに含まれるテーブルノード111の数がRECURSIVE_NUM(=20)未満か否か順に判定する。意味分類部20は、RECURSIVE_NUM以上のであった仮グループを本グループとして、X+1の未処理リストに登録し、RECURSIVE_NUM未満であった仮グループのグループ化を解除して処理済リストに登録する。
ここでは、仮グループ1,2,3・・・は、テーブルノード111の数がRECURSIVE_NUM以上であり、仮グループMは、テーブルノード111の数がRECURSIVE_NUM未満であったとする。つまり、仮グループ1,2,3・・・は、本グループとしてグループ化される。一方、仮グループMは、本グループとはならず、処理済となる。すなわち、図10に示すように、ルートグループに各本グループが接続され、各本グループにそのグループに属するテーブルノード111が接続される。また、本グループとならなかった仮グループMに属するテーブルノード111は、ルートグループに接続されたまま(つまり、グループ化されないまま)処理済となる。
なお、ルートグループに接続された各本グループがX+1(=2)の未処理リスト登録され、ルートグループに接続されたままのテーブルノード111が処理済リストに登録される。
次に、<S11>では、意味分類部20は、Xをインクリメント(+1)して<S4>へ戻る。
<S4>では、意味分類部20は、X(=2)の未処理リストにはノードが登録されてため、<S5>へ進む。<S5>では、意味分類部20は、Xが2であるため、先頭の2つのカラムノード112が同一であるテーブルノード111を1つの仮グループに分類する。つまり、図11に示すように、各本グループに接続されたテーブルノード111がいくつかの仮グループに分類される。つまり、Xをインクリメントして各本グループをさらに分類することで、階層的な分類を実現する。次に、意味分類部20は、<S6>から<S10>までを繰り返し、各仮グループに属するテーブルノード111の数がRECURSIVE_NUM未満か否かを判定する。意味分類部20は、その判定結果により、各仮グループを本グループとして分類するか処理済とするか決定する。そして、意味分類部20は、全ての仮グループについて処理が完了すると、さらに次の階層の分類を行う。最終的に、RECURSIVE_NUMより多いテーブルノード111を有する仮グループが1つもできなくなると、処理が終了する。
ここでは、例えば、図12に示すようにテーブルノード111が分類されたとする。図13は、図12に示したテーブルノード111の分類を表したテーブル意味分類表21を示す図である。
テーブル意味分類表21は、グループを識別するためのグループ番号、グループに属するテーブルノード111に共通の1番目のカラムノード112のカラム番号、2番目のカラムのカラム番号、…、N番目のカラムのカラム番号およびそのグループに属するテーブルノード111の識別子のリストを有する。
なお、先頭から何番目のカラムノード112でグループ化されるかは、図7のフローチャートでRECURSIVE_NUM未満になるXの値で決まり、グループ毎に異なる。
例えば、グループ番号1のグループは、1番目(先頭)のカラムノード112がカラム番号2のテーブルノード111で構成されるグループである。このグループは、1番目(先頭)のカラムノード112がカラム番号2のテーブルノード111がRECURSIVE_NUM(=20)以上存在したため、グループ化されている。しかし、グループ番号1のグループにおいて、2番目(先頭から2つ目)のカラムノード112まで同一のテーブルノード111はRECURSIVE_NUM(=20)未満であったため、1番目(先頭)のカラムノード112によるグループ化で終了している。
また、例えば、グループ番号2のグループは、1番目のカラムノード112がカラム番号4のテーブルノード111で構成されるグループである。このグループは、1番目のカラムノード112がカラム番号4のテーブルノード111がRECURSIVE_NUM(=20)以上存在したため、グループ化されている。
さらに、2番目のカラムノード112がカラム番号6のテーブルノード111と、2番目のカラムノード112がカラム番号7のテーブルノード111とがRECURSIVE_NUM(=20)以上存在した。そのため、グループ番号2のグループがさらに、グループ番号21とグループ番号22としてグループ化されている。しかし、2番目のカラムノード112がカラム番号6若しくは7以外のテーブルノード111はいずれもRECURSIVE_NUM(=20)未満であった。そのため、2番目のカラムノード112がカラム番号6若しくは7以外のテーブルノード111は、それ以上はグループされず、1番目のカラムノード112によるグループ化で終了している。
また、さらに、グループ番号21のグループにおいて、3番目(先頭から3つ目)のカラムノード112まで同一のテーブルノード111はRECURSIVE_NUM(=20)未満であったため、2番目(先頭)のカラムノード112によるグループ化で終了している。
グループ番号22のグループでは、3番目のカラムノード112がカラム番号6のテーブルノード111がRECURSIVE_NUM(=20)以上存在した。そのため、グループ番号22のグループがさらに、グループ番号221としてグループ化されている。しかし、3番目のカラムノード112がカラム番号6以外のテーブルノード111はいずれもRECURSIVE_NUM(=20)未満であった。そのため、3番目のカラムノード112がカラム番号6以外のテーブルノード111は、それ以上はグループされず、2番目のカラムノード112によるグループ化で終了している。
グループ番号221のグループにおいて、4番目(先頭から4つ目)のカラムノード112まで同一のテーブルノード111はRECURSIVE_NUM(=20)未満であったため、3番目(先頭)のカラムノード112によるグループ化で終了している。
次に、統計分類部30の動作について説明する。
図14は、統計分類部30の動作を示すフローチャートである。
ここでは、統計分類部30は、多頻出カラムリスト13に登録された出現頻度の高いカラムであって、同一のカラムを有するテーブルを同一のグループに分類する。これは、出現率の高いカラムは、そのデータベースにおいて重要なカラムであると考えられるためである。
<S31>:統計分類部30は、テーブル意味分類表21を入力として、各グループに属するテーブルノード111の数がLOW_LEVEL_NUM(例えば、10)以上の最下位グループを抽出する。
最下位グループとは、意味分類部20によるグループ化において、それより下位のグループが存在しないグループのことである。つまり、図13に示すテーブル意味分類表21であれば、グループ番号1のグループ、グループ番号21のグループ、グループ番号221のグループ、・・・である。
<S32>:統計分類部30は、<S31>で抽出した全てのグループを統計分類未処理リストに登録する。
<S33>:統計分類部30は、変数yに1を代入する。
<S34>:統計分類部30は、統計分類未処理リストに登録されたグループであって、まだ処理されていないグループを1つ選択する。
また、統計分類部30は、選択したグループのテーブルノード111に属するカラムノード112のカラム番号を全て抽出する。さらに、統計分類部30は、抽出したカラム番号の中で多頻出カラムリスト13に登録されているものを抽出する。そして、統計分類部30は、抽出したカラム番号をy未処理リストに登録する。
<S35>:統計分類部30は、y未処理リストの中から、y個のカラムの組合せ(y個のカラム番号の組合せ)を1つ抽出する。統計分類部30は、選択したグループに属する各テーブルノード111におけるy個のカラムの組合せが出現する割合(以下、支持度と呼ぶ)を計算する。ここでは、選択したグループのうち、そのグループのグループ化に使用した先頭のカラムノード112を除いたカラムノード112に抽出した組合せが出現する割合を支持度とする。
<S36>:統計分類部30は、<S35>で計算した支持度が所定の最低支持度(例えば、5%)未満か否かを判定する。最低支持度以上の場合(S36でNO)、統計分類部30は<S37>へ進む。最低支持度未満の場合(S36でYES)、統計分類部30は<S38>へ進む。
<S37>:統計分類部30は、最低支持度以上のカラムの組合せを含むテーブルノード111をグループ化する。そして、統計分類部30は、そのカラムの組合せをy+1の未処理リストに登録する。
<S38>:一方、統計分類部30は、最低支持度未満のカラムの組合せを処理済みリストに登録する。
<S39>:統計分類部30は、y未処理リストの全ての組合せについて支持度を計算済か否かを判定する。全ての組合せについて支持度を計算済でない場合(S39でNO)、<S40>へ進む。一方、全ての組合せについて支持度を計算済である場合(S39でYES)、<S41>へ進む。
<S40>:統計分類部30は、次の組合せの支持度を計算して<S36>へ戻る。
<S41>:統計分類部30は、y+1未処理リストに2つ以上の組合せがあるか否かを判定する。2つ以上の組合せがある場合(S41でYES)、<S42>へ進む。一方、2つ以上の組合せがない場合(S41でNO)、<S43>へ進む。
<S42>:統計分類部30は、yをインクリメントして、<S36>へ戻る。
<S43>:統計分類部30は、統計分類未処理リストに登録された全てのグループを<S34>で選択したか否かを判定する。全てのグループを選択済みでない場合、(S43でNO)、<S33>へ戻り未処理のグループを選択する。一方、全てのグループを選択済みの場合(S43でYES)、処理を終了する。
次に、図15から図26までに基づき、統計分類部30の動作の一例を説明する。図15から図26までは、統計分類部30によるテーブル分類を説明するための図である。
<S31>では、統計分類部30は、図13に示すテーブル意味分類表21を入力として、各グループに属するテーブルノード111の数がLOW_LEVEL_NUM(例えば、10)以上の最下位グループを抽出する。
ここでは、統計分類部30は、グループ番号1のグループ、グループ番号21のグループ、グループ番号221のグループ、グループ番号222のグループ、・・・を抽出する。
次に、<S32>では、統計分類部30は、<S31>で抽出したグループを統計分類未処理リストに登録する。
また、<S33>では、統計分類部30は、変数yに1を代入する。
次に、<S34>では、統計分類部30は、統計分類未処理リストに登録されたグループであって、まだ処理されていないグループを1つ選択する。ここでは、グループ番号221のグループを選択したとする。
図15は、テーブル意味分類表21のグループ番号221のグループに属するテーブルノード111の一例を示す図である。なお、図15では、説明の簡単のため、グループ番号221のグループに属するテーブルノード111の識別子を、図8から図13までに示す識別子とは変更している。つまり、図15では、先頭のカラムノード112がカラム番号4(カラムタイプがchar(32))、2番目のカラムノード112がカラム番号7(カラムタイプがint)、3番目のカラム番号がカラム番号6(カラムタイプがchar(256))の15個のテーブルノード111(テーブル1からテーブル15まで)がグループ番号221のグループに属しているものとする。また、図7に示すフローチャートでは、RECURSIVE_NUMを20としたため、本来グループ番号221のグループには20以上のテーブルノード111が属しているはずである。しかし、ここでは、説明の簡単のため、グループ番号221のグループには15個のテーブルノード111が属しているものとする。つまり、図16に示すように、グループ番号221のグループが形成されているものとする。
また、統計分類部30は、選択したグループ内のテーブルノード111に属するカラムノード112のカラム番号を全て抽出して、抽出したカラム番号の中で多頻出カラムリスト13に登録されているものを抽出する。そして、統計分類部30は、抽出したカラム番号をy未処理リストに登録する。ここでは、多頻出カラムリストに登録されているカラムとして、カラム番号5(char(64))が抽出されたとする。つまり、カラム番号5(char(64))がy未処理リストに登録されたとする。
次に、<S35>では、統計分類部30は、y(=1)未処理リストの中から、y(=1)個のカラムの組合せを1つ抽出する。ここでは、カラム番号5(char(64))が抽出される。
また、統計分類部30は、カラム番号5(char(64))の支持度を計算する。図15に示す15個のテーブルノード111のうち、7個のテーブルノード111でカラム番号5(char(64))のカラムノード112が含まれている。そのため、支持度は「7/15=46.7%」である。なお、このグループは、先頭から3つ目までのカラムノード112によりグループ化されているため、先頭から4つ目以降のカラムノード112にカラム番号5(char(64))が含まれているテーブルノード111の割合を支持度として計算した。なお、図17は、グループ番号221のグループに属する15個のテーブルノード111のうち、カラム番号5(char(64))を含むテーブルノード111を示す図である。
次に、<S36>では、統計分類部30は、<S35>で計算した支持度が所定の最低支持度未満か否かを判定する。ここでは、最低支持度を5%としたため、カラム番号5(char(64))の支持度は最低支持度を上回っている(S36でNO)。したがって、<S37>へ進む。
<S37>では、統計分類部30は、カラム番号5(char(64))を含むテーブルノード111をグループ化する。また、カラム番号5(char(64))をy+1未処理リストに登録する。
つまり、図18に示すように、グループ番号221のグループが、さらに分類される。すなわち、グループ番号221のグループ内に、カラム番号5(char(64))を含むテーブルノード111のグループが形成される。
<S39>では、統計分類部30は、全ての組合せについて支持度を計算済であるため、<S41>へ進む。また、<S41>では、統計分類部30は、y+1未処理リストに2つ以上の組合せがないため、<S43>へ進む。つまり、グループ番号221のグループの処理を終了する。
<S43>では、統計分類部30は、選択されていないグループが存在するため、<S33>へ戻りグループ番号221のグループ以外のグループについても処理を行う。
続いて、<S33>で、統計分類部30は改めて変数yに1を代入する。
次に、<S34>では、統計分類部30は、統計分類未処理リストに登録されたグループであって、まだ処理されていないグループを1つ選択する。ここでは、グループ番号32のグループを選択したとする。
図19は、テーブル意味分類表21のグループ番号32のグループに属するテーブルノード111の一例を示す図である。図19では、説明の簡単のため、グループ番号32のグループに属するテーブルノード111の識別子を、図8から図13までに示す識別子とは変更している。つまり、図19では、先頭のカラムノード112がカラム番号7(カラムタイプがint)、2番目のカラムノード112がカラム番号6(カラムタイプがchar(256))の18個のテーブルノード111(テーブル1からテーブル18まで)がグループ番号32のグループに属しているものとする。また、図7に示すフローチャートでは、RECURSIVE_NUMを20としたため、本来グループ番号221のグループには20以上のテーブルノード111が属しているはずである。しかし、ここでは、説明の簡単のため、グループ番号32のグループには18個のテーブルノード111が属しているものとする。つまり、図20に示すように、グループ番号32のグループが形成されているものとする。
また、多頻出カラムリストに登録されているカラムとして、カラム番号4(char(32))とカラム番号5(char(64))とが抽出されたとする。つまり、カラム番号4(char(32))とカラム番号5(char(64))とがy未処理リストに登録されたとする。
次に、<S35>で、統計分類部30は、y(=1)未処理リストの中から、y(=1)個のカラムの組合せを1つ抽出する。ここでは、カラム番号4(char(32))が抽出されたとする。
また、統計分類部30は、カラム番号4(char(32))の支持度を計算する。図19に示す18個のテーブルノード111のうち、13個のテーブルノード111でカラム番号4(char(32))のカラムノード112が含まれている。そのため、支持度は「12/18=67%」である。なお、このグループは、先頭から2つ目までのカラムノード112によりグループ化されているため、先頭から3つ目以降のカラムノード112にカラム番号4(char(32))が含まれているテーブルノード111の割合を支持度として計算した。なお、図21は、グループ番号32のグループに属する18個のテーブルノード111のうち、カラム番号4(char(32))を含むテーブルノード111を示す図である。
次に、<S36>では、統計分類部30は、<S35>で計算した支持度が所定の最低支持度未満か否かを判定する。ここでは、最低支持度を5%としたため、カラム番号4(char(32))の支持度(72%)は最低支持度(5%)を上回っている(S36でNO)。したがって、<S37>へ進む。
<S37>では、支持度が最低支持度以上であるため、カラム番号4(char(32))を含むテーブルノード111をグループ化する。また、カラム番号4(char(32))をy+1(y=2)未処理リストに登録する。
<S39>では、y未処理リストの全ての組合せについての支持度の計算は終わっていないため、<S40>へ進む。
<S40>では、次のカラム、つまりカラム番号5(char(64))の支持度を計算する。図19に示す18個のテーブルノード111のうち、10個のテーブルノード111でカラム番号5(char(64))のカラムノード112が含まれている。そのため、支持度は「10/18=55.6%」である。なお、このグループは、先頭から2つ目までのカラムノード112によりグループ化されているため、先頭から3つ目以降のカラムノード112にカラム番号5(char(64))が含まれているテーブルノード111の割合を支持度として計算した。なお、図22は、グループ番号32のグループに属する18個のテーブルノード111のうち、カラム番号5(char(64))を含むテーブルノード111を示す図である。
続いて、<S36>では、計算した支持度が最低支持度未満か否かは判定すると、カラム番号5(char(64))の支持度(55.6%)は最低支持度(5%)を上回っている(S36でNO)。したがって、<S37>へ進む。
<S37>では、支持度が最低支持度以上であるため、カラム番号5(char(64))を含むテーブルノード111をグループ化する。また、カラム番号5(char(64))をy+1(y=2)未処理リストに登録する。
つまり、図23に示すように、グループ番号32のグループが、さらに分類される。すなわち、この時点で、グループ番号32のグループ内に、カラム番号4(char(32))を含むテーブルノード111のグループとカラム番号5(char(64))を含むテーブルノード111のグループとが形成されている。
<S39>では、y未処理リストの全ての組合せについての支持度の計算は終わっているため、<S41>へ進む。
<S41>では、y+1(y=2)未処理リストには2つ(カラム番号4(char(32))とカラム番号5(char(64)))があるため(S41でYES)、<S42>へ進む。そして、<S42>でyをインクリメントして、<S35>へ戻る。
<S35>では、y未処理リストに登録されたy個(2個)のカラムとして、カラム番号4(char(32))とカラム番号5(char(64))とを抽出する。そして、カラム番号4(char(32))とカラム番号5(char(64))とを両方を含む割合(支持度)を計算する。図19に示す18個のテーブルノード111のうち、6個のテーブルノード111でカラム番号5(char(64))のカラムノード112が含まれている。そのため、支持度は「6/18=33.3%」である。なお、このグループは、先頭から2つ目までのカラムノード112によりグループ化されているため、先頭から3つ目以降のカラムノード112に(char(32))とカラム番号5(char(64))との両方が含まれているテーブルノード111の割合を支持度として計算した。なお、図24は、グループ番号32のグループに属する18個のテーブルノード111のうち、カラム番号4(char(32))とカラム番号5(char(64))との両方を含むテーブルノード111を示す図である。
次に、<S36>では、統計分類部30は、<S35>で計算した支持度が所定の最低支持度未満か否かを判定する。ここでは、カラム番号4(char(32))とカラム番号5(char(64))との支持度(33.3%)は最低支持度(5%)を上回っている(S36でNO)。したがって、<S37>へ進む。
<S37>では、支持度が最低支持度以上であるため、カラム番号4(char(32))とカラム番号5(char(64))との両方を含むテーブルノード111をグループ化する。また、カラム番号4(char(32))とカラム番号5(char(64))との組合せをy+1(y=3)未処理リストに登録する。
つまり、図25に示すように、グループ番号32に形成されたカラム番号4(char(32))を含むグループとカラム番号5(char(64))を含むグループとが、さらに分類される。すなわち、グループ番号32に形成されたカラム番号4(char(32))を含むグループとカラム番号5(char(64))を含むグループとに、カラム番号4(char(32))とカラム番号5(char(64))との両方を含むテーブルノード111のグループが形成されている。
<S39>では、統計分類部30は、全ての組合せについて支持度を計算済であるため、<S41>へ進む。また、<S41>では、統計分類部30は、y+1未処理リストに2つ以上の組合せがないため、<S43>へ進む。つまり、グループ番号32のグループの処理を終了する。
この後、他のグループについても同様に処理を行い、全てのグループについての処理が済むと(S43でYES)、統計分類部30の処理が終了する。
なお、上記説明では、図23に示すように、カラム番号4(char(32))を含むテーブルノード111のグループとカラム番号5(char(64))を含むテーブルノード111のグループとには、テーブルノード111が重複していた。つまり、1つのテーブルノード111が複数のグループに分類される場合があった。
しかし、1つのテーブルノード111が複数のグループに分類されないように分類するとしてもよい。例えば、<S40>で支持度を計算する場合や<S37>でグループ化する場合に、既に他のグループに分類されているテーブルノード111は対象外としてもよい。つまり、上記グループ番号32の例であれば、カラム番号4(char(32))を含むテーブルノード111のグループに分類されたテーブルノード111は、カラム番号5(char(64))についての支持度の計算や、カラム番号5(char(64))を含むグループに分類する場合に対象外としてもよい。すなわち、カラム番号5(char(64))についての支持度の計算においては、カラム番号4(char(32))を含むテーブルノード111のグループに分類された12個のテーブルノード111を除いた6個のテーブルノード111のうち、いくつのテーブルノード111にカラム番号5(char(64))が含まれているかにより計算するとしてもよい。つまり、図26に示すように、カラム番号5(char(64))を含むグループに分類されるテーブルノード111数は減少する。
この場合、<S35>で先に選択されたカラムの組合せが優先的に考慮された分類結果となる。そのため、例えば、<S35>では出現頻度の高いカラムの組合せから順に選択するとしてもよい。
このように、この実施の形態に係るテーブル分類装置1は、意味分類方法と統計分類方法とを組合せている。これにより、機械的な分類よりも、ユーザが意図する分類に近い効果的な分類を効率的に実施することができる。
実施の形態2.
実施の形態1では、統計分類部30はカラムの重複は許さずに処理を行った。つまり、実施の形態1では、<S35>において統計分類部30は、2つ以上のカラムの組合せを抽出する場合に、2つ以上の異なるカラムの組合せを抽出した。例えば、統計分類部30は、カラム番号4(char(32))とカラム番号5(char(64))との組合せを抽出した。言い替えると、2つのカラム番号4(char(32))からなる組合せのように、同一のカラムを複数有する組合せは抽出しなかった。なお、同一のカラムとは、カラムタイプ、サイズ、精度(スケール)とが同じカラムのことである。
この実施の形態では、同一のカラムを複数有する組合せも抽出する。同一のカラムを複数有する組合せも抽出することにより、同一カラムタイプ、サイズ、スケール(精度)のカラムを複数含むテーブルの分類をより効率的に実施できる。
図27は、この実施の形態に係る統計分類部30の動作を示すフローチャートである。
図27に示すフローチャートは、図14に示すフローチャートの<S35>、<S40>、<S41>がそれぞれ<S35a>、<S40a>、<S41a>に変更されている。言い替えると、図27に示すフローチャートの他の処理は、図14に示すフローチャートの処理と同様である。
<S35a>:統計分類部30は、y未処理リストの中から、y個のカラムの組合せを重複を許して1つ抽出する。つまり、統計分類部30は、同一のカラムを複数含む組合せも抽出する。また、統計分類部30は、グループ内の各テーブルノード111におけるy個のカラムの組合せが出現する割合(支持度)を計算する。
<S40a>:統計分類部30は、<S35a>と同様に、同一のカラムの重複を許した場合の次の組合せの支持度を計算する。
<S41a>:y+1未処理リストに1つ以上の組合せがあるか否かを判定する。1つ以上の組合せがある場合(S41でYES)、<S42>へ進む。一方、1つ以上の組合せがない場合(S41でNO)、<S43>へ進む。実施の形態1では、2つ以上の組合せがなければ、yをインクリメントして次の階層のグループ化を行うことができなかった。しかし、ここでは、1つでも組合せがあれば、その組合せを重複して持つグループを新たにグループ化することができる。そのため、ここでは、1つ以上の組合せがある場合には、<S42>へ進む。
図19に示すグループ番号32のグループを例として、図27に示す方法により分類する。y=1の間は、実施の形態1と同様に処理がされる。したがって、図23に示すように、グループ番号32のグループ内に、カラム番号4(char(32))を含むテーブルノード111のグループとカラム番号5(char(64))を含むテーブルノード111のグループとが形成される。
続いて、<S42>で、yをインクリメントしてy=2として、<S35a>へ戻る。
<S35a>では、y(=2)未処理リストの中から、y(=2)個のカラムの組合せを重複を許して1つ抽出する。ここでは、カラム番号4(char(32))とカラム番号5(char(64))とがy未処理リストに登録されている。そこで、2個のカラム番号4(char(32))からなる組合せを抽出する。そして、抽出した組合せの支持度を計算する。
カラム番号4(char(32))を2個以上を含むテーブルノード111は6個ある。そのため、支持度は、6/18=33.3%である。なお、このグループは、先頭から2つ目までのカラムノード112によりグループ化されているため、先頭から3つ目以降のカラムノード112に(char(32))が2つ以上含まれているテーブルノード111の割合を支持度として計算した。また、図28は、グループ番号32のグループに属する18個のテーブルノード111のうち、カラム番号4(char(32))を2つ以上含むテーブルノード111を示す図である。
続いて、<S36>で、計算した支持度が最低支持度未満か否かは判定すると、カラム番号4(char(32))の支持度(33.3%)は最低支持度(5%)を上回っている(S36でNO)。したがって、<S37>へ進む。
<S37>では、支持度が最低支持度以上であるため、カラム番号4(char(32))を2つ以上含むテーブルノード111をグループ化する。また、2個のカラム番号4(char(32))の組合せをy+1(y=3)未処理リストに登録する。
つまり、図29に示すように、グループ番号32に形成されたカラム番号4(char(32))を含むグループが、さらに分類される。すなわち、グループ番号32に形成されたカラム番号4(char(32))を含むグループに、カラム番号4(char(32))を2つ以上含むテーブルノード111のグループが形成されている。
続いて、<S39>で、全ての組合せを選択していないため(S39でNO)、<S40a>で次の組合せを選択して分類を行う。つまり、2個のカラム番号5(char(64))からなる組合せと、カラム番号4(char(32))とカラム番号5(char(64))との組合せについての処理が同様に行われる。
そして、yがさらにインクリメントされ、3個のカラム番号4(char(32))からなる組合せ等についての処理が同様に行われる。<S41a>での終了条件を満たすまで処理が繰り返され、<S41a>での終了条件を満たすとこのグループについての処理が終了する。
その後、他のグループについても同様に処理を行い、全てのグループについての処理が済むと(S43でYES)、統計分類部30の処理が終了する。
実施の形態3.
以上の実施の形態では、カラムの同一性の比較(類似するか否かの判定)を図5のカラムリスト12を用いて行った。この実施の形態では、さらに、各カラムがNULL値を許すか否かを考慮してカラムの同一性の比較を行う。
一般に、NULL値が許されないカラムはキー項目などの場合が多く、NULL値が許される項目とはデータの内容(質)が異なる。そのためNULL値の可否を考慮して、カラムの同一性の比較を行うことでより効率的にテーブルを分類できる。
図30は、NULL値の可否を考慮したカラムリスト12を示す図である。
図30に示すカラムリスト12では、カラムタイプ122、サイズ123、スケール124が同じ場合でもNULL値の可否126により、カラム番号121を別々に付番する。つまり、カラムタイプ122、サイズ123、スケール124、NULL値の可否126が同一であるカラムを同一のカラムとして扱う。図5に示すカラムリスト12に代えて、図30に示すカラムリスト12を用いて、以上の実施の形態における意味分類方法と統計分類方法とを実行することで、テーブルを効率的に分類できる。
実施の形態4.
この実施の形態では、さらに、各カラムがキー項目か否かを考慮してカラムの同一性の比較を行う。
キー項目とは主キー若しくは外部キーなどのことである。キー項目となるカラムとキー項目とならないカラムではデータの内容(質)が異なる。そのためキー項目か否かを考慮して、カラムの同一性の比較を行うことでより効率的に分類できる。
図31は、キー項目か否かを考慮したカラムリスト12を示す図である。
図31に示すカラムリスト12では、カラムタイプ122、サイズ123、スケール124が同じ場合でもキー項目か否か127により、カラム番号121を別々にする。つまり、カラムタイプ122、サイズ123、スケール124、キー項目か否か127が同一であるカラムを同一のカラムとして扱う。図5に示すカラムリスト12に代えて、図31のカラムリスト12を用いて、以上の実施の形態における意味分類方法と統計分類方法とを実行することで、テーブルを効率的に分類できる。
また、さらに、キー項目を主キーと外部キーとに分けたカラムリスト12を用いてもよい。
つまり、以上の実施の形態に係るテーブル分類装置1は、企業内に存在する種類の異なるデータベースに格納されているテーブルの1つ1つのカラム同士の比較を積み重ねる。そして、それらのカラムから構成されるテーブル同士の構造的な類似性を判別し、テーブルの分類を行う。
以上をまとめると次のようになる。
テーブル分類装置1は、企業内の様々なデータベースに格納されているテーブルを、テーブルを構成するカラムのタイプ、サイズ、スケール(精度)の類似度に基づいて分類するテーブル分類装置1であって、
データベースのカタログ情報を取り込み、テーブルリスト11を生成し、さらに異なるデータベース間のカラムの対応関係を記載したカラム対応表14に従って、カラムリスト12、多頻出カラムリスト13を生成するリスト作成部10と、
データベースを構成するカラムの意味を考慮して分類を行う意味分類部20と、
カラムの統計的な情報に基づいて分類を行う統計分類部30とを備え、
上記意味分類部20の分類方式と統計分類部30の分類方式を組合せて階層的に分類することを特徴とする。
上記カラムの統計的な情報に基づいて分類を行う統計分類部30は、上記データベースを構成するカラムの意味を考慮して分類を行う意味分類部20の分類結果を上位階層の分類として、それぞれの上位階層の分類結果に対して、統計的な分類を行うことを特徴とする。
上記カラム対応表14は、異なる種類のデータベース間のカラムのタイプの対応付けを行うことで、異なる種類のデータベースで定義されているデータタイプ間でのカラムタイプ、サイズ、スケール(精度)の比較を行うことを特徴とする。
上記データベースを構成するカラムの意味を考慮して分類を行う意味分類部20は、テーブルを構成するカラムの並び順に着目し、テーブルを構成する先頭の幾つかのカラムのタイプ、サイズ、スケール(精度)が同一であることによってテーブルを分類することを特徴とする。
上記カラムの統計的な情報に基づいて分類を行う統計分類部30は、テーブルを構成するカラムの組合せを考慮して、カラムタイプ、サイズ、スケール(精度)が同一のカラムの組合せを含むことによってテーブルを分類する統計的分類方式を特徴とする。
上記カラムの組合せを考慮してテーブルを分類する統計的分類方式は、同一タイプのカラムが複数出現した場合に、出現回数を考慮して、カラムの組合せでテーブルを分類することを特徴とする。
カラムタイプ、サイズ、スケール(精度)に加えて、カラムのNULL値を許すかどうかを考慮してカラム同士の比較を行うことを特徴とする。
カラムタイプ、サイズ、スケール(精度)に加えて、カラムがキー項目かどうかを考慮してカラム同士の比較を行うことを特徴とする。
また、テーブルにおけるカラムの役割とは、例えば、キー項目であること、主キーであること、外部キーであること、インデックスであること等である。
次に、上記実施の形態におけるテーブル分類装置1のハードウェア構成について説明する。
図32は、テーブル分類装置1のハードウェア構成の一例を示す図である。
図32に示すように、テーブル分類装置1は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、LCD901(Liquid Crystal Display)、キーボード902(K/B)、通信ボード915、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ROM913、磁気ディスク装置920は、不揮発性メモリの一例である。RAM914は、揮発性メモリの一例である。ROM913とRAM914と磁気ディスク装置920とは、記憶装置(メモリ)の一例である。また、キーボード902、通信ボード915は、入力装置の一例である。また、通信ボード915は、通信装置の一例である。さらに、LCD901は、表示装置の一例である。通信ボード915とLCD901とは、出力装置の一例である。
磁気ディスク装置920又はROM913などには、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
プログラム群923には、上記の説明において「リスト作成部10」、「意味分類部20」、「統計分類部30」、「出力部40」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、上記の説明において「テーブルリスト11」、「カラムリスト12」、「多頻出カラムリスト13」、「カラム対応表14」、「テーブル意味分類表21」、「テーブル分類リスト31」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPU911の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPU911の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、その他光ディスク等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組合せ、さらには、ファームウェアとの組合せで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ROM913等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
テーブル分類装置1の機能を示す機能ブロック図。 テーブルリスト11を示す図。 テーブルリスト11が有するテーブルノード111、カラムノード112を示す図。 カラム対応表14を示す図。 カラムリスト12を示す図。 多頻出カラムリスト13を示す図。 意味分類部20の動作を示すフローチャート。 意味分類部20によるテーブル分類の説明図(1)。 意味分類部20によるテーブル分類の説明図(2)。 意味分類部20によるテーブル分類の説明図(3)。 意味分類部20によるテーブル分類の説明図(4)。 意味分類部20によるテーブル分類の説明図(5)。 テーブル意味分類表21を示す図。 統計分類部30の動作を示すフローチャート。 統計分類部30によるテーブル分類の説明図(1)。 統計分類部30によるテーブル分類の説明図(2)。 統計分類部30によるテーブル分類の説明図(3)。 統計分類部30によるテーブル分類の説明図(4)。 統計分類部30によるテーブル分類の説明図(5)。 統計分類部30によるテーブル分類の説明図(6)。 統計分類部30によるテーブル分類の説明図(7)。 統計分類部30によるテーブル分類の説明図(8)。 統計分類部30によるテーブル分類の説明図(9)。 統計分類部30によるテーブル分類の説明図(10)。 統計分類部30によるテーブル分類の説明図(11)。 統計分類部30によるテーブル分類の説明図(12)。 実施の形態2に係る統計分類部30の動作を示すフローチャート。 実施の形態2に係る統計分類部30によるテーブル分類の説明図(1)。 実施の形態2に係る統計分類部30によるテーブル分類の説明図(2)。 NULL値の可否を考慮したカラムリスト12を示す図。 キー項目か否かを考慮したカラムリスト12を示す図。 テーブル分類装置1のハードウェア構成の一例を示す図。
符号の説明
1 テーブル分類装置、10 リスト作成部、11 テーブルリスト、111 テーブルノード、112 カラムノード、12 カラムリスト、121 カラム番号、122 カラムタイプ、123 サイズ、124 スケール、125 出現回数、13 多頻出カラムリスト、131 出現順位、132 カラム番号、133 出現回数、134 出現率、14 カラム対応表、141 DB種別、142 固有カラムタイプ、143 共通カラムタイプ、20 意味分類部、21 テーブル意味分類表、30 統計分類部、31 テーブル分類リスト、40 出力部。

Claims (11)

  1. 複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類装置であり、
    処理装置により、上記複数のテーブルの各テーブルにおける所定の位置にあるカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第1の分類部と、
    処理装置により、上記複数のテーブルにおいて、出現頻度の高いカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記第1の分類部が分類したテーブルをさらに複数のグループに分類する第2の分類部と、
    記第2の分類部により分類された結果を出力装置へ出力する出力部と
    を備えることを特徴とするテーブル分類装置。
  2. 上記第1の分類部は、テーブルの先頭にある所定個のカラムが類似するか否かにより上記各テーブルが類似するかを判定する
    ことを特徴とする請求項に記載のテーブル分類装置。
  3. 上記第1の分類部は、テーブルの先頭にあるカラムが類似するか否かによりテーブルが類似するかを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類するとともに、
    同一のグループに分類された複数のテーブルにおいて、各テーブルの2番目にあるカラムが類似するか否かにより上記同一のグループに分類された複数のテーブルの各テーブルが類似するかを判定して、判定した結果に従い上記同一のグループに分類された複数のテーブルをさらに複数のグループに分類する
    ことを特徴とする請求項1又は2に記載のテーブル分類装置。
  4. 上記第2の分類部は、上記各テーブルが出現頻度の高い類似するカラムを1つ有するか否かによりテーブルが類似するかを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類するとともに、
    同一のグループに分類された複数のテーブルにおいて、上記同一のグループに分類された複数のテーブルの各テーブルが出現頻度の高い類似するカラムを2つ有するか否かによりテーブルが類似するかを判定して、判定した結果に従い上記同一のグループに分類された複数のテーブルを複数のグループに分類する
    ことを特徴とする請求項1から3までのいずれかに記載のテーブル分類装置。
  5. 上記第1の分類部と上記第2の分類部との少なくともいずれかは、カラムの所定の属性が同一であるか否かによりカラムが類似するか否かを判定する
    ことを特徴とする請求項1から4までのいずれかに記載のテーブル分類装置。
  6. 上記第1の分類部と上記第2の分類部との少なくともいずれかは、カラムの属性として、カラムタイプとサイズと精度との少なくともいずれかを用いる
    ことを特徴とする請求項に記載のテーブル分類装置。
  7. 上記第1の分類部と上記第2の分類部との少なくともいずれかは、カラムの属性として、さらにカラムの値としてNULL値を許すか否かを示す情報を用いる
    ことを特徴とする請求項に記載のテーブル分類装置。
  8. 上記第1の分類部と上記第2の分類部との少なくともいずれかは、カラムの属性として、さらにカラムがキー項目であるか否かを示す情報を用いる
    ことを特徴とする請求項6又は7に記載のテーブル分類装置。
  9. 複数のデータベースが有する複数のテーブルを分類するテーブル分類装置であり、
    処理装置により、上記複数のテーブルの各テーブルにおいて同じ役割のカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する役割分類部と、
    処理装置により、上記複数のテーブルにおいて、出現頻度の高いカラムが類似するか否かにより上記各テーブルが類似するかを判定して、判定した結果に従い上記役割分類部が分類したテーブルをさらに複数のグループに分類する統計分類部と、
    記統計分類部により分類された結果を出力装置へ出力する出力部と
    を備えることを特徴とするテーブル分類装置。
  10. 複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類方法であり、
    処理装置が、上記複数のテーブルの各テーブルにおける所定の位置にあるカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第1の分類ステップと、
    処理装置が、上記複数のテーブルにおいて、出現頻度の高いカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記第1の分類ステップで分類したテーブルをさらに複数のグループに分類する第2の分類ステップと、
    出力装置が、上記第2の分類ステップで分類された結果を出力する出力ステップと
    を備えることを特徴とするテーブル分類方法。
  11. 複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類プログラムであり、
    上記複数のテーブルの各テーブルにおける所定の位置にあるカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第1の分類処理と、
    上記複数のテーブルにおいて、出現頻度の高いカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記第1の分類処理で分類したテーブルをさらに複数のグループに分類する第2の分類処理と、
    記第2の分類処理で分類された結果を出力する出力処理と
    を備えることを特徴とするテーブル分類プログラム。
JP2008199127A 2008-08-01 2008-08-01 テーブル分類装置、テーブル分類方法及びテーブル分類プログラム Expired - Fee Related JP5241370B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008199127A JP5241370B2 (ja) 2008-08-01 2008-08-01 テーブル分類装置、テーブル分類方法及びテーブル分類プログラム
US12/360,432 US8112448B2 (en) 2008-08-01 2009-01-27 Table classification device, table classification method, and table classification program
CN200910130228A CN101639859A (zh) 2008-08-01 2009-03-26 表分类装置、表分类方法以及表分类程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008199127A JP5241370B2 (ja) 2008-08-01 2008-08-01 テーブル分類装置、テーブル分類方法及びテーブル分類プログラム

Publications (2)

Publication Number Publication Date
JP2010039593A JP2010039593A (ja) 2010-02-18
JP5241370B2 true JP5241370B2 (ja) 2013-07-17

Family

ID=41609393

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008199127A Expired - Fee Related JP5241370B2 (ja) 2008-08-01 2008-08-01 テーブル分類装置、テーブル分類方法及びテーブル分類プログラム

Country Status (3)

Country Link
US (1) US8112448B2 (ja)
JP (1) JP5241370B2 (ja)
CN (1) CN101639859A (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727454A (zh) * 2008-10-30 2010-06-09 日电(中国)有限公司 用于对象自动分类的方法和系统
WO2012006509A1 (en) * 2010-07-09 2012-01-12 Google Inc. Table search using recovered semantic information
JP5398663B2 (ja) * 2010-08-06 2014-01-29 三菱電機株式会社 データ処理装置及びデータ処理方法及びプログラム
JP5933410B2 (ja) 2012-10-25 2016-06-08 株式会社日立製作所 データベース分析装置及びデータベース分析方法
US9165217B2 (en) 2013-01-18 2015-10-20 International Business Machines Corporation Techniques for ground-level photo geolocation using digital elevation
US10726018B2 (en) * 2014-02-10 2020-07-28 Microsoft Technology Licensing, Llc Semantic matching and annotation of attributes
US9317566B1 (en) 2014-06-27 2016-04-19 Groupon, Inc. Method and system for programmatic analysis of consumer reviews
US10878017B1 (en) * 2014-07-29 2020-12-29 Groupon, Inc. System and method for programmatic generation of attribute descriptors
US10977667B1 (en) 2014-10-22 2021-04-13 Groupon, Inc. Method and system for programmatic analysis of consumer sentiment with regard to attribute descriptors
JPWO2017064769A1 (ja) * 2015-10-14 2018-08-02 株式会社ターボデータラボラトリー 情報処理システム及びコンピュータプログラム
JP6480377B2 (ja) * 2016-05-06 2019-03-06 日本電信電話株式会社 分類器学習装置、表種類分類装置、方法、及びプログラム
US20190205361A1 (en) * 2016-08-05 2019-07-04 Nec Corporation Table-meaning estimating system, method, and program
KR101930034B1 (ko) * 2017-02-24 2019-03-14 (주)위세아이텍 데이터의 도메인을 판별하는 장치 및 그 방법
BR102018004797A2 (pt) * 2017-03-09 2019-02-19 Tata Consultancy Services Limited Método implantado por processador para mapear bancos de dados heterogêneos, sistema de mapeamento de dados e um ou mais meios de armazenamento de informações legíveis por máquina não transitórios
WO2018212106A1 (ja) * 2017-05-19 2018-11-22 学校法人神奈川大学 情報検索装置、検索用プログラム、データベースの更新方法、データベースの更新装置、データベース更新用プログラム
JP6840062B2 (ja) * 2017-09-28 2021-03-10 株式会社日立製作所 テーブル関係解析支援装置、および、テーブル関係解析支援方法
US11010363B2 (en) * 2018-04-05 2021-05-18 Sap Se Complementing existing tables while grouping tables in a distributed database
US11003693B2 (en) * 2018-04-05 2021-05-11 Sap Se Grouping tables with existing tables in a distributed database
JP7014199B2 (ja) * 2019-03-08 2022-02-01 オムロン株式会社 制御システム、情報処理装置、および情報処理プログラム
US11138477B2 (en) * 2019-08-15 2021-10-05 Collibra Nv Classification of data using aggregated information from multiple classification modules
WO2021124469A1 (ja) * 2019-12-18 2021-06-24 株式会社日立製作所 データ意味推定システム及びデータ意味推定方法
CN111916165A (zh) * 2020-08-18 2020-11-10 泰康保险集团股份有限公司 用于评估量表的相似性评估方法及装置
US11544294B2 (en) 2020-12-10 2023-01-03 Sap Se Distributing tables in a distributed database using consolidated grouping sources
US11630853B2 (en) * 2021-01-29 2023-04-18 Snowflake Inc. Metadata classification
JP2023033737A (ja) * 2021-08-30 2023-03-13 株式会社Find データベース生成装置及びデータベース生成方法並びにデータベース生成用プログラム
US11816582B2 (en) * 2021-10-21 2023-11-14 Snowflake Inc. Heuristic search for k-anonymization

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11213014A (ja) 1997-11-19 1999-08-06 Nippon Steel Corp データベースシステム、データベース検索方法及び記録媒体
JPH11250092A (ja) 1998-03-04 1999-09-17 Ntt Communication Ware Kk 共用データベース装置、共用データベースシステム、共用データベース装置のデータ抽出方法および共用データベース装置のデータ抽出プログラムを記録した記録媒体
US6578030B1 (en) * 2000-06-30 2003-06-10 Requisite Technology Inc. Method and apparatus for mapping one catalog into another catalog
US7016903B1 (en) * 2001-01-25 2006-03-21 Oracle International Corporation Method for conditionally updating or inserting a row into a table
US7165068B2 (en) * 2002-06-12 2007-01-16 Zycus Infotech Pvt Ltd. System and method for electronic catalog classification using a hybrid of rule based and statistical method
US7383260B2 (en) * 2004-08-03 2008-06-03 International Business Machines Corporation Method and apparatus for ontology-based classification of media content
JP4604225B2 (ja) 2005-02-21 2011-01-05 株式会社国際電気通信基礎技術研究所 インタラクションデータ抽出装置

Also Published As

Publication number Publication date
JP2010039593A (ja) 2010-02-18
CN101639859A (zh) 2010-02-03
US20100030801A1 (en) 2010-02-04
US8112448B2 (en) 2012-02-07

Similar Documents

Publication Publication Date Title
JP5241370B2 (ja) テーブル分類装置、テーブル分類方法及びテーブル分類プログラム
US7480643B2 (en) System and method for migrating databases
US8019761B2 (en) Recording medium storing a design support program, design support method, and design support apparatus
CN112199433A (zh) 一种用于城市级数据中台的数据治理系统
EP1315103B1 (en) File search method and apparatus, and index file creation method and device
CN103631842A (zh) 用于检测多列复合键列集合的方法和系统
US8145580B2 (en) Data management apparatus and method for managing data elements using a plurality of metadata elements
CN110799961A (zh) 在数据库中创建和删除租户的系统和方法
JP4832952B2 (ja) データベース解析システム及びデータベース解析方法及びプログラム
JP2004030221A (ja) 変更対象テーブル自動検出方法
JP6242540B1 (ja) データ変換システム及びデータ変換方法
JP5033322B2 (ja) 連結関係情報を用いた情報管理方法及び装置
JP5836893B2 (ja) ファイル管理装置、ファイル管理方法、及びプログラム
AU2003222783A1 (en) Method and apparatus for querying relational databases
JP6540384B2 (ja) 評価プログラム、手順書評価方法、および評価装置
KR101035037B1 (ko) 동적 임계값이 적용된 유사문서 분류화 장치 및 방법
CN111460257A (zh) 专题生成方法、装置、电子设备和存储介质
JP2014102625A (ja) 情報検索システム、プログラム、および方法
WO2004038582A1 (ja) データ処理方法およびデータ処理プログラム
JP7411489B2 (ja) 生産知識管理システム、生産知識管理方法及び生産知識管理プログラム
JP5954742B2 (ja) 文書を検索する装置及び方法
JP6852002B2 (ja) データ検索方法、データ検索装置及びプログラム
JP6123372B2 (ja) 情報処理システム、名寄せ判定方法及びプログラム
JP6677624B2 (ja) 分析装置、分析方法、および分析プログラム
JPH0934906A (ja) 図書管理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130305

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130402

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees