(57)【特許請求の範囲】
【請求項１】
リレーショナルデータベース管理システムに対するテーブル設計を支援するテーブル設計支援装置であって、
他者から提供されたレコード集合を分割するための区切り文字候補を検出する区切り文字候補検出部と、
前記区切り文字候補によって前記レコード集合を分割し分割レコード群を生成するレコード分割部と、
前記分割レコード群における各分割レコードに対し、前記リレーショナルデータベース管理システムにおいて格納可能なデータ型及び制約について分析を行い分析結果ファイル群を生成するフィールド分析部と、
前記分析結果ファイル群を結合して前記リレーショナルデータベース管理システムで格納が可能なテーブル定義候補を生成する分析結果結合部と、
を備え、
前記区切り文字候補検出部は、前記レコード集合の行ごとに前記レコード集合に含まれるそれぞれの文字の出現回数を集計し、前記レコード集合に含まれる文字ごとに前記出現回数が一致している行の最大数の全行数に対する比率である出現回数一致率を算出し、前記出現回数一致率に基づいて前記区切り文字候補を決定する、テーブル設計支援装置。
【請求項２】
前記フィールド分析部は、前記リレーショナルデータベース管理システムにおいて定義されている複数のデータ型のそれぞれについて、前記分割レコードとデータ型が合致するか否かの判定を行い、前記分割レコードのデータ型候補を決定する請求項１に記載のテーブル設計支援装置。
【請求項３】
前記フィールド分析部は、前記分割レコード群の各分割レコードにおいてＮＵＬＬ値が含まれているか否かについて分析し、ＮＵＬＬ値が含まれた分割レコードが見つかった場合には、当該分割レコードからＮＵＬＬ値を除いた処理後分割レコードを生成する請求項１または２に記載のテーブル設計支援装置。
【請求項４】
前記フィールド分析部は、前記処理後分割レコードに対し、行単位でのソートを行い、前後の行を比較することによって重複する行が存在するかどうかを確認し、前記処理後分割レコードにおいて重複する行が見つかったときには当該重複する行を一つの行にまとめる行統合処理を行い、前記行統合処理の前後で前記処理後分割レコードの行数が同じ場合には、当該処理後分割レコードは一意性があると判定する請求項３に記載のテーブル設計支援装置。
【請求項５】
区切り文字候補検出部と、レコード分割部と、フィールド分析部と、分析結果結合部と、を備えるテーブル設計支援装置により、リレーショナルデータベース管理システムに対するテーブル設計を支援するテーブル設計支援方法であって、
区切り文字候補検出部が、他者から提供されたレコード集合を分割するための区切り文字候補を検出するステップと、
レコード分割部が、前記区切り文字候補によって前記レコード集合を分割し分割レコード群を生成するステップと、
フィールド分析部が、前記分割レコード群における各分割レコードに対し、前記リレーショナルデータベース管理システムにおいて格納可能なデータ型及び制約について分析を行い分析結果ファイル群を生成するステップと、
分析結果結合部が、前記分析結果ファイル群を結合して前記リレーショナルデータベース管理システムで格納が可能なテーブル定義候補を生成するステップと、
を備え、
前記区切り文字候補を検出するステップにおいて、前記区切り文字候補検出部が、前記レコード集合の行ごとに前記レコード集合に含まれるそれぞれの文字の出現回数を集計し、前記レコード集合に含まれる文字ごとに前記出現回数が一致している行の最大数の全行数に対する比率である出現回数一致率を算出し、前記出現回数一致率に基づいて前記区切り文字候補を決定する、テーブル設計支援方法。
【請求項６】
リレーショナルデータベース管理システムに対するテーブル設計を支援する制御プログラムであって、
他者から提供されたレコード集合を分割するための区切り文字候補を検出するステップと、
前記区切り文字候補によって前記レコード集合を分割し分割レコード群を生成するステップと、
前記分割レコード群における各分割レコードに対し、前記リレーショナルデータベース管理システムにおいて格納可能なデータ型及び制約について分析を行い分析結果ファイル群を生成するステップと、
前記分析結果ファイル群を結合して前記リレーショナルデータベース管理システムで格納が可能なテーブル定義候補を生成するステップと、をコンピュータに実行させるもので、
前記区切り文字候補を検出するステップにおいて、前記区切り文字候補検出部が、前記レコード集合の行ごとに前記レコード集合に含まれるそれぞれの文字の出現回数を集計し、前記レコード集合に含まれる文字ごとに前記出現回数が一致している行の最大数の全行数に対する比率である出現回数一致率を算出し、前記出現回数一致率に基づいて前記区切り文字候補を決定する、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テーブル設計支援装置、テーブル設計支援方法及び制御プログラムに関する。
【背景技術】
【０００２】
昨今、コンピュータシステムの進化に伴い、インターネット上で公開されているオープンデータ等、他者から提供されるデータの容量の増加や種類の多様化が進んでいる。データベースによってこれらのデータを管理するにあたり、データの容量が極めて大きい場合は、大量のデータを複数のマシンに分散して処理できるハドゥープ（Ｈａｄｏｏｐ）等のプラットフォームを用いるのが一般的である。一方、これらのデータの容量がギガバイト（ＧＢ）オーダー程度であれば、リレーショナルデータベース管理システム（ＲＤＢＭＳ）により対応することが可能である。ＲＤＢＭＳでは、普及しているＳＱＬ言語をデータベース言語としているので簡便である。
【０００３】
ＲＤＢＭＳに対しデータを格納するためには、対応する形式のテーブル定義データを生成する必要がある。このテーブル定義データの生成には少なからず専門的な知識を要する。特許文献１には、テーブル定義データの生成におけるテーブル設計者の負荷を軽減するため、新たにテーブル定義データを生成する際、予め用意されたテーブル定義データを活用するようにするテーブル設計支援装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−００８４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されたテーブル設計支援装置では、テーブル設計作業において、テーブル設計者は、入手したレコード集合に対し、各フィールド（列）のデータ型や、一意性などの制約を定める必要がある。オープンデータのように他者からレコード集合のみ提供される場合には、提供されたレコード集合の内容を確認しながらテーブル設計作業を行う必要がある。しかしながら、他者から提供されるレコード集合の規模（データ容量）が大きくなるにつれ、テーブル設計作業においてデータ型の不一致や制約違反などのエラーが生じやすくなり、エラーを修正するための再設計作業が必要になるケースが多くなるという問題があった。ここで、データ型の不一致とは、設計したフィールドのデータ型と実際のレコードのフィールド値との不一致による格納エラーを意味する。また、制約違反とは、フィールドもしくはレコード集合の制約（一意性やヌル（ＮＵＬＬ）値の有無など）に対し、実際のレコード集合が違反していることによる格納エラーを意味する。
【０００６】
本発明は、以上の背景に鑑みなされたものであり、リレーショナルデータベース管理システム対するテーブル設計作業において、他者から提供されるレコード集合の規模が大きくなっても、テーブル設計作業においてデータ型の不一致や制約違反などのエラーが生じ難くできるテーブル設計支援装置、テーブル設計支援方法及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
かかる課題を解決するために本発明は、リレーショナルデータベース管理システムに対するテーブル設計を支援するテーブル設計支援装置であって、他者から提供されたレコード集合を分割するための区切り文字候補を検出する区切り文字候補検出部と、前記区切り文字候補によって前記レコード集合を分割し分割レコード群を生成するレコード分割部と、前記分割レコード群における各分割レコードに対し、前記リレーショナルデータベース管理システムにおいて格納可能なデータ型及び制約について分析を行い分析結果ファイル群を生成するフィールド分析部と、前記分析結果ファイル群を結合して前記リレーショナルデータベース管理システムで格納が可能なテーブル定義候補を生成する分析結果結合部と、を備えるものである。
【０００８】
また、本発明は、区切り文字候補検出部と、レコード分割部と、フィールド分析部と、分析結果結合部と、を備えるテーブル設計支援装置により、リレーショナルデータベース管理システムに対するテーブル設計を支援するテーブル設計支援方法であって、区切り文字候補検出部が、他者から提供されたレコード集合を分割するための区切り文字候補を検出するステップと、レコード分割部が、前記区切り文字候補によって前記レコード集合を分割し分割レコード群を生成するステップと、フィールド分析部が、前記分割レコード群における各分割レコードに対し、前記リレーショナルデータベース管理システムにおいて格納可能なデータ型及び制約について分析を行い分析結果ファイル群を生成するステップと、分析結果結合部が、前記分析結果ファイル群を結合して前記リレーショナルデータベース管理システムで格納が可能なテーブル定義候補を生成するステップと、を備えるものである。
【０００９】
さらに、本発明は、リレーショナルデータベース管理システムに対するテーブル設計を支援する制御プログラムであって、他者から提供されたレコード集合を分割するための区切り文字候補を検出するステップと、前記区切り文字候補によって前記レコード集合を分割し分割レコード群を生成するステップと、前記分割レコード群における各分割レコードに対し、前記リレーショナルデータベース管理システムにおいて格納可能なデータ型及び制約について分析を行い分析結果ファイル群を生成するステップと、前記分析結果ファイル群を結合して前記リレーショナルデータベース管理システムで格納が可能なテーブル定義候補を生成するステップと、をコンピュータに実行させるものである。
【発明の効果】
【００１０】
本発明によれば、リレーショナルデータベース管理システム対するテーブル設計作業において、他者から提供されるレコード集合の規模が大きくなっても、テーブル設計作業においてデータ型の不一致や制約違反などのエラーが生じ難くできる。
【図面の簡単な説明】
【００１１】
【図１】本発明の概要について説明する図である。
【図２】本実施の形態にかかるテーブル設計支援装置の概略構成の一例を示すブロック図である。
【図３】本実施の形態にかかるテーブル設計支援装置における処理フローを示すフローチャートである。
【図４】本実施の形態にかかるテーブル設計支援装置で処理するレコード集合の一例を示す図である。
【図５】図４に示すレコード集合の一例を区切り文字候補で区切った状態を示す図である。
【図６】図４に示すレコード集合の一例を区切り文字候補で分割した状態を示す図である。
【図７】図３におけるレコード集合において区切り文字の候補を決定する処理の流れを示すフローチャートである。
【図８Ａ】図３における区切り文字候補の決定について具体例により説明する図である。
【図８Ｂ】図３における区切り文字候補の決定について具体例により説明する図である。
【図９】図７におけるレコード集合ファイルのある一行において各既出文字の出現回数をカウントする処理の流れを示すフローチャートである。
【図１０】図３における分割レコード群に対する分析処理の流れを示すフローチャートである。
【図１１】図１０におけるデータ型候補の判定処理の流れを示すフローチャートである。
【図１２】実行した合致判定用プログラムのＲＤＢＭＳ種別とデータ型とに対応するスコアの一覧表の一例を示す図である。
【図１３】図１０のステップＳ４６において出力された分析結果ファイル群を、図３のステップＳ５において１つのファイルに結合した分析結果ファイルの一例を示す図である。
【発明を実施するための形態】
【００１２】
［本発明の特徴］
本発明の実施の形態の説明に先立って、本発明の特徴についてその概要をまず説明する。
【００１３】
図１は、本発明の概要について説明する図である。図１は、本発明の概略構成の一例を示すテーブル設計支援装置１の概略構成の一例を示すブロック図である。テーブル設計支援装置１は、区切り文字候補検出部２と、レコード分割部３と、フィールド分析部４と、分析結果結合部５と、を備えている。
【００１４】
区切り文字候補検出部２は、他者から提供されたレコード集合を適切に分割するための文字（区切り文字候補）を検出する。レコード分割部３は、区切り文字候補検出部２から受け取った区切り文字候補によってレコード集合を分割し分割レコード群を生成する。フィールド分析部４は、分割レコード群における各分割レコードに対し、格納可能なデータ型、及び一意性やＮＵＬＬ値の有無などの制約について分析を行い、分析結果ファイル群を生成する。分析結果結合部５は、分析結果ファイル群を結合してＲＤＢＭＳで格納が可能なテーブル定義候補を生成する。
【００１５】
テーブル設計支援装置１では、他者から提供されたレコード集合に対し、レコード集合を分割して分割レコード群を生成し、分割レコードごとにデータ型や制約をそれぞれ分析することによって、データ型リレーショナルデータベース管理システム（ＲＤＢＭＳ）で格納が可能なテーブル定義候補を自動で生成することができる。これにより、ＲＤＢＭＳにおけるテーブル設計作業において、他者から提供されるレコード集合の規模が大きくなっても、テーブル設計作業においてデータ型の不一致や制約違反などのエラーが生じ難くできる。
【００１６】
以下、図面を参照して本発明の実施の形態について説明する。
まず、本実施の形態にかかるテーブル設計支援装置２００の概略構成について以下に説明する。
図２は、本実施の形態にかかるテーブル設計支援装置２００の概略構成の一例を示すブロック図である。テーブル設計支援装置２００は、入力されたレコード集合をＲＤＢＭＳに格納することが可能なテーブル定義の候補をクライアント端末１００に出力する。図２に示すように、テーブル設計支援装置２００は、入力情報受信部２０１と、入力情報記憶部２０２と、区切り文字候補検出部２０３と、区切り文字候補送信部２０４と、区切り文字受信部２０５と、レコード分割部２０６と、フィールド分析部２０７と、分析結果結合部２０８と、分析結果送信部２０９と、記憶装置２２０と、を有する。
【００１７】
他者から提供されるレコード集合１１１及びＲＤＢＭＳ種別情報は、クライアント端末１００の記憶装置１１０に保存されている。なお、ＲＤＢＭＳ種別情報とは、例えば、ＳＱＬ９９、Ｏｒａｃｌｅ、ＭｙＳＱＬ、ＰｏｓｔｇｒｅＳＱＬ等のＲＤＢＭＳの種別に関する情報を意味する。
【００１８】
入力情報受信部２０１は、クライアント端末１００（入力情報送信部１０２）から送信されたデータ（レコード集合１１１及びＲＤＢＭＳ種別情報２１１）を受け取る。入力情報記憶部２０２は、入力情報受信部２０１が受け取ったデータを、ＲＤＢＭＳ種別情報２１１及びレコード集合２１２として記憶装置２１０に記憶させる。
【００１９】
区切り文字候補検出部２０３は、レコード集合２１２を適切に分割するための文字を検出する。区切り文字候補送信部２０４は、区切り文字候補検出部２０３での検出結果が一意に定まらなかった場合にテーブル設計者に確認するため、区切り文字候補をクライアント端末１００（区切り文字候補受信部１０３）に送信する。この場合、テーブル設計者は、区切り文字入力候補の中から選択した区切り文字をクライアント端末１００（入力装置１０１）から入力する。
【００２０】
区切り文字受信部２０５は、テーブル設計者によって入力された区切り文字をクライアント端末１００（区切り文字送信部１０４）から受け取る。レコード分割部２０６は、区切り文字候補検出部２０３もしくは区切り文字受信部２０５から受け取った区切り文字によってレコード集合２１２を分割し分割レコード群２１３を生成する。分割レコード群２１３は、一時データとして記憶装置２１０に記憶される。
【００２１】
フィールド分析部２０７は、分割レコード群２１３における各分割レコードについてそれぞれ分析し、分析結果ファイル群２１５を生成する。分析結果結合部２０８は、分析結果ファイル群２１５に含まれる各分析結果ファイルを結合し、１つの分析結果ファイル（ＲＤＢＭで格納可能なテーブル定義候補）を生成する。分析結果送信部２０９は、テーブル定義候補をクライアント端末１００（分析結果受信部１０５）に送信する。記憶装置２２０は、フィールド分析部２０７が分割レコード群２１３を分析する際に使用する各判定用プログラム（データ型判定プログラム２２１、ＮＵＬＬ値判定プログラム２２２及び一意性判定プログラム２２３）を格納する。
【００２２】
区切り文字候補検出部２０３、レコード分割部２０６、フィールド分析部２０７及び分析結果結合部２０８は、これらの一部又は全部をソフトウェア（プログラム）によって構成するようにしても良いし、ハードウェア回路によって構成するようにしても良い。
【００２３】
次に、テーブル設計支援装置２００の動作について以下で説明する。なお、以下の説明では、図２についても適宜参照する。
図３は、テーブル設計支援装置２００における処理の流れを示すフローチャートである。図３に示すように、ステップＳ１では、入力情報受信部２０１がクライアント端末１００からＲＤＢＭＳ種別情報とレコード集合１１１のデータを受信し、入力情報記憶部２０２を介して受信したデータを記憶装置２１０に保存する。記憶装置２１０に保存されたレコード集合をレコード集合２１２、ＲＤＢＭＳ種別情報をＲＤＢＭＳ種別情報２１１とする。
【００２４】
次に、ステップＳ２では、区切り文字候補検出部２０３がレコード集合２１２を分析し、レコード集合２１２を複数列に分割することが可能な区切り文字候補を検出する。検出された区切り文字候補が単一でない（複数検出された、または、該当する区切り文字がない）場合、区切り文字候補送信部２０４からクライアント端末側の区切り文字候補受信部１０３に送信され、テーブル設計者に対して確認を行う。テーブル設計者が入力装置１０１から区切り文字を選択すると区切り文字送信部１０４及び区切り文字受信部２０５を経てレコード分割部２０６へ送られる。区切り文字候補検出部２０３により検出された区切り文字候補が単一の場合、そのままレコード分割部２０６へ送られる。区切り文字候補を決定する処理の詳細については後述する。
【００２５】
次に、ステップＳ３では、レコード分割部２０６がステップＳ２において算出された区切り文字によってレコード集合２１２をフィールド単位に分割し、分割レコード群２１３として記憶装置２１０に保存される。レコード集合２１２の分割について、図４〜７を用いて具体的に説明する。
【００２６】
図４は、レコード集合２１２の一例であるレコード集合Ｒ１００を示す図である。図４に示されたレコード集合Ｒ１００を区切り文字候補検出部２０３により検出された区切り文字候補Ｓ（この例では“，”（カンマ））で区切った状態を図５に示す。この区切り文字候補Ｓの位置でレコード集合Ｒ１００を分割する。レコード集合Ｒ１００が分割された後、図６に示すように複数の分割レコードＲ１０１、Ｒ１０２、Ｒ１０３、Ｒ１０４が生成される。複数の分割レコードＲ１０１、Ｒ１０２、Ｒ１０３、Ｒ１０４からなる分割レコード群Ｒ１０５（分割レコード群２１３の一例）は記憶装置２１０に保存される。
【００２７】
図３に示すように、ステップＳ３に続き、ステップＳ４では、フィールド分析部２０７が、生成された分割レコード群２１３のそれぞれに対し、ＮＵＬＬ値の有無、一意性の有無、ＲＤＢＭＳ種別情報２１１に基づくデータ型及びデータ長、について分析を行う。そして、フィールド単位での格納可能なテーブル定義の候補群を分析結果ファイル群２１５として記憶装置２１０に保存される。分割レコード群２１３に対する分析処理の詳細については後述する。
【００２８】
次に、ステップＳ５では、分析結果結合部２０８がフィールド毎の分析結果ファイル群２１５を結合して1つのファイルとする。このファイルは、ＲＤＢＭＳに格納することが可能なテーブル定義候補である。テーブル定義候補は、分析結果送信部２０９を介してクライアント端末１００に送信される。
【００２９】
図３のステップＳ２において区切り文字候補を決定する処理について以下で説明する。
図７は、レコード集合２１２において区切り文字の候補を決定する処理の流れを示すフローチャートである。図７に示すように、まず、ステップＳ２１では、既出文字一覧の初期化を行う。既出文字とは、区切り文字の候補を決定する処理フローにおいて処理対象となった文字である。区切り文字候補を決定する処理が完了したとき、レコード集合２１２に含まれる全ての文字が既出文字一覧に登録される。区切り文字候補を決定する処理の開始時点では既出文字は不明であるため、既出文字一覧をクリアする初期化処理を行う。
【００３０】
次に、ステップＳ２２では、レコード集合２１２内の一行を読み込む。最初にレコード集合２１２の１行目を読み込み、後述するステップＳ２３、ステップＳ２４の処理を行った後、ステップＳ２２に戻って次の行を読み込む。ステップＳ２２〜ステップＳ２４の処理はレコード集合２１２の最終行まで繰り返される。
【００３１】
次に、ステップＳ２３では、ステップ２２で読み込みした一行に対し、文字毎の出現回数をカウントする。具体的には、レコード集合２１２に記載されている文字について既出文字一覧の確認及び登録を行うとともに、行番号と既出文字との連想配列（ハッシュ）に対し、行ごとの文字の出現回数を格納する。なお、既出文字一覧の確認及び登録を行う処理の詳細については後述する。
【００３２】
ステップＳ２４では、読み込みした一行がレコード集合２１２の最後の行か否かを判定する。ステップＳ２４で、読み込みした一行がレコード集合２１２の最後の行であると判断された場合、ステップＳ２５では、既出文字一覧に登録された各文字について、レコード集合２１２の行ごとに出現回数の集計を行う。そして、既出文字一覧に登録された各文字について、行ごとの出現回数から、出現回数一致率を算出する。
【００３３】
ステップＳ２５に続いて、ステップＳ２６では、区切り文字候補を決定する。具体的には、区切り文字候補検出部２０３が、レコード集合２１２の行ごとにレコード集合２１２に含まれるそれぞれの文字の出現回数を集計する。そして、区切り文字候補検出部２０３が、レコード集合２１２に含まれる文字ごとに出現回数が一致している行の最大数の全行数に対する比率である出現回数一致率を算出し、出現回数一致率に基づいて区切り文字候補を決定する。出現回数一致率が１である文字は、レコード集合２１２の全ての行において出現回数が同じであることを意味するので、この文字を区切り文字候補とする。出現回数一致率が１である文字が存在しない場合、最も出現回数一致率の大きい文字を区切り文字候補とする。なお、出現回数一致率が1でない文字が区切り文字候補として選択された場合、出現回数が異なる行については、レコード分割部２０６における分割レコード生成時において例外行として除外され、以降の処理の対象外とする。区切り文字候補を決定した後、処理を終了する。
【００３４】
ステップＳ２４で、読み込みした一行がレコード集合２１２の最後の行ではないと判断された場合、処理をステップＳ２２に戻し、ステップＳ２２で次の行を読み込む。
【００３５】
図８は、区切り文字候補の決定について具体例により説明する図である。図８Ａは、行番号と行番号と既出文字一覧に登録された文字（既出文字）との連想配列（ハッシュ）の一例を示す図である。行番号と既出文字との連想配列中の数字（ハッシュ関数値）は、既出文字の出現回数である。また、説明の便宜上、レコード集合２１２の行数は６行とする。図８Ａに示すように、既出文字“，”（カンマ）は、レコード集合２１２の１〜６行目において出現回数はいずれも３回であるので、出現回数一致率は、（出現回数が一致している行の最大数）／（全行数）＝６[行]／６[行]＝１．００である。
【００３６】
“，”（カンマ）以外の既出文字について、例えば、既出文字“ａ”では、レコード集合２１２の各行における出現回数は、１行目が１回、２行目はなし、３行目は３回、４行目は３回、５行目は１回、６行目は３回、である。既出文字“ａ”において、出現回数が３回の行は、３行（３行目、４行目、６行目）で最も多い。つまり、出現回数が一致している行の最大数は３行である。よって、出現回数一致率は、（出現回数が一致している行の最大数）／（全行数）＝３[行]／６[行]＝０．５０である。
【００３７】
図８Ｂに示すように、既出文字において、“，”（カンマ）の出現回数一致率のみが１．００なので、“，”（カンマ）を区切り文字候補とする（判定結果○）。
【００３８】
図７のステップＳ２３において、レコード集合２１２のある一行において各既出文字の出現回数をカウントする処理について以下で説明する。
図９は、レコード集合２１２のある一行において各既出文字の出現回数をカウントする処理の流れを示すフローチャートである。図９に示すように、まず、ステップＳ２３１において、レコード集合２１２のある一行における一文字を読み込む。最初にレコード集合２１２のある一行における１文字目を読み込み、後述するステップＳ２３２〜ステップＳ２３５の処理を行った後、ステップＳ２３１に戻って次の文字を読み込む。ステップＳ２３１〜ステップＳ２３５の処理はレコード集合２１２のある行の最後の文字まで繰り返す。
【００３９】
次に、ステップＳ２３２では、読み込んだ一文字が既出文字一覧に登録されているか否かを確認する。ステップＳ２３２で読み込んだ一文字が既出文字一覧に登録されていればステップＳ２３４に進む。読み込んだ一文字が既出文字一覧に登録されていなければステップＳ２３３で読み込んだ一文字を既出文字一覧に登録し、ステップＳ２３４に進む。
【００４０】
次に、ステップＳ２３４では、行番号と既出文字との連想配列（ハッシュ）におけるハッシュ関数値をカウントアップし、読み込んだ行における各既出文字の出現回数を記録する。次に、ステップＳ２３５で、処理を行っている文字がある行内の最後の文字であるか否かを判断する。ステップＳ２４で、処理を行っている文字がある行内の最後の文字であると判断された場合は、処理を終了する。処理を行っている文字がある行内の最後の文字ではないと判断された場合、処理をステップＳ２３１に戻し、ステップＳ２３１で次の文字を読み込む。
【００４１】
図３のステップＳ４において、分割レコード群２１３に対する分析処理について以下で説明する。
図１０は、分割レコード群２１３に対する分析処理の流れを示すフローチャートである。図１０に示すように、ステップＳ４１では、分割レコード群２１３に含まれる分割レコードの１つを読み込む。なお、分割レコード群２１３に含まれる分割レコードの１つを読み込んだ後、後述するステップＳ４２〜ステップＳ４５の処理を行い、ステップＳ４１に戻って次の分割レコードを読み込む。ステップＳ４１〜ステップＳ４５の処理は、分割レコード群２１３に含まれる全部の分割レコードを処理し終わるまで繰り返される。
【００４２】
次に、ステップＳ４２では、ＮＵＬＬ値判定プログラムにより、分割レコード群２１３に含まれる分割レコードのそれぞれに対し、文字列長が０であるデータが含まれているかどうかの判定をする（ＮＵＬＬ値判定）。そして、ＮＵＬＬ値判定において、ＮＵＬＬ値が含まれている分割レコードが見つかった場合、当該分割レコードからＮＵＬＬ値を除く処理を行う。なお、分割レコード群２１３に対し、このＮＵＬＬ値を除く処理を行った後の処理後の分割レコード群が処理後分割レコード群２１４（図２参照）である。なお、ＮＵＬＬ値判定において、分割レコード群２１３に含まれる分割レコードのいずれからもＮＵＬＬ値が見つからなかった場合、分割レコード群２１３と処理後分割レコード群２１４との内容は同一となる。
【００４３】
次に、ステップＳ４３では、ステップＳ４２でＮＵＬＬ値を除く処理を行った処理後分割レコードに対し、一意性があるか否かの判定を行う。具体的には、一意性判定プログラムにより、処理後分割レコードに対し、まず行単位でのソートを行い、次に前後の行を比較することによって重複する行が存在するかどうかを確認する。処理後分割レコードにおいて重複する行が見つかった場合には、当該重複する行を一つの行にまとめる行統合処理を行う。この行統合処理の前後で処理後分割レコードの行数が同じ場合は、当該処理後分割レコードは一意性があると判定する。
【００４４】
次に、ステップＳ４４では、ステップＳ４２でＮＵＬＬ値を除く処理を行った処理後分割レコードに対し、ＲＤＢＭＳ種別情報２１１に基づいてＲＤＢＭＳに格納する際に使用可能なデータ型候補の判定を行う。このデータ型候補の判定処理の詳細については後述する。
【００４５】
次に、ステップＳ４５では、分割レコード群２１３に含まれる全部の分割レコードの処理が終わったか否かを判断する。ステップＳ４５で、分割レコード群２１３に含まれる全部の分割レコードの処理が終わったと判断された場合、ステップＳ４６に進む。ステップＳ４６では分割レコード群２１３に対する分析結果を分析結果ファイル群２１５として出力する。ステップＳ４５で、分割レコード群２１３に含まれる全部の分割レコードの処理が終わっていないと判断された場合、処理をステップＳ４１に戻し、ステップＳ４１で次の分割レコードを読み込む。
【００４６】
図１０のステップＳ４４におけるデータ型候補の判定処理について以下で説明する。
図１１は、データ型候補の判定処理の流れを示すフローチャートである。図１１に示すように、ステップＳ４４１でＲＤＢＭＳ種別情報を読み込む。
【００４７】
次に、ステップＳ４４２では、ＲＤＢＭＳ種別情報から得られたＲＤＢＭＳ種別（例えば、ＳＱＬ９９、Ｏｒａｃｌｅ、ＭｙＳＱＬ、ＰｏｓｔｇｒｅＳＱＬ等）において登録済みのデータ型（例えば、ＩＭＴＥＧＥＲ型、ＣＨＡＲ型等）の１つに対応する合致判定用プログラムを読み込む。なお、合致判定用プログラムは、ＲＤＢＭＳ種別において定義されたデータ型によりそれぞれ異なる。ＲＤＢＭＳ種別において登録済みのデータ型の１つに対応する合致判定用プログラムを読み込んだ後、後述するステップＳ４４３〜ステップＳ４４５の処理を行い、再びステップＳ４４２に戻って次の登録済みのデータ型の合致判定用プログラムを読み込む。ステップＳ４４２〜ステップＳ４４５の処理は、登録済みのデータ型の合致判定用プログラムの全てを実行し終わるまで繰り返される。
【００４８】
次に、ステップＳ４４３では、ステップＳ４２でＮＵＬＬ値を除く処理を行った処理後分割レコードに対し、読み込みした合致判定用プログラムを実行し、処理後分割レコードのデータ型が、実行中の合致判定用プログラムのデータ型と合致するか否かの判定を行う。以下、標準ＳＱＬ規格ＳＱＬ９９にて定義されているデータ型のうちの、“ＩＮＴＥＧＥＲ型”の合致判定プログラムと、“ＣＨＡＲ型”の合致判定プログラムと、を例として、処理後分割レコードのデータ型が、実行中の合致判定用プログラムのデータ型と合致するか否かを判定する方法について具体的に説明する。
【００４９】
ＳＱＬ９９におけるＩＮＴＥＧＥＲ型は、−２１４７４８３６４８〜２１４７４８３６４７の範囲の整数を格納可能な整数データである。このため、ＳＱＬ９９におけるＩＮＴＥＧＥＲ型の合致判定用プログラムでは、まず、処理後分割レコードに整数でない値が含まれているか否かを確認する。整数でない値が含まれていない（すべて整数である）場合に、処理後分割レコードに含まれるデータの最大値と最小値を求め、これがＩＮＴＥＲＧＥＲ型の値の範囲内であれば当該処理後分割レコードはＩＮＴＥＲＧＥＲ型に格納可能であると判定する。ＳＱＬ９９におけるＣＨＡＲ型は文字で構成されるデータ型であるため、ＳＱＬ９９におけるＣＨＡＲ型の合致判定用プログラムでは、まず、処理後分割レコードの各行のデータが文字列であるか否かを確認する。処理後分割レコードの各行が文字列である場合、各行の文字列長をそれぞれ算出し、算出した文字列長のうちの最大値をＣＨＡＲ型の文字列長と定める。
【００５０】
ステップＳ４４３に続き、ステップＳ４４４では、合致判定の結果を記録する。ステップＳ４４３でデータ型が合致したと判断された場合には、実行した合致判定用プログラムのＲＤＢＭＳ種別とデータ型とに対応して割り出されるスコアを、実行した合致判定用プログラムに対応するデータ型の”有効なスコア”として記録する。一方、ステップＳ４４３において実行した合致判定用プログラムにおいて、データ型が合致しないと判断された場合には、実行した合致判定用プログラムに対応するデータ型についてスコアは記録されない。実行した合致判定用プログラムのＲＤＢＭＳ種別とデータ型とに対応するスコアの一覧表の一例を図１２に示す。
【００５１】
図１１に示すように、ステップＳ４４４に続くステップＳ４４５では、登録済みのデータ型の全てについて、データ型の合致判定が終了したかどうかを判断する。ステップＳ４４５で登録済みのデータ型の全てについて、データ型の合致判定が終了したと判断された場合、ステップＳ４４６へと進む。一方、ステップＳ４４５で登録済みのデータ型の全てについて、データ型の合致判定が終了していないと判断された場合、処理をステップＳ４４２に戻し、次の登録済みのデータ型を読み込む。
す。
【００５２】
ステップＳ４４６では、ステップＳ４４４にて”有効なスコア”が記録されたデータ型を、分割レコード群２１３の格納が可能なデータ型候補とする。さらに、これらのデータ型候補について有効なスコアが大きい順にソートし、データ型候補の優先度を決める。
【００５３】
図１３は、図１０のステップＳ４６において出力された分析結果ファイル群を、図３のステップＳ５において１つのファイルに結合した分析結果ファイル（ＲＤＢＭＳで格納が可能なテーブル定義候補）の一例を示す図である。図１３に示すように、例えば、レコード集合の第１番目のフィールド（フィールド１）では、データ型の優先度はＳＭＡＬＬＩＮＴ型（優先度１）、ＩＮＴＥＧＥＲ型（優先度２）、ＣＨＡＲ型またはＶＡＲＣＨＡＲ型（優先度３）の順に高い。また、フィールド１には、一意性があり、ＮＵＬＬ値が存在しない。
【００５４】
上記実施の形態で説明したテーブル設計支援装置２００では、他者から提供されたレコード集合に対し、ＲＤＢＭＳで格納が可能なテーブル定義候補を自動で生成することができる。これにより、リレーショナルデータベース管理システムにおけるテーブル設計作業において、他者から提供されるレコード集合の規模が大きくなっても、テーブル設計作業においてデータ型の不一致や制約違反などのエラーが生じ難くできる。
【００５５】
以上、本発明を上記実施の形態に即して説明したが、本発明は上記実施の形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【００５６】
例えば、上記実施の形態において、クライアント端末１００とテーブル設計支援装置２００とを別々の装置として構成したが、一体として構成してもよい。また、テーブル設計支援装置２００の構成要素は一体として構成したが、別々に構成してもよい。フィールド分析部２０７を複数の異なる装置内に配置すると、分割レコード群２１３を並列に分析することができるので処理時間を短縮することが可能になる。なお、フィールド分析部２０７を複数の異なる装置内に配置する場合、分割レコード群２１３、処理後分割レコード群２１４及び分析結果ファイル群２１５については複数の装置間で共有できるような構成にする。
【符号の説明】
【００５７】
１  テーブル設計支援装置
２  区切り文字候補検出部
３  レコード分割部
４  フィールド分析部
５  分析結果結合部
【図１】
0006613706.tif 000002
【図２】
0006613706.tif 000003
【図３】
0006613706.tif 000004
【図４】
0006613706.tif 000005
【図５】
0006613706.tif 000006
【図６】
0006613706.tif 000007
【図７】
0006613706.tif 000008
【図８Ａ】
0006613706.tif 000009
【図８Ｂ】
0006613706.tif 000010
【図９】
0006613706.tif 000011
【図１０】
0006613706.tif 000012
【図１１】
0006613706.tif 000013
【図１２】
0006613706.tif 000014
【図１３】
0006613706.tif 000015