(57)【要約】【課題】データベースにおける複数のテーブルを類似するテーブルからなるグループに分類することにより、データベースの統合を容易にすることを目的とする。【解決手段】テーブル分類装置１は、データベースを構成するカラムの意味を考慮して分類を行う意味分類部２０と、カラムの統計的な情報に基づいて分類を行う統計分類部３０とを備える。上記意味分類部２０の分類方式と統計分類部３０の分類方式を組合せて階層的にテーブルを分類する。【選択図】図１
2010039593.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類装置であり、
処理装置により、上記複数のテーブルの各テーブルにおけるカラムの位置を含むカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第１の分類部と、
処理装置により、上記各テーブルにおけるカラムの位置以外のカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第２の分類部と、
上記第１の分類部と上記第２の分類部とにより分類された結果を出力装置へ出力する出力部と
を備えることを特徴とするテーブル分類装置。
【請求項２】
上記第２の分類部は、上記第１の分類部が同じグループに分類したテーブルをさらに分類する
ことを特徴とする請求項１に記載のテーブル分類装置。
【請求項３】
上記第１の分類部は、テーブルの先頭にある所定個のカラムが類似するか否かにより上記各テーブルが類似するかを判定する
ことを特徴とする請求項１又は２に記載のテーブル分類装置。
【請求項４】
上記第１の分類部は、テーブルの先頭にあるカラムが類似するか否かによりテーブルが類似するかを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類するとともに、
同一のグループに分類された複数のテーブルにおいて、各テーブルの２番目にあるカラムが類似するか否かにより上記同一のグループに分類された複数のテーブルの各テーブルが類似するかを判定して、判定した結果に従い上記同一のグループに分類された複数のテーブルをさらに複数のグループに分類する
ことを特徴とする請求項１から３までのいずれかに記載のテーブル分類装置。
【請求項５】
上記第２の分類部は、上記各テーブルが類似するカラムを有するか否かにより上記各テーブルが類似するか否かを判定する
ことを特徴とする請求項１から４までのいずれかに記載のテーブル分類装置。
【請求項６】
上記第２の分類部は、上記各テーブルが類似するカラムを有する場合に、上記類似するカラムが上記複数のテーブルのうち所定の数以上のテーブルに含まれる多頻出カラムであるか否かにより上記各テーブルが類似するか否かを判定する
ことを特徴とする請求項５に記載のテーブル分類装置。
【請求項７】
上記第２の分類部は、上記各テーブルが類似するカラムを１つ有するか否かによりテーブルが類似するかを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類するとともに、
同一のグループに分類された複数のテーブルにおいて、上記同一のグループに分類された複数のテーブルの各テーブルが類似するカラムを２つ有するか否かによりテーブルが類似するかを判定して、判定した結果に従い上記同一のグループに分類された複数のテーブルを複数のグループに分類する
ことを特徴とする請求項５又は６に記載のテーブル分類装置。
【請求項８】
上記第１の分類部と上記第２の分類部との少なくともいずれかは、カラムの所定の属性が同一であるか否かによりカラムが類似するか否かを判定する
ことを特徴とする請求項１から７までのいずれかに記載のテーブル分類装置。
【請求項９】
上記第１の分類部と上記第２の分類部との少なくともいずれかは、カラムの属性として、カラムタイプとサイズと精度との少なくともいずれかを用いる
ことを特徴とする請求項８に記載のテーブル分類装置。
【請求項１０】
上記第１の分類部と上記第２の分類部との少なくともいずれかは、カラムの属性として、さらにカラムの値としてＮＵＬＬ値を許すか否かを示す情報を用いる
ことを特徴とする請求項９に記載のテーブル分類装置。
【請求項１１】
上記第１の分類部と上記第２の分類部との少なくともいずれかは、カラムの属性として、さらにカラムがキー項目であるか否かを示す情報を用いる
ことを特徴とする請求項９又は１０に記載のテーブル分類装置。
【請求項１２】
複数のデータベースが有する複数のテーブルを分類するテーブル分類装置であり、
処理装置により、上記複数のテーブルの各テーブルにおいて同じ役割のカラムが類似するか否かにより上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する役割分類部と、
処理装置により、上記各テーブルにおけるカラムの役割に関係なく類似するカラムを有するか否かにより上記各テーブルが類似するかを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する統計分類部と、
上記役割分類部と上記統計分類部とにより分類された結果を出力装置へ出力する出力部と
を備えることを特徴とするテーブル分類装置。
【請求項１３】
複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類方法であり、
処理装置が、上記複数のテーブルの各テーブルにおけるカラムの位置を含むカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第１の分類ステップと、
処理装置が、上記各テーブルにおけるカラムの位置以外のカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第２の分類ステップと、
出力装置が、上記第１の分類ステップと上記第２の分類ステップとで分類された結果を出力する出力ステップと
を備えることを特徴とするテーブル分類方法。
【請求項１４】
複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類プログラムであり、
上記複数のテーブルの各テーブルにおけるカラムの位置を含むカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第１の分類処理と、
上記各テーブルにおけるカラムの位置以外のカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第２の分類処理と、
上記第１の分類処理と上記第２の分類処理とで分類された結果を出力する出力処理と
を備えることを特徴とするテーブル分類プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、データベースが有する複数のテーブルを分類する技術に関する。
【背景技術】
【０００２】
企業には様々なデータベースが混在しており、データベースは大規模化、複雑化している。企業内または企業間において、様々な種類のデータベースを統合する際には、データの整合性を図るため、同一の内容を表すテーブル若しくをカラムは統合する必要がある。そこで、まず、データベースやモデリングの専門化がデータベースの仕様書を調べた結果や、それぞれの組織に所属するスペシャリストの意見に基づき、類似しているテーブルやカラム、または冗長なテーブルやカラムの一覧表を作成する。そして、作成した一覧表に基づき、データベースを統合する。
近年、データベースの統合としてはスキーママッチングを支援するツールが開発されている。このツールは、類似した名称のテーブルやカラムを全社のデータベースの中から検索して、統合を支援するものである。
【０００３】
非特許文献１には、スキーマ統合という観点における統合の手法についての記載がある。非特許文献１では、テーブルを構成するカラムタイプの分類において、カラムのタイプや、キー項目か否かなどを考慮してカラム同士を比較する例が示されている。しかし、非特許文献１には、カラム同士を比較することについての記載はあるが、テーブルを構成するカラムのタイプ等に基づいてテーブル同士を比較することについての記載はない。
【非特許文献１】Ｒａｈｍ，Ｅ．  ａｎｄ  Ｂｅｒｎｓｔｅｉｎ，Ｐ．Ａ．：  Ａ  ｓｕｒｖｅｙ  ｏｆ  ａｐｐｒｏａｃｈｅｓ  ｔｏ  ａｕｔｏｍａｔｉｃ  ｓｃｈｅｍａ  ｍａｔｃｈｉｎｇ．  ＶＬＤＢ  Ｊ（１０）  ｐｐ．３３４−３５０，２００１
【発明の開示】
【発明が解決しようとする課題】
【０００４】
企業内または企業間のデータベースの統合においては、大規模な場合であれば数万にもおよぶカラムを比較し、数百、数千におよぶテーブルの中から、同一のカラムから構成されているテーブルや類似したカラムから構成されているテーブルを抽出する。そして、同一のカラムから構成されているテーブルは一方を削除し、類似したカラムから構成されているテーブルは統合するなどの処理が必要である。
しかし、カラム同士の類似性が分かったとしても、カラム同士の類似性の情報に基づいてテーブル同士が類似するか否かを判断することは容易ではない。例えば、同一のカラムＸを含むテーブルＡとテーブルＢがあるとする。ここで、テーブルＡではカラムＸは主キーであり、テーブルＢではカラムＸはテーブルＡを参照する外部キーである場合がある。この場合、テーブルＡとテーブルＢとが同一のカラムＸを含んでいたとしても、テーブルＡとテーブルＢとにおけるカラムＸの意味（役割）は異なる。つまり、テーブルＡとテーブルＢとは、同一のカラムＸを含んでいても、類似しているテーブルとは言えず統合の対象とはなり得ない。このように、単に一つ一つのカラムの同一性、類似性を比較するだけでは、テーブル構造としての同一性、類似性を判断することはできない。
本発明は、例えば、データベースにおける複数のテーブルを類似するテーブルからなるグループに分類することにより、データベースの統合を容易にすることを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係るテーブル分類装置は、例えば、複数のデータベースが有する複数のテーブルを複数のグループに分類するテーブル分類装置であり、
処理装置により、上記複数のテーブルの各テーブルにおけるカラムの位置を含むカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第１の分類部と、
処理装置により、上記各テーブルにおけるカラムの位置以外のカラム情報により上記各テーブルが類似するか否かを判定して、判定した結果に従い上記複数のテーブルを複数のグループに分類する第２の分類部と、
上記第１の分類部と上記第２の分類部とにより分類された結果を出力装置へ出力する出力部と
を備えることを特徴とする。
【発明の効果】
【０００６】
本発明に係るテーブル分類装置では、テーブルにおけるカラムの位置を含むカラム情報によりテーブルが類似するか否かを判定する。テーブルにおけるカラムの位置により、そのテーブルにおけるカラムの役割を判断することが可能である。したがって、本発明に係るテーブル分類装置によれば、テーブルにおけるカラムの役割を考慮してテーブルの類似性を判断し、テーブルを分類することができる。
【発明を実施するための最良の形態】
【０００７】
実施の形態１．
この実施の形態では、（１）テーブルにおけるカラムの意味（役割）を考慮してテーブルの類似性を判断し、テーブルを分類する意味分類方法と、（２）テーブルにおけるカラムの意味を考慮せずテーブルの類似性を判断し、テーブルを分類する統計分類方法との２つの分類方法を組合せたテーブルの分類方法について説明する。
【０００８】
図１は、テーブル分類装置１の機能を示す機能ブロック図である。
テーブル分類装置１は、企業内の様々なデータベースに格納されている複数のテーブルを、テーブルが有するカラムのタイプ、サイズ、精度（スケール）の類似度に基づき、複数のグループに分類する。
テーブル分類装置１は、リスト作成部１０、意味分類部２０（第１の分類部）、統計分類部３０（第２の分類部）、出力部４０を備える。
【０００９】
リスト作成部１０は、入力となるデータベースカタログを取り込む。リスト作成部１０は、データベースカタログとカラム対応表１４とを入力として、テーブルリスト１１とカラムリスト１２と多頻出カラムリスト１３とを処理装置により生成して、出力する。
【００１０】
意味分類部２０は、意味分類方法によりテーブルを分類する。意味分類部２０は、テーブルリスト１１とカラムリスト１２とを入力として、テーブルリスト１１が示す複数のテーブルを複数のグループに分類したテーブル意味分類表２１を処理装置により生成して、出力する。
意味分類部２０は、各テーブルにおけるカラムの位置に基づき、そのテーブルにおけるそのカラムの意味を判定する。また、意味分類部２０は、所定の意味を有するカラムが、そのテーブルにおいて重要なカラムであると判定する。意味分類部２０は、重要であると判定した所定の意味を有するカラムが類似するか否かにより、テーブルが類似するか否かを判定する。そして、意味分類部２０は、判定結果に従いテーブルを複数のグループに分類したテーブル意味分類表２１を生成する。
ここでは、意味分類部２０は、各テーブルの先頭付近のカラムは、キー項目である可能性が高く、重要なカラムであるとする。そして、意味分類部２０は、先頭付近のカラムが類似するか否かにより、テーブルを複数のグループに分類したテーブル意味分類表２１を生成する。
【００１１】
統計分類部３０は、統計分類方法によりテーブルを分類する。統計分類部３０は、テーブル意味分類表２１と多頻出カラムリスト１３とを入力として、意味分類部２０が同一のグループに分類したテーブルをさらに細かく分類したテーブル分類リスト３１を処理装置により生成して、出力する。
統計分類部３０は、テーブルにおけるそのカラムの意味は考慮せず、統計的に重要なカラムを判定する。統計分類部３０は、統計的に重要であると判定したカラムが共通するか否かにより、テーブルが類似するか否かを判定する。そして、統計分類部３０は、判定結果に従いテーブルを複数のグループに分類したテーブル分類リスト３１を生成する。
ここでは、統計分類部３０は、出現頻度の高いカラムは、重要なカラムであるとする。そして、出現頻度の高いカラムが共通するか否かにより、テーブルを複数のグループに分類したテーブル分類リスト３１を生成する。
特に、統計分類部３０は、意味分類部２０が同一のグループに分類した複数のテーブルを、さらに細かく分類する。
【００１２】
出力部４０は、意味分類部２０と統計分類部３０とにより分類された結果を出力装置へ出力する。つまり、出力部４０は、テーブル分類リスト３１を出力する。
【００１３】
なお、データベースカタログは、データベースを構成するテーブルのテーブル情報有する。データベースカタログは、一般のデータベースが有する情報である。ここでは、リスト作成部１０は、種類の異なる様々なデータベースのデータベースカタログ（図１では、データベースカタログ５０１、５０２、５０３）を入力としている。
【００１４】
次に、テーブルリスト１１、カラムリスト１２、多頻出カラムリスト１３、カラム対応表１４とについて説明する。また、テーブルリスト１１、カラムリスト１２、多頻出カラムリスト１３、カラム対応表１４との説明と併せて、リスト作成部１０の動作とについて説明する。
【００１５】
図２は、テーブルリスト１１を示す図である。テーブルリスト１１は、データベースに含まれるテーブルについての情報（テーブルノード１１１）と、テーブルに含まれるカラムについての情報（カラムノード１１２）とを有する。
図３は、テーブルリスト１１が有するテーブルノード１１１、カラムノード１１２を示す図である。図３（ａ）はテーブルノード１１１を示す図であり、図３（ｂ）はカラムノード１１２を示す図である。
【００１６】
まず、リスト作成部１０は、各データベースカタログから順次テーブルの情報を取得する。リスト作成部１０は、データベース標準のアプリケーションプログラムインタフェースなどを利用すれば、データベースカタログからテーブル情報を取得できる。
テーブルの情報は、テーブル名とテーブルを構成するカラムの情報とを有する。また、カラムの情報は、カラムのタイプ（例えば、文字型、数値型、日付型など）、サイズ、スケール（精度）、キー情報（主キー、外部キーなど）、ＮＵＬＬが許されるか否かなどの情報を有する。
【００１７】
次に、リスト作成部１０は、入手したテーブルの情報からテーブルリスト１１を構成するテーブルノード１１１およびカラムノード１１２を作成する。
テーブルノード１１１は、ノード識別番号１１３、ノード名１１４、ノードタイプ１１５を備える。ノード識別番号１１３には、ノードを一意に識別するための識別子が格納される。ノード名１１４には、テーブル名が格納される。ノードタイプ１１５には、テーブルを識別するための識別子が格納される。
カラムノード１１２には、ノード識別番号１１３、ノード名１１４、ノードタイプ１１５、カラムタイプ１１６、サイズ１１７、スケール１１８、キー情報１１９（キー項目か否か）、ＮＵＬＬ値の可否１２０（ＮＵＬＬ値が許されるカラムか否か）を有する。ノード識別番号１１３には、ノードを一意に識別するための識別子が格納される。ノード名１１４には、カラム名が格納される。ノードタイプ１１５には、カラムを識別するための識別子が格納される。また、カラムタイプ１１６、サイズ１１７、スケール１１８、キー情報１１９、ＮＵＬＬ値の可否１２０には、そのカラムの設定情報が格納される。
【００１８】
そして、リスト作成部１０は、各テーブルについて、テーブルノード１１１からテーブルに属するカラムノード１１２を、そのテーブルにおけるカラムの並び順に従いリストで接続する。全てのテーブルについてテーブルノード１１１とカラムノード１１２とを作成した後、リスト作成部１０は、各テーブルノード１１１をリストで接続する。これにより、テーブルリスト１１が作成される。
【００１９】
図４は、カラム対応表１４を示す図である。
カラム対応表１４は、種類の異なるデータベース間のカラムの対応関係を示す情報である。
企業内で利用している種類の異なる様々なデータベース管理システムによって、カラムの型の定義が異なる。そこで、リスト作成部１０は、カラム対応表１４により種類の異なるデータベース間のカラムの対応を識別する。
カラム対応表１４は、ＤＢ種別１４１（データベース種別）、固有カラムタイプ１４２、共通カラムタイプ１４３を有する。
ＤＢ種別１４１には、個別のデータベース管理システム名（例えばＯｒａｃｌｅ（登録商標）、ＩＢＭ  ＤＢ２（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）  ＳＱＬＳｅｒｖｅｒなど）が格納される。
固有カラムタイプ１４２には、各データベース管理システムで定義されているカラムタイプが格納される。
共通カラムタイプ１４３には、データベース管理システム毎の個別のデータタイプを共通的に扱うためのカラムタイプを示す情報であって、固有カラムタイプ１４２に格納されたカラムタイプに対応する情報が格納される。
【００２０】
図５は、カラムリスト１２を示す図である。
カラムリスト１２は、全てのテーブルに存在するカラムの一覧情報である。カラムリスト１２は、カラム番号１２１、カラムタイプ１２２、サイズ１２３、スケール１２４、出現回数１２５を有する。
リスト作成部１０は、テーブルリスト１１およびカラム対応表１４を入力として、カラムリスト１２を作成する。ここでは、リスト作成部１０は、カラムタイプ、サイズ、スケールが同一であるカラムは同一のカラムであると扱い、カラムリスト１２を作成する。
リスト作成部１０は、テーブルリスト１１の先頭のテーブルノード１１１から順に各カラムノード１１２のカラムタイプ１１６、サイズ１１７、スケール１１８を取得する。次に、リスト作成部１０は、カラム対応表１４に基づき、取得したカラムタイプ１１６を共通カラムタイプ１４３に変換する。そして、リスト作成部１０は、カラムリスト１２に新たなレコードを追加する。リスト作成部１０は、追加したレコードのカラム番号１２１に任意の値を格納し、カラムタイプ１２２に取得した共通カラムタイプ１４３を格納し、サイズ１２３に取得したサイズ１１７を格納し、スケール１２４に取得したスケール１１８を格納し、出現回数１２５に１を格納する。
なお、リスト作成部１０は、既にカラムリスト１２に同一のカラムが存在する場合には、そのカラムの出現回数１２５をインクリメントする。
【００２１】
図６は、多頻出カラムリスト１３を示す図である。
多頻出カラムリスト１３は、カラムリスト１２が示す複数のカラムのうち、出現頻度の高いカラムについての情報である。多頻出カラムリスト１３は、出現順位１３１、カラム番号１３２、出現回数１３３、出現率１３４を有する。
リスト作成部１０は、カラムリスト１２を入力として、多頻出カラムリスト１３を作成する。リスト作成部１０は、最低出現率を定義し、最低出現率以上のカラムを出現率の順番にソートして多頻出カラムリスト１３を作成する。ここでは、最低出現率を２．０％とした。
なお、出現率とは、全テーブルのうち、そのカラムが含まれているテーブルの割合である。つまり、「出現率＝そのカラムを含むテーブル数／全テーブルの数」である。
【００２２】
次に、意味分類部２０の動作について説明する。
図７は、意味分類部２０の動作を示すフローチャートである。
意味分類部２０は、先頭の幾つか（所定個）のカラムが同一のカラムタイプ、サイズ、スケールで構成されるテーブルを同一のグループに分類する。これは、先頭にある幾つかのカラムはキー項目の可能性が高く、意味的に重要なカラムである可能性が高いためである。
なお、以下の説明において、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭは、意味分類方法によりどの程度まで細かく分類するかを決定するパラメータである。例えば、以下の説明では、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭを２０と定義する。ＲＥＣＵＲＳＩＶＥ＿ＮＵＭを２０と定義した場合、１つのグループに属するテーブルの数が２０より多いときには、さらにそのグループを細かく分類することを試みる。
【００２３】
＜Ｓ１＞：意味分類部２０は、テーブルリスト１１を入力として処理を開始する。なお、テーブルリスト１１のテーブルノード１１１は、そのテーブルノード１１１を構成するカラムノード１１２のカラムタイプ１１６、サイズ１１７、スケール１１８でソートされているものとする。
＜Ｓ２＞：意味分類部２０は、変数Ｘに１を代入する。変数Ｘは、先頭から何個目までが同一のカラムノード１１２であれば、テーブルノード１１１を同一のグループに分類するかを決定するものである。つまり、変数Ｘが１なら、先頭１個のカラムノード１１２が同一のテーブルノード１１１を同一のグループに分類することを意味する。
＜Ｓ３＞：意味分類部２０は、全てのテーブルノード１１１を仮想的なルートグループに接続する。また、意味分類部２０は、ルートグループをＸの未処理リストに登録する。
＜Ｓ４＞：意味分類部２０は、Ｘの未処理リストに登録されているノードがあるか否か判定する。未処理リストに登録されているノードがない場合（Ｓ４でＮＯ）、意味分類部２０は＜Ｓ１２＞へ進み、処理を終了する。一方、未処理リストに登録されているノードがある場合（Ｓ４でＹＥＳ）、意味分類部２０は＜Ｓ５＞へ進む。
＜Ｓ５＞：意味分類部２０は、グループ内で先頭からＸ番目のカラムノード１１２までが同一のテーブルノード１１１を仮グループとして一時的にグループ化する。
ここで、意味分類部２０は、カラムノード１１２が同一か否か比較するため、まずカラムノード１１２のカラムタイプ１１６（データベース固有のカラムタイプ）をカラム対応表１４を用いて共通カラムタイプ１４３に変換する。次に、意味分類部２０は、変換した共通カラムタイプ１４３と、カラムノード１１２のサイズ１１７、スケール１１８とに基づき、カラムリスト１２からカラム番号１２１を取得する。そして、意味分類部２０は、取得したカラム番号１２１が同一か否かを比較して、カラムノード１１２が同一か否かを判定する。
＜Ｓ６＞：意味分類部２０は、仮グループに含まれるテーブルノード１１１の数がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満か否か判定する。テーブルノード１１１の数がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ以上である場合（Ｓ６でＮＯ）、意味分類部２０は、＜Ｓ７＞へ進む。一方、テーブルノード１１１の数がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満である場合（Ｓ６でＹＥＳ）、意味分類部２０は、＜Ｓ８＞へ進む。
＜Ｓ７＞：意味分類部２０は、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭ以上のであった仮グループを本グループとする。つまり、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭ以上のであった仮グループは、一時的な仮グループではなく、本グループとしてグループ化する。また、意味分類部２０は、Ｘ＋１の未処理リストに登録する。グループ化されたテーブルノード１１１は、Ｘ＋１の未処理リストに登録されることにより、さらに分類される対象となる。
＜Ｓ８＞：一方、意味分類部２０は、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満であった仮グループのグループ化を解除する。つまり、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満であった仮グループはグループ化しない。その仮グループに属していたテーブルノード１１１を処理済リストに繋ぐ。つまり、グループ化されなかったテーブルノード１１１についてのグループ分けは終了となる。
＜Ｓ９＞：意味分類部２０は、Ｘの未処理リストに繋がれた全ての仮グループについて処理が済んだか否かを判定する。全ての仮グループについて処理が済んでいない場合（Ｓ９でＮＯ）、意味分類部２０は＜Ｓ１０＞へ進む。一方、全ての仮グループについて処理が済んだ場合（Ｓ９でＹＥＳ）、意味分類部２０は＜Ｓ１１＞へ進む。
＜Ｓ１０＞：意味分類部２０は、全ての仮グループについて処理が済んでいないため、次の仮グループについて処理を実行する。
＜Ｓ１１＞：一方、意味分類部２０は、全ての仮グループについて処理が済んだため、Ｘをインクリメント（＋１）して＜Ｓ４＞へ戻る。つまり、意味分類部２０は、グループ化されたテーブルノード１１１をさらにグループ分けする。
＜Ｓ１２＞：意味分類部２０は、処理を終了する。
【００２４】
次に、図８から図１２までに基づき、意味分類部２０の動作の一例を説明する。図８から図１２までは、意味分類部２０によるテーブル分類を説明するための図である。
【００２５】
＜Ｓ１＞では、意味分類部２０は、テーブルリスト１１を入力として処理を開始する。なお、各テーブルノード１１１は、テーブルノード１１１を構成するカラムノード１１２のカラムタイプ１１６、サイズ１１７、スケール１１８でソートされている。
次に、＜Ｓ２＞では、意味分類部２０は、変数Ｘに１を代入する。
次に、＜Ｓ３＞では、意味分類部２０は、全てのテーブルノード１１１を仮想的なルートグループに接続する。また、意味分類部２０は、ルートグループをＸの未処理リストに登録する。つまり、図８に示すように、テーブルリスト１１が示す各テーブルノード１１１がルートグループに接続される。また、ルートグループがＸ＝１の未処理リストに登録されるため、全てのテーブルノード１１１がＸ＝１の未処理リストに登録された状態となる。
次に、＜Ｓ４＞では、意味分類部２０は、Ｘの未処理リストに繋がっているノードがあるか否か判定する。ここでは、図８に示すテーブルノード１１１が未処理リストに接続されているため、＜Ｓ５＞へ進む。
【００２６】
＜Ｓ５＞では、意味分類部２０は、グループ内で先頭からＸ（＝１）番目のカラムノード１１２までが同一のテーブルノード１１１を仮グループとして一時的にグループ化する。
ここでは、Ｘが１であるため、先頭の１つのカラムノード１１２が同一であるテーブルノード１１１を同一の仮グループに分類する。図９に示すように、Ｍ個の仮グループに分類されたとする。
【００２７】
次に、意味分類部２０は、＜Ｓ６＞から＜Ｓ１０＞までを繰り返し、各仮グループに含まれるテーブルノード１１１の数がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）未満か否か順に判定する。意味分類部２０は、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭ以上のであった仮グループを本グループとして、Ｘ＋１の未処理リストに登録し、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満であった仮グループのグループ化を解除して処理済リストに登録する。
ここでは、仮グループ１，２，３・・・は、テーブルノード１１１の数がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ以上であり、仮グループＭは、テーブルノード１１１の数がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満であったとする。つまり、仮グループ１，２，３・・・は、本グループとしてグループ化される。一方、仮グループＭは、本グループとはならず、処理済となる。すなわち、図１０に示すように、ルートグループに各本グループが接続され、各本グループにそのグループに属するテーブルノード１１１が接続される。また、本グループとならなかった仮グループＭに属するテーブルノード１１１は、ルートグループに接続されたまま（つまり、グループ化されないまま）処理済となる。
なお、ルートグループに接続された各本グループがＸ＋１（＝２）の未処理リスト登録され、ルートグループに接続されたままのテーブルノード１１１が処理済リストに登録される。
【００２８】
次に、＜Ｓ１１＞では、意味分類部２０は、Ｘをインクリメント（＋１）して＜Ｓ４＞へ戻る。
＜Ｓ４＞では、意味分類部２０は、Ｘ（＝２）の未処理リストにはノードが登録されてため、＜Ｓ５＞へ進む。＜Ｓ５＞では、意味分類部２０は、Ｘが２であるため、先頭の２つのカラムノード１１２が同一であるテーブルノード１１１を１つの仮グループに分類する。つまり、図１１に示すように、各本グループに接続されたテーブルノード１１１がいくつかの仮グループに分類される。つまり、Ｘをインクリメントして各本グループをさらに分類することで、階層的な分類を実現する。次に、意味分類部２０は、＜Ｓ６＞から＜Ｓ１０＞までを繰り返し、各仮グループに属するテーブルノード１１１の数がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満か否かを判定する。意味分類部２０は、その判定結果により、各仮グループを本グループとして分類するか処理済とするか決定する。そして、意味分類部２０は、全ての仮グループについて処理が完了すると、さらに次の階層の分類を行う。最終的に、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭより多いテーブルノード１１１を有する仮グループが１つもできなくなると、処理が終了する。
【００２９】
ここでは、例えば、図１２に示すようにテーブルノード１１１が分類されたとする。図１３は、図１２に示したテーブルノード１１１の分類を表したテーブル意味分類表２１を示す図である。
テーブル意味分類表２１は、グループを識別するためのグループ番号、グループに属するテーブルノード１１１に共通の１番目のカラムノード１１２のカラム番号、２番目のカラムのカラム番号、…、Ｎ番目のカラムのカラム番号およびそのグループに属するテーブルノード１１１の識別子のリストを有する。
なお、先頭から何番目のカラムノード１１２でグループ化されるかは、図７のフローチャートでＲＥＣＵＲＳＩＶＥ＿ＮＵＭ未満になるＸの値で決まり、グループ毎に異なる。
【００３０】
例えば、グループ番号１のグループは、１番目（先頭）のカラムノード１１２がカラム番号２のテーブルノード１１１で構成されるグループである。このグループは、１番目（先頭）のカラムノード１１２がカラム番号２のテーブルノード１１１がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）以上存在したため、グループ化されている。しかし、グループ番号１のグループにおいて、２番目（先頭から２つ目）のカラムノード１１２まで同一のテーブルノード１１１はＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）未満であったため、１番目（先頭）のカラムノード１１２によるグループ化で終了している。
【００３１】
また、例えば、グループ番号２のグループは、１番目のカラムノード１１２がカラム番号４のテーブルノード１１１で構成されるグループである。このグループは、１番目のカラムノード１１２がカラム番号４のテーブルノード１１１がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）以上存在したため、グループ化されている。
さらに、２番目のカラムノード１１２がカラム番号６のテーブルノード１１１と、２番目のカラムノード１１２がカラム番号７のテーブルノード１１１とがＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）以上存在した。そのため、グループ番号２のグループがさらに、グループ番号２１とグループ番号２２としてグループ化されている。しかし、２番目のカラムノード１１２がカラム番号６若しくは７以外のテーブルノード１１１はいずれもＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）未満であった。そのため、２番目のカラムノード１１２がカラム番号６若しくは７以外のテーブルノード１１１は、それ以上はグループされず、１番目のカラムノード１１２によるグループ化で終了している。
また、さらに、グループ番号２１のグループにおいて、３番目（先頭から３つ目）のカラムノード１１２まで同一のテーブルノード１１１はＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）未満であったため、２番目（先頭）のカラムノード１１２によるグループ化で終了している。
グループ番号２２のグループでは、３番目のカラムノード１１２がカラム番号６のテーブルノード１１１がＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）以上存在した。そのため、グループ番号２２のグループがさらに、グループ番号２２１としてグループ化されている。しかし、３番目のカラムノード１１２がカラム番号６以外のテーブルノード１１１はいずれもＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）未満であった。そのため、３番目のカラムノード１１２がカラム番号６以外のテーブルノード１１１は、それ以上はグループされず、２番目のカラムノード１１２によるグループ化で終了している。
グループ番号２２１のグループにおいて、４番目（先頭から４つ目）のカラムノード１１２まで同一のテーブルノード１１１はＲＥＣＵＲＳＩＶＥ＿ＮＵＭ（＝２０）未満であったため、３番目（先頭）のカラムノード１１２によるグループ化で終了している。
【００３２】
次に、統計分類部３０の動作について説明する。
図１４は、統計分類部３０の動作を示すフローチャートである。
ここでは、統計分類部３０は、多頻出カラムリスト１３に登録された出現頻度の高いカラムであって、同一のカラムを有するテーブルを同一のグループに分類する。これは、出現率の高いカラムは、そのデータベースにおいて重要なカラムであると考えられるためである。
【００３３】
＜Ｓ３１＞：統計分類部３０は、テーブル意味分類表２１を入力として、各グループに属するテーブルノード１１１の数がＬＯＷ＿ＬＥＶＥＬ＿ＮＵＭ（例えば、１０）以上の最下位グループを抽出する。
最下位グループとは、意味分類部２０によるグループ化において、それより下位のグループが存在しないグループのことである。つまり、図１３に示すテーブル意味分類表２１であれば、グループ番号１のグループ、グループ番号２１のグループ、グループ番号２２１のグループ、・・・である。
＜Ｓ３２＞：統計分類部３０は、＜Ｓ３１＞で抽出した全てのグループを統計分類未処理リストに登録する。
＜Ｓ３３＞：統計分類部３０は、変数ｙに１を代入する。
＜Ｓ３４＞：統計分類部３０は、統計分類未処理リストに登録されたグループであって、まだ処理されていないグループを１つ選択する。
また、統計分類部３０は、選択したグループのテーブルノード１１１に属するカラムノード１１２のカラム番号を全て抽出する。さらに、統計分類部３０は、抽出したカラム番号の中で多頻出カラムリスト１３に登録されているものを抽出する。そして、統計分類部３０は、抽出したカラム番号をｙ未処理リストに登録する。
＜Ｓ３５＞：統計分類部３０は、ｙ未処理リストの中から、ｙ個のカラムの組合せ（ｙ個のカラム番号の組合せ）を１つ抽出する。統計分類部３０は、選択したグループに属する各テーブルノード１１１におけるｙ個のカラムの組合せが出現する割合（以下、支持度と呼ぶ）を計算する。ここでは、選択したグループのうち、そのグループのグループ化に使用した先頭のカラムノード１１２を除いたカラムノード１１２に抽出した組合せが出現する割合を支持度とする。
＜Ｓ３６＞：統計分類部３０は、＜Ｓ３５＞で計算した支持度が所定の最低支持度（例えば、５％）未満か否かを判定する。最低支持度以上の場合（Ｓ３６でＮＯ）、統計分類部３０は＜Ｓ３７＞へ進む。最低支持度未満の場合（Ｓ３６でＹＥＳ）、統計分類部３０は＜Ｓ３８＞へ進む。
＜Ｓ３７＞：統計分類部３０は、最低支持度以上のカラムの組合せを含むテーブルノード１１１をグループ化する。そして、統計分類部３０は、そのカラムの組合せをｙ＋１の未処理リストに登録する。
＜Ｓ３８＞：一方、統計分類部３０は、最低支持度未満のカラムの組合せを処理済みリストに登録する。
＜Ｓ３９＞：統計分類部３０は、ｙ未処理リストの全ての組合せについて支持度を計算済か否かを判定する。全ての組合せについて支持度を計算済でない場合（Ｓ３９でＮＯ）、＜Ｓ４０＞へ進む。一方、全ての組合せについて支持度を計算済である場合（Ｓ３９でＹＥＳ）、＜Ｓ４１＞へ進む。
＜Ｓ４０＞：統計分類部３０は、次の組合せの支持度を計算して＜Ｓ３６＞へ戻る。
＜Ｓ４１＞：統計分類部３０は、ｙ＋１未処理リストに２つ以上の組合せがあるか否かを判定する。２つ以上の組合せがある場合（Ｓ４１でＹＥＳ）、＜Ｓ４２＞へ進む。一方、２つ以上の組合せがない場合（Ｓ４１でＮＯ）、＜Ｓ４３＞へ進む。
＜Ｓ４２＞：統計分類部３０は、ｙをインクリメントして、＜Ｓ３６＞へ戻る。
＜Ｓ４３＞：統計分類部３０は、統計分類未処理リストに登録された全てのグループを＜Ｓ３４＞で選択したか否かを判定する。全てのグループを選択済みでない場合、（Ｓ４３でＮＯ）、＜Ｓ３３＞へ戻り未処理のグループを選択する。一方、全てのグループを選択済みの場合（Ｓ４３でＹＥＳ）、処理を終了する。
【００３４】
次に、図１５から図２６までに基づき、統計分類部３０の動作の一例を説明する。図１５から図２６までは、統計分類部３０によるテーブル分類を説明するための図である。
＜Ｓ３１＞では、統計分類部３０は、図１３に示すテーブル意味分類表２１を入力として、各グループに属するテーブルノード１１１の数がＬＯＷ＿ＬＥＶＥＬ＿ＮＵＭ（例えば、１０）以上の最下位グループを抽出する。
ここでは、統計分類部３０は、グループ番号１のグループ、グループ番号２１のグループ、グループ番号２２１のグループ、グループ番号２２２のグループ、・・・を抽出する。
次に、＜Ｓ３２＞では、統計分類部３０は、＜Ｓ３１＞で抽出したグループを統計分類未処理リストに登録する。
また、＜Ｓ３３＞では、統計分類部３０は、変数ｙに１を代入する。
【００３５】
次に、＜Ｓ３４＞では、統計分類部３０は、統計分類未処理リストに登録されたグループであって、まだ処理されていないグループを１つ選択する。ここでは、グループ番号２２１のグループを選択したとする。
図１５は、テーブル意味分類表２１のグループ番号２２１のグループに属するテーブルノード１１１の一例を示す図である。なお、図１５では、説明の簡単のため、グループ番号２２１のグループに属するテーブルノード１１１の識別子を、図８から図１３までに示す識別子とは変更している。つまり、図１５では、先頭のカラムノード１１２がカラム番号４（カラムタイプがｃｈａｒ（３２））、２番目のカラムノード１１２がカラム番号７（カラムタイプがｉｎｔ）、３番目のカラム番号がカラム番号６（カラムタイプがｃｈａｒ（２５６））の１５個のテーブルノード１１１（テーブル１からテーブル１５まで）がグループ番号２２１のグループに属しているものとする。また、図７に示すフローチャートでは、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭを２０としたため、本来グループ番号２２１のグループには２０以上のテーブルノード１１１が属しているはずである。しかし、ここでは、説明の簡単のため、グループ番号２２１のグループには１５個のテーブルノード１１１が属しているものとする。つまり、図１６に示すように、グループ番号２２１のグループが形成されているものとする。
また、統計分類部３０は、選択したグループ内のテーブルノード１１１に属するカラムノード１１２のカラム番号を全て抽出して、抽出したカラム番号の中で多頻出カラムリスト１３に登録されているものを抽出する。そして、統計分類部３０は、抽出したカラム番号をｙ未処理リストに登録する。ここでは、多頻出カラムリストに登録されているカラムとして、カラム番号５（ｃｈａｒ（６４））が抽出されたとする。つまり、カラム番号５（ｃｈａｒ（６４））がｙ未処理リストに登録されたとする。
【００３６】
次に、＜Ｓ３５＞では、統計分類部３０は、ｙ（＝１）未処理リストの中から、ｙ（＝１）個のカラムの組合せを１つ抽出する。ここでは、カラム番号５（ｃｈａｒ（６４））が抽出される。
また、統計分類部３０は、カラム番号５（ｃｈａｒ（６４））の支持度を計算する。図１５に示す１５個のテーブルノード１１１のうち、７個のテーブルノード１１１でカラム番号５（ｃｈａｒ（６４））のカラムノード１１２が含まれている。そのため、支持度は「７／１５＝４６．７％」である。なお、このグループは、先頭から３つ目までのカラムノード１１２によりグループ化されているため、先頭から４つ目以降のカラムノード１１２にカラム番号５（ｃｈａｒ（６４））が含まれているテーブルノード１１１の割合を支持度として計算した。なお、図１７は、グループ番号２２１のグループに属する１５個のテーブルノード１１１のうち、カラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１を示す図である。
【００３７】
次に、＜Ｓ３６＞では、統計分類部３０は、＜Ｓ３５＞で計算した支持度が所定の最低支持度未満か否かを判定する。ここでは、最低支持度を５％としたため、カラム番号５（ｃｈａｒ（６４））の支持度は最低支持度を上回っている（Ｓ３６でＮＯ）。したがって、＜Ｓ３７＞へ進む。
【００３８】
＜Ｓ３７＞では、統計分類部３０は、カラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１をグループ化する。また、カラム番号５（ｃｈａｒ（６４））をｙ＋１未処理リストに登録する。
つまり、図１８に示すように、グループ番号２２１のグループが、さらに分類される。すなわち、グループ番号２２１のグループ内に、カラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１のグループが形成される。
【００３９】
＜Ｓ３９＞では、統計分類部３０は、全ての組合せについて支持度を計算済であるため、＜Ｓ４１＞へ進む。また、＜Ｓ４１＞では、統計分類部３０は、ｙ＋１未処理リストに２つ以上の組合せがないため、＜Ｓ４３＞へ進む。つまり、グループ番号２２１のグループの処理を終了する。
＜Ｓ４３＞では、統計分類部３０は、選択されていないグループが存在するため、＜Ｓ３３＞へ戻りグループ番号２２１のグループ以外のグループについても処理を行う。
【００４０】
続いて、＜Ｓ３３＞で、統計分類部３０は改めて変数ｙに１を代入する。
次に、＜Ｓ３４＞では、統計分類部３０は、統計分類未処理リストに登録されたグループであって、まだ処理されていないグループを１つ選択する。ここでは、グループ番号３２のグループを選択したとする。
図１９は、テーブル意味分類表２１のグループ番号３２のグループに属するテーブルノード１１１の一例を示す図である。図１９では、説明の簡単のため、グループ番号３２のグループに属するテーブルノード１１１の識別子を、図８から図１３までに示す識別子とは変更している。つまり、図１９では、先頭のカラムノード１１２がカラム番号７（カラムタイプがｉｎｔ）、２番目のカラムノード１１２がカラム番号６（カラムタイプがｃｈａｒ（２５６））の１８個のテーブルノード１１１（テーブル１からテーブル１８まで）がグループ番号３２のグループに属しているものとする。また、図７に示すフローチャートでは、ＲＥＣＵＲＳＩＶＥ＿ＮＵＭを２０としたため、本来グループ番号２２１のグループには２０以上のテーブルノード１１１が属しているはずである。しかし、ここでは、説明の簡単のため、グループ番号３２のグループには１８個のテーブルノード１１１が属しているものとする。つまり、図２０に示すように、グループ番号３２のグループが形成されているものとする。
また、多頻出カラムリストに登録されているカラムとして、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））とが抽出されたとする。つまり、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））とがｙ未処理リストに登録されたとする。
【００４１】
次に、＜Ｓ３５＞で、統計分類部３０は、ｙ（＝１）未処理リストの中から、ｙ（＝１）個のカラムの組合せを１つ抽出する。ここでは、カラム番号４（ｃｈａｒ（３２））が抽出されたとする。
また、統計分類部３０は、カラム番号４（ｃｈａｒ（３２））の支持度を計算する。図１９に示す１８個のテーブルノード１１１のうち、１３個のテーブルノード１１１でカラム番号４（ｃｈａｒ（３２））のカラムノード１１２が含まれている。そのため、支持度は「１２／１８＝６７％」である。なお、このグループは、先頭から２つ目までのカラムノード１１２によりグループ化されているため、先頭から３つ目以降のカラムノード１１２にカラム番号４（ｃｈａｒ（３２））が含まれているテーブルノード１１１の割合を支持度として計算した。なお、図２１は、グループ番号３２のグループに属する１８個のテーブルノード１１１のうち、カラム番号４（ｃｈａｒ（３２））を含むテーブルノード１１１を示す図である。
【００４２】
次に、＜Ｓ３６＞では、統計分類部３０は、＜Ｓ３５＞で計算した支持度が所定の最低支持度未満か否かを判定する。ここでは、最低支持度を５％としたため、カラム番号４（ｃｈａｒ（３２））の支持度（７２％）は最低支持度（５％）を上回っている（Ｓ３６でＮＯ）。したがって、＜Ｓ３７＞へ進む。
【００４３】
＜Ｓ３７＞では、支持度が最低支持度以上であるため、カラム番号４（ｃｈａｒ（３２））を含むテーブルノード１１１をグループ化する。また、カラム番号４（ｃｈａｒ（３２））をｙ＋１（ｙ＝２）未処理リストに登録する。
【００４４】
＜Ｓ３９＞では、ｙ未処理リストの全ての組合せについての支持度の計算は終わっていないため、＜Ｓ４０＞へ進む。
＜Ｓ４０＞では、次のカラム、つまりカラム番号５（ｃｈａｒ（６４））の支持度を計算する。図１９に示す１８個のテーブルノード１１１のうち、１０個のテーブルノード１１１でカラム番号５（ｃｈａｒ（６４））のカラムノード１１２が含まれている。そのため、支持度は「１０／１８＝５５．６％」である。なお、このグループは、先頭から２つ目までのカラムノード１１２によりグループ化されているため、先頭から３つ目以降のカラムノード１１２にカラム番号５（ｃｈａｒ（６４））が含まれているテーブルノード１１１の割合を支持度として計算した。なお、図２２は、グループ番号３２のグループに属する１８個のテーブルノード１１１のうち、カラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１を示す図である。
続いて、＜Ｓ３６＞では、計算した支持度が最低支持度未満か否かは判定すると、カラム番号５（ｃｈａｒ（６４））の支持度（５５．６％）は最低支持度（５％）を上回っている（Ｓ３６でＮＯ）。したがって、＜Ｓ３７＞へ進む。
【００４５】
＜Ｓ３７＞では、支持度が最低支持度以上であるため、カラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１をグループ化する。また、カラム番号５（ｃｈａｒ（６４））をｙ＋１（ｙ＝２）未処理リストに登録する。
つまり、図２３に示すように、グループ番号３２のグループが、さらに分類される。すなわち、この時点で、グループ番号３２のグループ内に、カラム番号４（ｃｈａｒ（３２））を含むテーブルノード１１１のグループとカラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１のグループとが形成されている。
【００４６】
＜Ｓ３９＞では、ｙ未処理リストの全ての組合せについての支持度の計算は終わっているため、＜Ｓ４１＞へ進む。
＜Ｓ４１＞では、ｙ＋１（ｙ＝２）未処理リストには２つ（カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４）））があるため（Ｓ４１でＹＥＳ）、＜Ｓ４２＞へ進む。そして、＜Ｓ４２＞でｙをインクリメントして、＜Ｓ３５＞へ戻る。
【００４７】
＜Ｓ３５＞では、ｙ未処理リストに登録されたｙ個（２個）のカラムとして、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））とを抽出する。そして、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））とを両方を含む割合（支持度）を計算する。図１９に示す１８個のテーブルノード１１１のうち、６個のテーブルノード１１１でカラム番号５（ｃｈａｒ（６４））のカラムノード１１２が含まれている。そのため、支持度は「６／１８＝３３．３％」である。なお、このグループは、先頭から２つ目までのカラムノード１１２によりグループ化されているため、先頭から３つ目以降のカラムノード１１２に（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との両方が含まれているテーブルノード１１１の割合を支持度として計算した。なお、図２４は、グループ番号３２のグループに属する１８個のテーブルノード１１１のうち、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との両方を含むテーブルノード１１１を示す図である。
次に、＜Ｓ３６＞では、統計分類部３０は、＜Ｓ３５＞で計算した支持度が所定の最低支持度未満か否かを判定する。ここでは、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との支持度（３３．３％）は最低支持度（５％）を上回っている（Ｓ３６でＮＯ）。したがって、＜Ｓ３７＞へ進む。
【００４８】
＜Ｓ３７＞では、支持度が最低支持度以上であるため、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との両方を含むテーブルノード１１１をグループ化する。また、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との組合せをｙ＋１（ｙ＝３）未処理リストに登録する。
つまり、図２５に示すように、グループ番号３２に形成されたカラム番号４（ｃｈａｒ（３２））を含むグループとカラム番号５（ｃｈａｒ（６４））を含むグループとが、さらに分類される。すなわち、グループ番号３２に形成されたカラム番号４（ｃｈａｒ（３２））を含むグループとカラム番号５（ｃｈａｒ（６４））を含むグループとに、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との両方を含むテーブルノード１１１のグループが形成されている。
＜Ｓ３９＞では、統計分類部３０は、全ての組合せについて支持度を計算済であるため、＜Ｓ４１＞へ進む。また、＜Ｓ４１＞では、統計分類部３０は、ｙ＋１未処理リストに２つ以上の組合せがないため、＜Ｓ４３＞へ進む。つまり、グループ番号３２のグループの処理を終了する。
この後、他のグループについても同様に処理を行い、全てのグループについての処理が済むと（Ｓ４３でＹＥＳ）、統計分類部３０の処理が終了する。
【００４９】
なお、上記説明では、図２３に示すように、カラム番号４（ｃｈａｒ（３２））を含むテーブルノード１１１のグループとカラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１のグループとには、テーブルノード１１１が重複していた。つまり、１つのテーブルノード１１１が複数のグループに分類される場合があった。
しかし、１つのテーブルノード１１１が複数のグループに分類されないように分類するとしてもよい。例えば、＜Ｓ４０＞で支持度を計算する場合や＜Ｓ３７＞でグループ化する場合に、既に他のグループに分類されているテーブルノード１１１は対象外としてもよい。つまり、上記グループ番号３２の例であれば、カラム番号４（ｃｈａｒ（３２））を含むテーブルノード１１１のグループに分類されたテーブルノード１１１は、カラム番号５（ｃｈａｒ（６４））についての支持度の計算や、カラム番号５（ｃｈａｒ（６４））を含むグループに分類する場合に対象外としてもよい。すなわち、カラム番号５（ｃｈａｒ（６４））についての支持度の計算においては、カラム番号４（ｃｈａｒ（３２））を含むテーブルノード１１１のグループに分類された１２個のテーブルノード１１１を除いた６個のテーブルノード１１１のうち、いくつのテーブルノード１１１にカラム番号５（ｃｈａｒ（６４））が含まれているかにより計算するとしてもよい。つまり、図２６に示すように、カラム番号５（ｃｈａｒ（６４））を含むグループに分類されるテーブルノード１１１数は減少する。
この場合、＜Ｓ３５＞で先に選択されたカラムの組合せが優先的に考慮された分類結果となる。そのため、例えば、＜Ｓ３５＞では出現頻度の高いカラムの組合せから順に選択するとしてもよい。
【００５０】
このように、この実施の形態に係るテーブル分類装置１は、意味分類方法と統計分類方法とを組合せている。これにより、機械的な分類よりも、ユーザが意図する分類に近い効果的な分類を効率的に実施することができる。
【００５１】
実施の形態２．
実施の形態１では、統計分類部３０はカラムの重複は許さずに処理を行った。つまり、実施の形態１では、＜Ｓ３５＞において統計分類部３０は、２つ以上のカラムの組合せを抽出する場合に、２つ以上の異なるカラムの組合せを抽出した。例えば、統計分類部３０は、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との組合せを抽出した。言い替えると、２つのカラム番号４（ｃｈａｒ（３２））からなる組合せのように、同一のカラムを複数有する組合せは抽出しなかった。なお、同一のカラムとは、カラムタイプ、サイズ、精度（スケール）とが同じカラムのことである。
この実施の形態では、同一のカラムを複数有する組合せも抽出する。同一のカラムを複数有する組合せも抽出することにより、同一カラムタイプ、サイズ、スケール（精度）のカラムを複数含むテーブルの分類をより効率的に実施できる。
【００５２】
図２７は、この実施の形態に係る統計分類部３０の動作を示すフローチャートである。
図２７に示すフローチャートは、図１４に示すフローチャートの＜Ｓ３５＞、＜Ｓ４０＞、＜Ｓ４１＞がそれぞれ＜Ｓ３５ａ＞、＜Ｓ４０ａ＞、＜Ｓ４１ａ＞に変更されている。言い替えると、図２７に示すフローチャートの他の処理は、図１４に示すフローチャートの処理と同様である。
＜Ｓ３５ａ＞：統計分類部３０は、ｙ未処理リストの中から、ｙ個のカラムの組合せを重複を許して１つ抽出する。つまり、統計分類部３０は、同一のカラムを複数含む組合せも抽出する。また、統計分類部３０は、グループ内の各テーブルノード１１１におけるｙ個のカラムの組合せが出現する割合（支持度）を計算する。
＜Ｓ４０ａ＞：統計分類部３０は、＜Ｓ３５ａ＞と同様に、同一のカラムの重複を許した場合の次の組合せの支持度を計算する。
＜Ｓ４１ａ＞：ｙ＋１未処理リストに１つ以上の組合せがあるか否かを判定する。１つ以上の組合せがある場合（Ｓ４１でＹＥＳ）、＜Ｓ４２＞へ進む。一方、１つ以上の組合せがない場合（Ｓ４１でＮＯ）、＜Ｓ４３＞へ進む。実施の形態１では、２つ以上の組合せがなければ、ｙをインクリメントして次の階層のグループ化を行うことができなかった。しかし、ここでは、１つでも組合せがあれば、その組合せを重複して持つグループを新たにグループ化することができる。そのため、ここでは、１つ以上の組合せがある場合には、＜Ｓ４２＞へ進む。
【００５３】
図１９に示すグループ番号３２のグループを例として、図２７に示す方法により分類する。ｙ＝１の間は、実施の形態１と同様に処理がされる。したがって、図２３に示すように、グループ番号３２のグループ内に、カラム番号４（ｃｈａｒ（３２））を含むテーブルノード１１１のグループとカラム番号５（ｃｈａｒ（６４））を含むテーブルノード１１１のグループとが形成される。
続いて、＜Ｓ４２＞で、ｙをインクリメントしてｙ＝２として、＜Ｓ３５ａ＞へ戻る。
＜Ｓ３５ａ＞では、ｙ（＝２）未処理リストの中から、ｙ（＝２）個のカラムの組合せを重複を許して１つ抽出する。ここでは、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））とがｙ未処理リストに登録されている。そこで、２個のカラム番号４（ｃｈａｒ（３２））からなる組合せを抽出する。そして、抽出した組合せの支持度を計算する。
カラム番号４（ｃｈａｒ（３２））を２個以上を含むテーブルノード１１１は６個ある。そのため、支持度は、６／１８＝３３．３％である。なお、このグループは、先頭から２つ目までのカラムノード１１２によりグループ化されているため、先頭から３つ目以降のカラムノード１１２に（ｃｈａｒ（３２））が２つ以上含まれているテーブルノード１１１の割合を支持度として計算した。また、図２８は、グループ番号３２のグループに属する１８個のテーブルノード１１１のうち、カラム番号４（ｃｈａｒ（３２））を２つ以上含むテーブルノード１１１を示す図である。
続いて、＜Ｓ３６＞で、計算した支持度が最低支持度未満か否かは判定すると、カラム番号４（ｃｈａｒ（３２））の支持度（３３．３％）は最低支持度（５％）を上回っている（Ｓ３６でＮＯ）。したがって、＜Ｓ３７＞へ進む。
＜Ｓ３７＞では、支持度が最低支持度以上であるため、カラム番号４（ｃｈａｒ（３２））を２つ以上含むテーブルノード１１１をグループ化する。また、２個のカラム番号４（ｃｈａｒ（３２））の組合せをｙ＋１（ｙ＝３）未処理リストに登録する。
つまり、図２９に示すように、グループ番号３２に形成されたカラム番号４（ｃｈａｒ（３２））を含むグループが、さらに分類される。すなわち、グループ番号３２に形成されたカラム番号４（ｃｈａｒ（３２））を含むグループに、カラム番号４（ｃｈａｒ（３２））を２つ以上含むテーブルノード１１１のグループが形成されている。
【００５４】
続いて、＜Ｓ３９＞で、全ての組合せを選択していないため（Ｓ３９でＮＯ）、＜Ｓ４０ａ＞で次の組合せを選択して分類を行う。つまり、２個のカラム番号５（ｃｈａｒ（６４））からなる組合せと、カラム番号４（ｃｈａｒ（３２））とカラム番号５（ｃｈａｒ（６４））との組合せについての処理が同様に行われる。
そして、ｙがさらにインクリメントされ、３個のカラム番号４（ｃｈａｒ（３２））からなる組合せ等についての処理が同様に行われる。＜Ｓ４１ａ＞での終了条件を満たすまで処理が繰り返され、＜Ｓ４１ａ＞での終了条件を満たすとこのグループについての処理が終了する。
その後、他のグループについても同様に処理を行い、全てのグループについての処理が済むと（Ｓ４３でＹＥＳ）、統計分類部３０の処理が終了する。
【００５５】
実施の形態３．
以上の実施の形態では、カラムの同一性の比較（類似するか否かの判定）を図５のカラムリスト１２を用いて行った。この実施の形態では、さらに、各カラムがＮＵＬＬ値を許すか否かを考慮してカラムの同一性の比較を行う。
【００５６】
一般に、ＮＵＬＬ値が許されないカラムはキー項目などの場合が多く、ＮＵＬＬ値が許される項目とはデータの内容（質）が異なる。そのためＮＵＬＬ値の可否を考慮して、カラムの同一性の比較を行うことでより効率的にテーブルを分類できる。
【００５７】
図３０は、ＮＵＬＬ値の可否を考慮したカラムリスト１２を示す図である。
図３０に示すカラムリスト１２では、カラムタイプ１２２、サイズ１２３、スケール１２４が同じ場合でもＮＵＬＬ値の可否１２６により、カラム番号１２１を別々に付番する。つまり、カラムタイプ１２２、サイズ１２３、スケール１２４、ＮＵＬＬ値の可否１２６が同一であるカラムを同一のカラムとして扱う。図５に示すカラムリスト１２に代えて、図３０に示すカラムリスト１２を用いて、以上の実施の形態における意味分類方法と統計分類方法とを実行することで、テーブルを効率的に分類できる。
【００５８】
実施の形態４．
この実施の形態では、さらに、各カラムがキー項目か否かを考慮してカラムの同一性の比較を行う。
【００５９】
キー項目とは主キー若しくは外部キーなどのことである。キー項目となるカラムとキー項目とならないカラムではデータの内容（質）が異なる。そのためキー項目か否かを考慮して、カラムの同一性の比較を行うことでより効率的に分類できる。
【００６０】
図３１は、キー項目か否かを考慮したカラムリスト１２を示す図である。
図３１に示すカラムリスト１２では、カラムタイプ１２２、サイズ１２３、スケール１２４が同じ場合でもキー項目か否か１２７により、カラム番号１２１を別々にする。つまり、カラムタイプ１２２、サイズ１２３、スケール１２４、キー項目か否か１２７が同一であるカラムを同一のカラムとして扱う。図５に示すカラムリスト１２に代えて、図３１のカラムリスト１２を用いて、以上の実施の形態における意味分類方法と統計分類方法とを実行することで、テーブルを効率的に分類できる。
【００６１】
また、さらに、キー項目を主キーと外部キーとに分けたカラムリスト１２を用いてもよい。
【００６２】
つまり、以上の実施の形態に係るテーブル分類装置１は、企業内に存在する種類の異なるデータベースに格納されているテーブルの１つ１つのカラム同士の比較を積み重ねる。そして、それらのカラムから構成されるテーブル同士の構造的な類似性を判別し、テーブルの分類を行う。
【００６３】
以上をまとめると次のようになる。
テーブル分類装置１は、企業内の様々なデータベースに格納されているテーブルを、テーブルを構成するカラムのタイプ、サイズ、スケール（精度）の類似度に基づいて分類するテーブル分類装置１であって、
データベースのカタログ情報を取り込み、テーブルリスト１１を生成し、さらに異なるデータベース間のカラムの対応関係を記載したカラム対応表１４に従って、カラムリスト１２、多頻出カラムリスト１３を生成するリスト作成部１０と、
データベースを構成するカラムの意味を考慮して分類を行う意味分類部２０と、
カラムの統計的な情報に基づいて分類を行う統計分類部３０とを備え、
上記意味分類部２０の分類方式と統計分類部３０の分類方式を組合せて階層的に分類することを特徴とする。
【００６４】
上記カラムの統計的な情報に基づいて分類を行う統計分類部３０は、上記データベースを構成するカラムの意味を考慮して分類を行う意味分類部２０の分類結果を上位階層の分類として、それぞれの上位階層の分類結果に対して、統計的な分類を行うことを特徴とする。
【００６５】
上記カラム対応表１４は、異なる種類のデータベース間のカラムのタイプの対応付けを行うことで、異なる種類のデータベースで定義されているデータタイプ間でのカラムタイプ、サイズ、スケール（精度）の比較を行うことを特徴とする。
【００６６】
上記データベースを構成するカラムの意味を考慮して分類を行う意味分類部２０は、テーブルを構成するカラムの並び順に着目し、テーブルを構成する先頭の幾つかのカラムのタイプ、サイズ、スケール（精度）が同一であることによってテーブルを分類することを特徴とする。
【００６７】
上記カラムの統計的な情報に基づいて分類を行う統計分類部３０は、テーブルを構成するカラムの組合せを考慮して、カラムタイプ、サイズ、スケール（精度）が同一のカラムの組合せを含むことによってテーブルを分類する統計的分類方式を特徴とする。
【００６８】
上記カラムの組合せを考慮してテーブルを分類する統計的分類方式は、同一タイプのカラムが複数出現した場合に、出現回数を考慮して、カラムの組合せでテーブルを分類することを特徴とする。
【００６９】
カラムタイプ、サイズ、スケール（精度）に加えて、カラムのＮＵＬＬ値を許すかどうかを考慮してカラム同士の比較を行うことを特徴とする。
【００７０】
カラムタイプ、サイズ、スケール（精度）に加えて、カラムがキー項目かどうかを考慮してカラム同士の比較を行うことを特徴とする。
【００７１】
また、テーブルにおけるカラムの役割とは、例えば、キー項目であること、主キーであること、外部キーであること、インデックスであること等である。
【００７２】
次に、上記実施の形態におけるテーブル分類装置１のハードウェア構成について説明する。
図３２は、テーブル分類装置１のハードウェア構成の一例を示す図である。
図３２に示すように、テーブル分類装置１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、ＬＣＤ９０１（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、通信ボード９１５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
【００７３】
ＲＯＭ９１３、磁気ディスク装置９２０は、不揮発性メモリの一例である。ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３とＲＡＭ９１４と磁気ディスク装置９２０とは、記憶装置（メモリ）の一例である。また、キーボード９０２、通信ボード９１５は、入力装置の一例である。また、通信ボード９１５は、通信装置の一例である。さらに、ＬＣＤ９０１は、表示装置の一例である。通信ボード９１５とＬＣＤ９０１とは、出力装置の一例である。
【００７４】
磁気ディスク装置９２０又はＲＯＭ９１３などには、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００７５】
プログラム群９２３には、上記の説明において「リスト作成部１０」、「意味分類部２０」、「統計分類部３０」、「出力部４０」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上記の説明において「テーブルリスト１１」、「カラムリスト１２」、「多頻出カラムリスト１３」、「カラム対応表１４」、「テーブル意味分類表２１」、「テーブル分類リスト３１」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、その他光ディスク等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００７６】
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組合せ、さらには、ファームウェアとの組合せで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ９１３等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【図面の簡単な説明】
【００７７】
【図１】テーブル分類装置１の機能を示す機能ブロック図。
【図２】テーブルリスト１１を示す図。
【図３】テーブルリスト１１が有するテーブルノード１１１、カラムノード１１２を示す図。
【図４】カラム対応表１４を示す図。
【図５】カラムリスト１２を示す図。
【図６】多頻出カラムリスト１３を示す図。
【図７】意味分類部２０の動作を示すフローチャート。
【図８】意味分類部２０によるテーブル分類の説明図（１）。
【図９】意味分類部２０によるテーブル分類の説明図（２）。
【図１０】意味分類部２０によるテーブル分類の説明図（３）。
【図１１】意味分類部２０によるテーブル分類の説明図（４）。
【図１２】意味分類部２０によるテーブル分類の説明図（５）。
【図１３】テーブル意味分類表２１を示す図。
【図１４】統計分類部３０の動作を示すフローチャート。
【図１５】統計分類部３０によるテーブル分類の説明図（１）。
【図１６】統計分類部３０によるテーブル分類の説明図（２）。
【図１７】統計分類部３０によるテーブル分類の説明図（３）。
【図１８】統計分類部３０によるテーブル分類の説明図（４）。
【図１９】統計分類部３０によるテーブル分類の説明図（５）。
【図２０】統計分類部３０によるテーブル分類の説明図（６）。
【図２１】統計分類部３０によるテーブル分類の説明図（７）。
【図２２】統計分類部３０によるテーブル分類の説明図（８）。
【図２３】統計分類部３０によるテーブル分類の説明図（９）。
【図２４】統計分類部３０によるテーブル分類の説明図（１０）。
【図２５】統計分類部３０によるテーブル分類の説明図（１１）。
【図２６】統計分類部３０によるテーブル分類の説明図（１２）。
【図２７】実施の形態２に係る統計分類部３０の動作を示すフローチャート。
【図２８】実施の形態２に係る統計分類部３０によるテーブル分類の説明図（１）。
【図２９】実施の形態２に係る統計分類部３０によるテーブル分類の説明図（２）。
【図３０】ＮＵＬＬ値の可否を考慮したカラムリスト１２を示す図。
【図３１】キー項目か否かを考慮したカラムリスト１２を示す図。
【図３２】テーブル分類装置１のハードウェア構成の一例を示す図。
【符号の説明】
【００７８】
１  テーブル分類装置、１０  リスト作成部、１１  テーブルリスト、１１１  テーブルノード、１１２  カラムノード、１２  カラムリスト、１２１  カラム番号、１２２  カラムタイプ、１２３  サイズ、１２４  スケール、１２５  出現回数、１３  多頻出カラムリスト、１３１  出現順位、１３２  カラム番号、１３３  出現回数、１３４  出現率、１４  カラム対応表、１４１  ＤＢ種別、１４２  固有カラムタイプ、１４３  共通カラムタイプ、２０  意味分類部、２１  テーブル意味分類表、３０  統計分類部、３１  テーブル分類リスト、４０  出力部。
【図１】
2010039593.tif 000003
【図２】
2010039593.tif 000004
【図３】
2010039593.tif 000005
【図４】
2010039593.tif 000006
【図５】
2010039593.tif 000007
【図６】
2010039593.tif 000008
【図７】
2010039593.tif 000009
【図８】
2010039593.tif 000010
【図９】
2010039593.tif 000011
【図１０】
2010039593.tif 000012
【図１１】
2010039593.tif 000013
【図１２】
2010039593.tif 000014
【図１３】
2010039593.tif 000015
【図１４】
2010039593.tif 000016
【図１５】
2010039593.tif 000017
【図１６】
2010039593.tif 000018
【図１７】
2010039593.tif 000019
【図１８】
2010039593.tif 000020
【図１９】
2010039593.tif 000021
【図２０】
2010039593.tif 000022
【図２１】
2010039593.tif 000023
【図２２】
2010039593.tif 000024
【図２３】
2010039593.tif 000025
【図２４】
2010039593.tif 000026
【図２５】
2010039593.tif 000027
【図２６】
2010039593.tif 000028
【図２７】
2010039593.tif 000029
【図２８】
2010039593.tif 000030
【図２９】
2010039593.tif 000031
【図３０】
2010039593.tif 000032
【図３１】
2010039593.tif 000033
【図３２】
2010039593.tif 000034