(57)【要約】【課題】リレーションからのクロス表の作成を容易にする。【解決手段】ユーザがＵＩ部１０に対し、リレーションの例とこれから作成して欲しいクロス表の例を入力すると、対応関係検出部１４が、そのリレーション例内のデータをデータ属性ごとにグループ分けし、各グループとクロス表例の各行・各列との間で出現データ同士を比較することで、クロス表例の行見出し部に対応するグループ、列見出し部に対応するグループをそれぞれ特定する。そして、クロス表例のデータ部と出現データが対応するグループを探索する。これらに基づき、リレーション例における各データ属性と、クロス表例の各構成部分との対応関係を求め、これを対応関係記憶部１６に登録する。クロス表作成部１８は、処理対象リレーションが与えられると、対応関係記憶部１６を参照して、該リレーションの各データ属性をクロス表にマッピングすることで、クロス表を作成する。【選択図】図１
2005242587.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムを、
リレーションの例と、これに対応するクロス表の例を取得する例データ取得部、
前記リレーションの例におけるデータ属性ごとのデータ群のなかから、前記クロス表の例の行見出し部と出現データが対応するデータ属性のデータ群、前記クロス表の例の列見出し部と出現データが対応するデータ属性のデータ群、及び前記クロス表の例のデータ部と出現データが対応するデータ属性のデータ群、をそれぞれ求める対応関係検出部、
処理対象のリレーションを取得する対象リレーション取得部、
該処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表の行見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の行見出し部の各見出し項目を作成し、クロス表の列見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の列見出し部の各見出し項目を作成する見出し部作成部、
前記処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表のデータ部と出現データが対応すると判別されたデータ属性のデータ群を、前記行見出し部と前記列見出し部との見出し項目の組合せに応じて配列することにより、クロス表のデータ部を作成するデータ部作成部、
として機能させるプログラム。
【請求項２】
前記対応関係検出部は、前記リレーションの例のデータ属性ごとに、前記クロス表の例の行又は列の中から、該データ属性のデータ群に出現するすべてのデータが出現する行又は列を探索し、この探索により見つかったクロス表の例の行を列見出し部と判定すると共にその行に対応するデータ属性のデータ群が列見出し部に対応すると判断し、その探索により見つかったクロス表の例の列を行見出し部と判定すると共にその列に対応するデータ属性のデータ群が行見出し部に対応すると判断する、
ことを特徴とする請求項１記載のプログラム。
【請求項３】
前記対応関係検出部は、前記リレーションの例が構成する表の列ごと及び行ごとの各データ群を前記クロス表の例の行ごと及び列ごとの各データ群とそれぞれ比較することで、出現データが一致するデータ群同士のペアを求め、これらペアに該当する前記リレーションの例の列又は行のデータ群を前記データ属性ごとのデータ群と判別し、それらペアに該当する前記クロス表の例の行のデータ群を該クロス表の列見出し部と判別し、それらペアに該当する前記クロス表の列のデータ群を該クロス表の行見出し部と判別する、ことを特徴とする請求項１記載のプログラム。
【請求項４】
前記対応関係検出部は、前記クロス表の例における行見出し部及び列見出し部の少なくとも一方に複数の階層がある場合、出現データが対応するデータ属性のデータ群をそれら各階層ごとに求めることを特徴とする請求項１記載のプログラム。
【請求項５】
前記対応関係検出部は、前記クロス表の例の行見出し部及び列見出し部のうち、出現データが対応するデータ属性のデータ群が見つからない見出し部については、該見出し部に現れる各見出しに対応する属性名を前記リレーションの例から求め、
前記見出し部作成部は、クロス表の行見出し部及び列見出し部のうち、各見出しがそれぞれ属性名に対応づけられたものについては、それら属性名を見出しとする見出し部を作成する、
ことを特徴とする請求項１記載のプログラム。
【請求項６】
コンピュータにより、リレーションからクロス表を作成する方法であって、
該コンピュータがリレーションの例と、これに対応するクロス表の例を取得するステップと、
該コンピュータが前記リレーションの例におけるデータ属性ごとのデータ群のなかから、前記クロス表の例の行見出し部と出現データが対応するデータ属性のデータ群、前記クロス表の例の列見出し部と出現データが対応するデータ属性のデータ群、及び前記クロス表の例のデータ部と出現データが対応するデータ属性のデータ群、をそれぞれ求めるステップと、
該コンピュータが処理対象のリレーションを取得するステップと、
該コンピュータが該処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表の行見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の行見出し部の各見出し項目を作成し、クロス表の列見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の列見出し部の各見出し項目を作成するステップと、
該コンピュータが前記処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表のデータ部と出現データが対応すると判別されたデータ属性のデータ群を、前記行見出し部と前記列見出し部との見出し項目の組合せに応じて配列することにより、クロス表のデータ部を作成するステップと、
を含むクロス表作成方法。
【請求項７】
リレーションからクロス表を作成する装置であって、
リレーションの例と、これに対応するクロス表の例を取得する例データ取得部と、
前記リレーションの例におけるデータ属性ごとのデータ群のなかから、前記クロス表の例の行見出し部と出現データが対応するデータ属性のデータ群、前記クロス表の例の列見出し部と出現データが対応するデータ属性のデータ群、及び前記クロス表の例のデータ部と出現データが対応するデータ属性のデータ群、をそれぞれ求める対応関係検出部と、
処理対象のリレーションを取得する対象リレーション取得部と、
該処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表の行見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の行見出し部の各見出し項目を作成し、クロス表の列見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の列見出し部の各見出し項目を作成する見出し部作成部と、
前記処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表のデータ部と出現データが対応すると判別されたデータ属性のデータ群を、前記行見出し部と前記列見出し部との見出し項目の組合せに応じて配列することにより、クロス表のデータ部を作成するデータ部作成部と、
を備えるクロス表作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーションが含むデータ群の関係を表現したクロス表の作成のための技術に関する。
【背景技術】
【０００２】
関係（リレーショナル）データベース（以下「ＲＤＢ」と略す）は、代表的なデータベース形式として広く用いられている。ＲＤＢが格納するデータ群は、同じ列には同じデータ属性のデータが並び、同じ行には同じ主体に関するデータが並んだ表（テーブル）形式で表現できる。このような表を構成し得るデータの集まりは「リレーション」と呼ばれる。これに対し、クロス表とは、ピボット表又はマトリクス表とも呼ばれ、基本的には、２つの質的データ（すなわち属性）の関係を見るためにそれぞれの属性の項目の組合せに対し、当てはまる度数を記入したものである。すなわち、クロス表では、行見出しと列見出しにそれぞれ異なる属性が割り当てられ、行見出しと列見出しの交わりとなる欄（セル）にそれら両属性に対応するデータ値が登録される。クロス表の中には、行見出し又は列見出しの一方又は両方を多階層の見出しにした多次元のクロス表（多次元表とも呼ばれる）もある。ＲＤＢすなわちリレーションのデータ形式そのものは人間にとって必ずしも分かりやすいものではないのに対し、クロス表は属性間の関係を人間に分かりやすく表示するものである。このため、従来より、ＲＤＢ乃至リレーションのデータをクロス表に変換するための装置、方法が提案されている。
【０００３】
特許文献１には、データファイルに格納されている各種のデータから二次元に分類された表（クロス帳票）を作成する計算機システムにおいて、表の縦方向に分類すべき項目と横方向に分類すべき項目をユーザに指定させ、その指定に従って表を作成する方式が示されている。
【０００４】
また特許文献２には、クロス表の見出し部分はユーザが入力しておき、ＲＤＢのどのデータとクロス表のどの見出しが対応するかを、ユーザがＧＵＩ（グラフィカル・ユーザインタフェース）を用いて指定するシステムが開示されている。
【０００５】
【特許文献１】特開平１−２３７８７８号公報
【特許文献２】特開平７−２９５７７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記従来技術は、いずれも、クロス表の見出しの各項目とデータベースのデータとの対応付けをユーザが行わなければならず、ユーザの負担が大きい。
【０００７】
また、特許文献１の方式では、個々のデータそのものでない「属性」や、表の個々のセルではない「行見出し」、「列見出し」等といった抽象的なレベルで指定を行う必要があるため、ユーザにとって必ずしも分かりやすいとは言えなかった。また、処理対象のデータベースの表に明示的に属性が付与されていない場合も一般にはあり得るが、このような場合、特許文献１の方式ではそもそも取り扱えないという問題がある。
【０００８】
また、特許文献２の方式は、ＧＵＩによるドラッグ・アンド・ドロップといった比較的簡便な操作で、クロス表の見出し項目とＲＤＢのデータとを対応づけられるという点では便利であるが、その対応付けに先立って、クロス表の行見出し及び列見出しをユーザが予め作成しておかなければならないという煩雑さがある。また、この方式も、ＲＤＢのデータに対し明示的に属性名が与えられていない場合には、ユーザにとって対応付けがしづらいという問題がある。
【０００９】
本発明は、ユーザによる見出し項目の作成や対応付けの作業を軽減できる、クロス表作成のための技術を提供するものである。
【課題を解決するための手段】
【００１０】
本発明に係るプログラムは、コンピュータシステムに、リレーションの例と、これに対応するクロス表の例を取得する例データ取得部、前記リレーションの例におけるデータ属性ごとのデータ群のなかから、前記クロス表の例の行見出し部と出現データが対応するデータ属性のデータ群、前記クロス表の例の列見出し部と出現データが対応するデータ属性のデータ群、及び前記クロス表の例のデータ部と出現データが対応するデータ属性のデータ群、をそれぞれ求める対応関係検出部、処理対象のリレーションを取得する対象リレーション取得部、該処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表の行見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の行見出し部の各見出し項目を作成し、クロス表の列見出し部と出現データが対応すると判別されたデータ属性のデータ群からクロス表の列見出し部の各見出し項目を作成する見出し部作成部、前記処理対象のリレーションにおけるデータ属性ごとのデータ群のうち、前記対応関係検出部でクロス表のデータ部と出現データが対応すると判別されたデータ属性のデータ群を、前記行見出し部と前記列見出し部との見出し項目の組合せに応じて配列することにより、クロス表のデータ部を作成するデータ部作成部、として機能させるためのプログラムである。
【００１１】
この構成において、「リレーション」とは、ｎ個の属性から一つづつ取り出した値からなる組（レコード）の集まりである。また、本明細書において、「クロス表」とは、各欄（セル）の意味づけを、そのセルに対応する行見出しと列見出しとの組合せにより示した２次元の表である。行見出し又は列見出しの一方乃至両方が２階層以上の見出し構造となった多次元的な表も、クロス表の一種である。「出現データ」とは、一括りのデータ群（例えば「リレーションの例におけるデータ属性ごとのデータ群」や「クロス表の例の行見出し部」に属するデータ群）の中に現れる（すなわち、含まれる）データのことである。
【００１２】
本発明の好適な態様では、前記対応関係検出部は、前記リレーションの例のデータ属性ごとに、前記クロス表の例の行又は列の中から、該データ属性のデータ群に出現するすべてのデータが出現する行又は列を探索し、この探索により見つかったクロス表の例の行を列見出し部と判定すると共にその行に対応するデータ属性のデータ群が列見出し部に対応すると判断し、その探索により見つかったクロス表の例の列を行見出し部と判定すると共にその列に対応するデータ属性のデータ群が行見出し部に対応すると判断する。
【００１３】
この態様は、クロス表の例として、どの行が行見出しでどの列が列見出しかが分からないものが与えられた場合にも対応できる。
【００１４】
また、別の好適な態様では、前記対応関係検出部は、前記リレーションの例が構成する表の列ごと及び行ごとの各データ群を前記クロス表の例の行ごと及び列ごとの各データ群とそれぞれ比較することで、出現データが一致するデータ群同士のペアを求め、これらペアに該当する前記リレーションの例の列又は行のデータ群を前記データ属性ごとのデータ群と判別し、それらペアに該当する前記クロス表の例の行のデータ群を該クロス表の列見出し部と判別し、それらペアに該当する前記クロス表の列のデータ群を該クロス表の行見出し部と判別する。
【００１５】
この態様は、リレーションの例として、その例が構成する表の行と列のどちらがデータ属性を示しているかがわからないものが与えられた場合にも対応できる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して、本発明を実施するための最良の形態（以下「実施形態」と呼ぶ）を説明する。
【００１７】
図１は、本発明に係るクロス表作成装置の概略構成を示す機能ブロック図である。
【００１８】
図１においてＵＩ部１０は、クロス表作成の指示、及びクロス表作成に必要なデータの入力をユーザから受け付けるユーザインタフェース手段である。ここでクロス表作成に必要なデータには、リレーションの例、これに対応するクロス表の例、及び処理対象のリレーションがある。このうちリレーション例とクロス表例は、リレーションとクロス表の関係を示すいわば簡単な例題であり、リレーションのデータ列とクロス表の各構成部分（行見出し部や列見出し部、データ部）との対応関係を判別するために用いられる。これらの例から求められた対応関係の情報を用いて、処理対象のリレーションに対応するクロス表が作成される。
【００１９】
これらリレーション例、クロス表例、処理対象リレーションとしては、ファイルシステム１２に既に登録されているファイルを指定することができる。ＵＩ部１０は、それら各データのファイル格納場所（パス）を入力する欄を提供する。また、リレーション例及びクロス表例については、ファイル格納場所の指定の代わりに、具体的なデータそのものを入力するための入力画面を提供するようにしてもよい。
【００２０】
対応関係検出部１４は、入力されたリレーション例及びクロス表例に基づき、リレーション（又はそれが格納されるＲＤＢ）のデータ構造の各列と、クロス表の各構成部分との対応関係を求める。求められた対応関係の情報は、対応関係記憶部１６に記憶される。
【００２１】
クロス表作成部１８は、対応関係記憶部１６内の対応関係情報を参照することで、入力された処理対象リレーションのデータ群からクロス表を作成する。
【００２２】
図１に示すクロス表作成装置は、典型的には、コンピュータシステムに対し、ＵＩ部１０，対応関係検出部１４及びクロス表作成部１８の機能を記述したプログラムを実行させることで実現される。各部の詳細については以下に説明する。
【００２３】
まず図２〜図４を参照して、対応関係検出部１４が行う処理について説明する。図２は対応関係検出部１４の処理手順を示すフローチャート、図３はリレーション例１００のデータ内容を示す図、図４はそのリレーション例１００に対応するクロス表例２００のデータ内容を示す図である。
【００２４】
図３のリレーション例１００は、各人の月ごとの残業時間を記録したリレーションの例であり、１つのレコード（行）は各人の名前、月度、残業時間の３つの属性の値を持っている。リレーションは、図３に示すように、行及び列からなる２次元の表形式で表現することができる。ここでは、リレーションが構成する２次元の表のうち、同一属性の値の並びを「列」とし、もう一方の方向の値の並びを「行」とする。すなわち、この説明においてリレーションが成す表の「列」とは、リレーションにおける同一属性のデータの集まり（グループ）と同じ意味である。各属性の属性名が明示的に示されていないリレーションもあるが、レコード内でのデータの並び順が決まっていればその並び順に従って同一属性の「列」を規定することができる（なお、リレーションが、行と列のどちらが上述の「同一属性の『列』」か分からない２次元の表として与えられる場合も考えられるが、そのような場合の対処については後で例を挙げて説明する）。また個々のレコードの各データ項目にそれぞれ明示的に属性名が付されているような場合もあり、このような場合なら当然に同一属性の「列」を規定することができる。一方図４のクロス表例２００は、名前を行見出し、月度を列見出しとしたクロス表形式でそのリレーション例１００を表したものである。
【００２５】
これらリレーション例１００及びクロス表例２００を参照しつつ、図２の処理手順を説明していく。
【００２６】
対応関係検出部１４は、リレーション例１００及びクロス表例２００を取得すると（Ｓ１０）、リレーション例１００の第１行の各列のデータが、すべて文字列かどうかを判定する（Ｓ１２）。そして、すべて文字列であれば、第１行目の各列のデータを、それぞれその列の属性名として認識し（Ｓ１４）、第２行以下がリレーション例１００の実体データ部分であると認識する。
【００２７】
リレーションからクロス表を作成する場合、リレーションの各列をクロス表２００の行見出し部２０２、列見出し部２０４、データ部２０６に対応づけるわけであるが、一般にデータ部２０６は数値データであることが多いので、属性名の行を除いたリレーションの実体データ部分のうち少なくとも１列は数値データになることが一般的である。したがって逆に考えれば、第１行のすべての列のデータが文字列であれば、第１行は属性名の行であると判断できるわけである。
【００２８】
なお、仮に実体データ部分に数値データがいっさい現れないリレーションの場合は、Ｓ１２の判断は使えない。しかし、リレーションでは、図３の例の第１列や第２列のデータを見れば分かるように、実体データ部分の同じ列には同じ値が繰り返し現れることが多い。このことから、第１行の各列のデータ値がすべて、同じ列の第２行以下に出現しないものである場合には、第１行を属性名の行と判定すればよい。
【００２９】
次に、リレーション例１００の実体データ部分を列ごと（すなわち属性ごと）にグループ分けする（Ｓ１６）。すなわち、実体データ部分の１つの列を構成するデータの集まりを１つのグループとする。そして、それら各グループと、クロス表例２００の各行及び各列のデータ群のデータ群とを互いに照合することで、リレーション例１００のグループごとに、そのグループに現れるデータのすべてが現れるクロス表例２００の行又は列を探索する（Ｓ１８）。この探索により見つかった「リレーション例１００中のグループ」と「クロス表例２００中の行又は列」とが、対応関係にあるペアと認識される。図３及び図４の例では、リレーション例１００の第１列に現れる「伊藤」、「鈴木」というすべてのデータ値が、クロス表例２００の第１列に現れており、両者はペアと認識される。同様にリレーション例１００の第２列のデータはすべてクロス表例２００の第１行に現れており、これらもペアを成すと認識される。この他には、リレーション例のグループと、その出現データのすべてが現れるクロス表の行又は列、というペアは見つからない。
【００３０】
次に、Ｓ１８で求めた各ペアに含まれるクロス表例２００の列を行見出し部２０２と判定し、Ｓ１８で求められた各ペアに含まれるクロス表例２００の行を列見出し部２０４と判定する（Ｓ２０）。図３及び図４の例では、クロス表例２００の列を含むペアが１つと、行を含むペアが１つ検出されるので、クロス表例２００の行見出し及び列見出しは共に１階層であることがわかる。行見出し又は列見出しが複数階層になる場合については、あとで具体例を説明する。そして、それら各ペアに含まれるリレーション例１００の各列を、それぞれクロス表例２００の行見出し部２０２又は列見出し部２０４に対応する列と認識する（Ｓ２０）。これで、リレーションの列とクロス表の行見出し部、列見出し部との対応関係が判明したことになる。図３及び図４の例では、リレーション例１００の第１列「名前」がクロス表例２００の行見出し部２０２に、第２列「月度」が列見出し部２０４に、それぞれ対応することが分かる。
【００３１】
なお、与えられるクロス表例のデータによっては、そのデータ構造上、行見出し部、列見出し部等といった構成部分の種別が明示されているもの、或いは各データ毎にそれが行見出しなのか列見出しなのかといった種別属性が明示されているもの、もありえる。そのようなものについては、行見出し部に現れるデータを含んだ列（すなわち同一属性のデータの集まり）をリレーション例１００から探索し、見つかった列に現れるデータがすべてその行見出し部に現れていることが確認されれば、その列と行見出し部とが対応すると判定すればよい。列見出し部、データ部についても同様である。
【００３２】
このように、クロス表例２００の行見出し部２０２及び列見出し部２０４に対応するリレーション例１００の列が特定されると、それら特定された列以外の残りの列（残りの列が複数あればそのうちのいずれか１つ）が、クロス表例２００のデータ部２０６に対応することが分かる。ここでデータ部２０６は、クロス表例２００から行見出し部２０２及び列見出し部２０４を削除した残りの部分である。
【００３３】
そこでＳ２２では、リレーション例１００におけるグループ（列）のうち、行見出し部２０２及び列見出し部２０４にそれぞれ対応するものを除いた各グループを、クロス表例２００のデータ部２０６と照合することにより、出現するデータがすべてデータ部２０６に現れるグループを探索する。この探索により見つかったグループに対応する列が、データ部２０６に対応すると認識される。図３及び図４の例では、リレーション例1００の第３列「残業時間」に現れるデータが、クロス表例２００のデータ部２０６にすべて出現しており、これらが対応するペアとなる。
【００３４】
そしてＳ２４では、Ｓ２０及びＳ２２で求められた、クロス表の各構成部分（行見出し部、列見出し部、データ部）と、リレーションの各列との対応関係を示す情報を、対応関係記憶部１６に登録する。図５は、図３及び図４の例を処理したときに求められる対応関係情報のデータ内容を示している。この例はリレーション例１００の各列に属性名が付されているので、図５の対応関係情報ではリレーションの列は属性名によって表される。すなわち、クロス表の各構成部分とリレーションの属性名との対応が、対応関係情報に示されることになる。なお、リレーション例１００に属性名が付されていない場合は、図６に示すように、クロス表の各構成部分とリレーションの列番号との対応を示す対応関係情報が作成される。
【００３５】
以上が、対応関係検出部１４の処理の内容である。このような処理により、対応関係情報が作成されると、次にクロス表作成部１８により、処理対象リレーションに対応するクロス表の作成が行われる。この処理の手順を図７に示す。
【００３６】
この処理では、クロス表作成部１８は、処理対象リレーションを取得すると（Ｓ３０）、対応関係記憶部１６に登録された対応関係情報を参照して、クロス表の行見出し部、列見出し部、及びデータ部にそれぞれ対応する処理対象リレーションの列を特定する（Ｓ３２）。ここで言う処理対象リレーションの「列」も、リレーション例１００の場合と同様、属性を同じくするデータの集まりである。
【００３７】
ここで、リレーション例及び処理対象リレーションに明示的に属性名が付与されている場合は、リレーション例と処理対象リレーションとで列の順序が異なっている場合でも、Ｓ３２の処理は可能である。すなわち、この場合、図５のように、クロス表の各構成部分とリレーションの各列の属性名を対応づけて管理しているので、処理対象リレーションの各列の属性名を見れば、それら各列をクロス表の各構成部分に対応づけることができるので、列の並びがリレーション例と変わっていても問題ない。例えば、図８に示すように、図３のリレーション例１００とは、列（属性）の並びが異なる処理対象リレーション３００が与えられても、クロス表の作成を正しく行うことができる。
【００３８】
次にクロス表作成部１８は、行見出し部及び列見出し部にそれぞれ対応する処理対象リレーションの列のデータ群から、クロス表の行見出し部と列見出し部を作成する（Ｓ３４）。すなわち、処理対象リレーションのうち、行見出し部に対応すると判定された列の各データをそれぞれ行見出しとして並べることでクロス表の行見出し部を、列見出し部に対応すると判定された列の各データをそれぞれ列見出しとして並べることでクロス表の列見出し部を、それぞれ作成する。
【００３９】
そして、クロス表作成部１８は、処理対象リレーションのうちクロス表のデータ部に対応する列の各データを、クロス表における行見出しと列見出しの組合せに従って配列することで、クロス表のデータ部を作成する（Ｓ３６）。すなわちここでは、データ部に対応する列の個々のデータは、処理対象リレーション中でそのデータと同一の行に含まれる行見出しのデータと列見出しのデータの組合せに従って、クロス表のデータ部に配列される。
【００４０】
以上のような処理により、処理対象リレーションに対応するクロス表が自動生成される。例えば図８に示す内容の処理対象リレーション３００が与えられた場合には、図９に示すようなクロス表が求められる。
【００４１】
以上説明したように、本実施形態では、事例として与えられたリレーション例とこれに対応するクロス表例から、リレーション例の各列とクロス表例の各構成部分（すなわち）行見出し部、列見出し部、データ部）との対応関係を自動検出することができ、その対応関係に基づき、処理対象のリレーションからクロス表を自動生成することができる。
【００４２】
また本実施形態では、「リレーションは同一データ属性のデータ群を列とする表と捉えることができる」というリレーションのデータ構造の性質、「クロス表には行見出し部となる列と、列見出し部となる行とが存在し、それら行見出し部と列見出し部を除いた部分がデータ部となる」というクロス表のデータ構造の性質に基づき、与えられたリレーション例とクロス表例からリレーションのデータ属性とクロス表の各構成部分との対応関係を検出することができる。
【００４３】
このように本実施形態によれば、元となるリレーションとそれから作りたいクロス表の具体的な事例を装置に入力することで、リレーションとクロス表の構造上の関係づけを行うことができる。ユーザにとっては「このようなデータ（リレーション例）をこのような表（クロス表例）にして欲しい」という即物的なイメージは想起しやすいので、「列見出し」や「行見出し」、「属性」といった抽象構造レベルでの対応付けを求められる従来の装置よりも、本実施形態の装置の方がユーザにとって取り扱いやすい。
【００４４】
また、リレーション例やクロス表例として、以前に作成したリレーションやこれに対応するクロス表のデータを利用することもできる。
【００４５】
以上の説明で用いた図３及び図４の例では、リレーション例１００及び処理対象リレーションの双方に、各データ属性の属性名が明示されていたが、このような属性名の明示がない場合でも、リレーション例１００と処理対象リレーションとの間で各属性の並び順（すなわち列の並び順）が一致していれば、前述した図６の対応関係情報を用い、処理対象リレーションからクロス表を作成することができる。
【００４６】
また以上の説明で用いた図３及び図４の例では、リレーション例１００のすべての列（すなわちすべての属性）がクロス表例２００の構成部分のいずれかに対応づけられたが、リレーションの列の中に対応づけられないものが出る場合でも、上記実施形態の処理はそのまま適用できる。例えば、図１０に示したようなリレーション例１００ａ（図３の例に対し「休日出勤」日数のデータ項目を加えたもの）と図４のクロス表例２００が与えられた場合、図３及び図４の例の組が与えられた場合との相違は、図２の手順のＳ２２において、クロス表例２００のデータ部２０６に対応するものとしてリレーション例１００ａの「残業時間」が検出されるものの、「休日出勤」の列は対応づけられずに余ってしまうという点だけである。処理の内容自体に変更を加える必要はなく、対応関係検出部１４が作成する対応情報も図５に示すものとなる。そして、処理対象リレーションとして図１０と同様の「休日出勤」の属性のデータも含んだリレーションが与えられた場合、クロス表作成部１８は、その「休日出勤」のデータは用いずに、図４のようなクロス表を作成することになる。
【００４７】
また以上の説明で用いた図３及び図４の例はクロス表の列見出し部、行見出し部が共に１階層の例であったが、上記実施形態の処理は、列見出し部又は行見出し部の一方乃至両方が複数階層になる場合にも適用できる。このことを図１１及び図１２の例を用いて説明する。
【００４８】
図１１はリレーション例１５０を、図１２はこれに対応するクロス表例２５０を示している。リレーション例１５０は、各生徒の学期毎の英語と数学の試験の点数を示したものであり、１つのレコードが＜名前、学期、科目、点数＞の４つの属性のデータから成り立っている。一方クロス表例２５０では、「名前」が行見出し部２０２を、「学期」が列見出し部第１層２０４ａを、「科目」が列見出し部第２層２０４ｂを、それぞれ構成しており、列見出し部が２階層構成になっている。このような例が与えられた場合も、上述の対応関係検出部１４の処理内容が適用できる。
【００４９】
すなわち、この例の場合、図２の処理手順のＳ１８において、リレーション例１５０の第２列（「学期」）に現れるデータのすべて（集合｛１，２，３｝）がクロス表例２５０の第１行目に現れていること、及びリレーション例１５０の第３列（「科目」）に表れるデータのすべて（集合｛数学，英語｝）がクロス表例２５０の第２行目に現れていること、がそれぞれ検出される。したがって、対応関係検出部１４は、図１３に示すように、列見出し部第１層２０４ａに属性「学期」が、列見出し部第２層２０４ｂに属性「科目」が、それぞれ対応づけられた対応関係情報を作成して対応関係記憶部１６に登録する。
【００５０】
クロス表作成部１８は、このような対応関係情報に基づき処理対象リレーションからクロス表を作成するわけであるが、この作成処理では、図７の処理手順のＳ３４（見出し部の作成）において、階層を考慮した見出し部の作成を行う。
【００５１】
例えば、列見出しが多階層になるクロス表では、図１２の列見出し第１層２０４ａと列見出し第２層２０４ｂの関係を見れば分かるように、行番号が若い方の列見出し部の方が上位の階層となり、ある階層の１つの列見出しの直下の階層には、当該直下階層の列見出しがすべて並ぶという構造となる。したがって、列見出し部を作成する場合には、処理対象リレーションから列見出し部第１層２０４ａに対応するデータ属性「学期」に該当するデータの集合を求め、その集合に属する各データをそれぞれ列見出しとして順に並べることで列見出し第１層２０４ａを構成し、次に処理対象リレーションから列見出し部第２層２０４ｂに対応するデータ属性「科目」に該当するデータの集合を求め、第１層２０４ａの個々の列見出しの下にそれぞれ、その集合に属する各データをそれぞれ列見出しとして順に並べることで列見出し第１層２０４ｂを構成する。３層以上ある場合は、同様の処理を再帰的に適用すればよい。例示は省略したが、行見出しが多階層になる場合も同様の考え方でよいことは明らかであろう。
【００５２】
また、クロス表作成部１８によるクロス表のデータ部の作成では、処理対象リレーションのうちのデータ部に対応する属性の各データ（例では「点数」）を、行見出し部２０２，列見出し部第１層２０４ａ及び第２層２０４ｂの組合せに該当する場所に配置していく。
【００５３】
以上の説明から、見出し部が多階層のクロス表（多次元クロス表）も、この実施形態の手法により作成できることが了解されるであろう。
【００５４】
また、以上の説明では、クロス表作成部１８における行見出し部２０２や列見出し部２０４の作成の際の、各見出しの配列順には特に言及しなかった。しかし、行見出し部や列見出し部に対応する処理対象リレーションの列の各データを、無造作に、例えば単に出現順に並べたのでは、見づらい表となることも考えられる。クロス表の見出しには、年や月や日にち、製品番号や学籍番号などの識別番号、などのように順序性があるものが用いられることが少なくなく、このような場合その順序性に従って見出しを配列した方が見やすい表となる。また本来の性質として順序性がない場合でも、人名などのように一定の規則（例えばアルファベット順や五十音順）にソートして配列した方が表の使い勝手がよくなるものも多い。このようなことから、人がクロス表例を作成する時も、意識的又は無意識に見出しをソートして配列することが少なくない。したがって、ユーザが作成する事例（クロス表例２００）の見出し部の見出し配列に順序性がある場合、処理対象リレーションから自動作成するクロス表もその順序性に従って見出しを配列することが好ましい。
【００５５】
そこで、上記実施形態の変形例として、対応関係検出部１４がクロス表例２００の行見出し部２０２及び列見出し部２０４の各々における見出しの配列に順序性があるかを検査し、順序性がある場合は、クロス表作成部１８での行見出し部及び列見出し部の作成の際、この順序性の情報に従って各見出しを配列する方式が考えられる。
【００５６】
クロス表例２００の見出し部に順序性があるかどうかの検査は、各見出し部ごとに、そこに含まれる見出しを順に（例えば行見出し部の場合は上から下へ）読み取っていく時に、順に現れる行見出しの値が昇順或いは降順といった一定の順序になっているかどうかを判断すればよい。この場合、見出しの値が一定の順序になっているかどうかの判断には、行見出しの値自体のデータの種類を考慮する。見出しが整数であれば整数として、文字列であれば文字列として、昇順又は降順になっているかを判断する。単純な例としては、文字コードの順序を基準に順序性の有無を判断すればよい。ただし、日本語の文字列の場合は五十音順の可能性があるなど、文字コードの順序とは異なる順序規則に従う場合もあるので、見出しに現れる値の文字コードを判断し、例えばそれがひらがなや漢字の範囲に入るものであれば五十音順であるか否かの判断も行う。また、英語の月名のように、文字コードに基づく順序とはまったく無関係な順序が規定されているものもあるので、このようなものについては、個別的に順序規則を示す規則情報（例えば月名が順に並んだ配列）を作成して本装置に登録しておき、順序性の有無を判断する際、見出しがその規則情報に登録されていれば、その規則情報に基づき判断を行うようにすればよい。
【００５７】
対応関係検出部１４は、このような処理により各見出し部に見出し配列に順序性があるかどうかを判断し、各々の順序性に関する情報を、対応関係記憶部１６に登録する。図１４は、順序性情報も含んだ対応関係記憶部１６の記憶データ内容例を示す図である。この例は、図３及び図４の事例に対応したものであり、図５に例示した対応関係情報と比べると「見出し配列順」の情報を示すデータ項目が増えている。図４のクロス表例２００では、列見出し部２０４からは見出しが昇順に配列されていることが検出できるのに対し、行見出し部２０２の見出しの並びには順序性が見いだせない。そこで、図１４の例では、行見出し部の見出し配列順は「なし」、列見出し部の見出し配列順は「昇順」となっている。なお、英語の月名などのように個別の順序規則に従った見出し配列が検出された場合は、「見出し配列順」の欄には、その順序規則自体の識別名が登録される。
【００５８】
クロス表作成部１８は、処理対象リレーションからクロス表の各見出し部を作成する際、対応関係記憶部１６に記憶された当該見出し部の「見出し配列順」の情報を参照し、処理対象リレーションにおける当該見出し部に対応する列の各データをその「見出し配列順」に従って配列する。これにより、クロス表例２００に示された見出し配列順に従った見出し配列のクロス表が作成できる。
【００５９】
また、上記実施形態では、リレーション例において、属性名が明示されるにしてもされないにしても、各データがどの属性であるかは明確に分かる（属性名が示されない場合でも、データの並び順でどの属性かが分かる）ケースであった。しかし、リレーション例として、データ群の二次元配列の表のみが与えられ、その表の行と列のいずれが同一属性ごとのデータグループを示しているのか、示されていない場合も考えられる。
【００６０】
この場合も、同一属性のデータであればデータの種類も共通しているので、リレーション例が構成する二次元表（以下「二次元表例」と呼ぶ）の中の行方向と列方向のうち、データ種類が共通する方向を同一属性のデータのグループと判断すればよい。図３のリレーション例でいえば、同一列内ではデータの種類が共通している（第１列は日本語の文字列、第２，第３列は数字列）のに対し、同一行内には異なるデータ種類のデータが並んでいるので、列方向が同一属性のデータのグループを示していると判断できる。なお、この判定に当たっては、二次元表例の１行目や１列目が属性名を示している場合を考慮する。
【００６１】
もっとも、この手法では対処できない場合もあり、そのときの処理手順として図１５に示すような手順が考えられる。
【００６２】
この例では、対応関係検出部１４は、リレーション例とクロス表例とを取得（Ｓ１０）した場合、リレーション例において各データの属性が判別できるかどうかを判断する（Ｓ４０）。すなわち、ここでは、リレーション例の各データに明示的に属性が付されているか、又はそのリレーション例が構成する二次元配列の表の行又は列のどちらが同一属性のグループを示しているかが明示されているかを判断する。どちらかが成り立てば属性が判別できるということであり、その場合は同一属性のデータグループを「列」とみなして、図２の手順のＳ１２に進む。一方、どちらも成り立たない場合は、Ｓ４２に進み、そのリレーション例が構成する二次元表例の中の「列」が、同一属性のデータグループ（すなわち図２の手順におけるリレーション例の「列」）に該当するとまず仮定する。そして、この仮定の下で図２のＳ１２〜Ｓ１８と同様の処理を実行することで、リレーション例の各列（同一属性データグループ）とクロス表例の行又は列との間に出現データに関する対応関係があるかを判定する（Ｓ４４）。そして、クロス表例の中にリレーション例の列と出現データが対応する行と列が両方検出できたか否かを判断し（Ｓ４６）、それらが両方検出できた場合は、クロス表の行見出しと列見出しがすべて特定できたことになるのでＳ５０に進み、図２のＳ２０〜Ｓ２４と同様の処理を行うことで対応関係情報を作成し、対応関係記憶部１６に登録する。一方Ｓ４６で、クロス表例からリレーション例の列と出現データが対応する行と列の一方でも検出できなければ、Ｓ４２で二次元表例の列を同一属性データのグループと仮定したことが誤りであり、この場合はＳ４８に進んで二次元表例の行を同一属性データのグループと仮定し、Ｓ４４以下の処理を行う。与えられるリレーション例が正しいものであれば、Ｓ４２とＳ４８のどちらかの仮定で、クロス表例からリレーション例の列と出現データが対応する行と列の両方が検出できる。
【００６３】
以上のような処理により、リレーション例として属性が判別できないものが与えられた場合でも、クロス表との対応関係情報が作成できる。
【００６４】
また、以上の例は、いずれもリレーション例の同一属性のデータグループからクロス表の行見出しや列見出しを検出していたが、リレーション例の属性名がクロス表の見出し部に明示されるような場合もある。例えば、図１６に示したクロス表例は、図３のリレーション例に対応するものであるが、図４のクロス表例と比べると、「４」、「５」、「６」といった列見出し（列見出し部第２層２０４ｂ）の上に、更に「月度」という列見出し（列見出し部第１層２０４ａ）が付されている。この「月度」は、図３のリレーション例に属性名として現れているものである。このような例が与えられる場合を考慮すれば、図２の処理手順において属性名を認識（Ｓ１４）した後、それら属性名に一致する文字列がないかどうかクロス表例を調べ、あればその文字列を見出し部と認識し、その見出し部の下位（行見出し部の場合は右側、列見出し部の場合は下側）に、その属性名に属する各データが下位の見出しとして並ぶものと判定する。その他の部分は、図２の処理手順と同様でよい。このような処理により、リレーションの各属性とクロス表の各見出し部との対応関係を特定することができる。この場合、対応関係検出部１４が作成する対応関係情報は、図１７のようなものになる。これは図３のリレーション例と図１６のクロス表例の組合せに対応するものであり、図５の例との違いは、列見出し部が２層になっている点である。この例では、列見出し部第１層に「月度」という属性名自体が見出しとして配置され、列見出し第２層に属性「月度」に属する各データが各見出しとして配置されることになる。クロス表作成部１８は、この対応関係情報に基づき、前述と同様の方法で、処理対象リレーションからクロス表を作成することができる。
【００６５】
また以上の例は、リレーション中のあるデータ属性の「データ」がクロス表の見出しとなる例であったが、リレーション中のデータ属性の「属性名」自体が見出しとなるようなクロス表を作成する場合もある。例えば、図１０に示したリレーションから図１８に示すクロス表を作成する場合である。図１８に例示するクロス表では、行見出し部第１層２０２ａに属性「名前」の各データ値が、行見出し部第２層２０２ｂに属性名「残業時間」及び「休日出勤」の文字列そのものが、列見出し部第１層２０４ａには属性名「月度」の文字列そのものが、列見出し部第２層２０４ｂには属性「月度」の各データ値が、それぞれ見出しとして並んでいる。以下、このように「属性名」自体が見出しとなるようなクロス表を作成する場合も考慮した処理について、図１９のフローチャートを参照して説明する。
【００６６】
この処理手順は、Ｓ２０までは図２の手順と同じである。Ｓ２０でクロス表例の行見出し部、列見出し部とそれに対応するリレーション例の各列（属性）との対応関係を特定した後、図１９の手順では、対応関係検出部１４は、対応づけのできた見出し部の直上階層に、属性名と同じ文字列の見出しがあるか調べ、あればそれを見出し部として認識する（Ｓ２５）。
【００６７】
例えば図１０のリレーション例と図１８のクロス表例が与えられた場合、Ｓ２０までの処理により、行見出し部第１層２０２ａと属性「名前」のデータグループが、列見出し部第２層２０４ｂと属性「月度」のデータグループが、それぞれ対応づけられる。次のＳ２５では、それら対応づけられた行見出し部第１層２０２ａと列見出し部第２層２０４ｂの直上階層（すなわち行見出し部の場合は１列左の列、列見出し部の場合は１行上の行）を調べる。この場合、行見出し部第１層２０２ａは最上位であり左側に列は存在しないが、列見出し部第２層２０４ｂの１行上には第１層２０４ａが存在し、その第１層２０４ａの見出し「月度」は、リレーション例の属性名の１つである「月度」と一致する。したがって、Ｓ２５では、対応関係検出部１４は、列見出し部第１層２０４ａの見出しには属性名「月度」の文字列が入るという対応関係を認識する。なお、図１２の例を見れば分かるように、Ｓ２０で対応づけのできた見出し部（の層）の直上階層に別の見出し部があったとしても、必ずしもその直上階層が「属性名」を見出しとするものであるとは限らない。
【００６８】
Ｓ２５の処理が終わると、対応関係検出部１４は、クロス表例の中のすべての見出し部がリレーション例と対応付けできたかどうかを判定する（Ｓ２６）。この判定で、すべて対応付けができていれば図２のＳ２４へと進み、対応関係情報の作成を行う。これに対し、対応付けできていないものがあることが分かれば、Ｓ２７に進む。
【００６９】
図１０のリレーション例と図１８のクロス表例のペアの場合、Ｓ２５までの処理で、行見出し部第１層２０２ａ、列見出し部第１層２０４ａ及び列見出し部第２層２０４ｂについては対応付けができている。ここで、図１８のクロス表例の場合、列見出し部は左から数えて第３列目から始まっているので、対応関係検出部１４は第１列及び第２列が行見出し部の各階層となると判定できる。そして、そのうち第１列である行見出し部第１層２０２ａは対応付けができていることが分かり、第２列である行見出し部第２層２０２ｂが対応付けできていないことが分かるので、Ｓ２７に進む。
【００７０】
Ｓ２７では、対応付けできなかった見出し部の各見出しの文字列に対応する属性名をリレーション例の各属性名から探索し、探索できた属性名とそれら各見出しとの対応関係を求める。図１０及び図１８の例では、クロス表例の第２列である行見出し部第２層２０２ｂの各見出しに対応する属性名をリレーション例から探し出す。その結果、各見出しに対応するものとして属性名「残業時間」、「休日出勤」が見つかり、しかも行見出し部第２層２０２ｂにはそれら２つの属性名しか現れないこと、及び１つ上位の見出しである各「名前」（すなわち鈴木、伊藤）に対して、それら２つの属性名がそれぞれ直下の見出しとして現れていることが分かるので、行見出し第２層２０２ｂに対してそれら２つの属性名が対応づけられる。
【００７１】
このようにして、Ｓ２７までで、行見出し部及び列見出し部のすべての階層の対応付けが完了する。すると、対応関係検出部１４は、Ｓ２７までに検出した対応関係の情報を対応関係記憶部１６に登録する。この例では、対応関係記憶部１６に登録される対応関係情報は、例えば図２０のようなものとなる。この例は、図５等に示した対応関係情報と異なり、クロス表のような表形式となっている。この表には、カギ括弧（「」）で囲んだ属性名と、そうでない属性名とが示されているが、前者は属性名の文字列そのものを、後者はその属性名が示す属性のデータグループを指す。
【００７２】
すなわち、この表は、まず行見出しについては、リレーションの属性「名前」に該当する各データがクロス表の第１列に行見出しとして現れ、その第１列の行見出しの１つ１つに対してクロス表第２列に属性名「残業時間」及び「休日出勤」に対応する行見出しが現れることを示している。同様に列見出しについては、クロス表第１列に属性名「月度」に対応する列見出しが現れ、その第１行の列見出しに対しクロス表第２行に属性「月度」に該当する各データが列見出しとして現れることを示している。そして、それら行見出し「残業時間」及び「休日出勤」と、列見出しの各「月度」とが交差するセルに、それぞれ属性「残業時間」及び「休日出勤」に該当するデータが入ることを示している。このように、図２０のような形式でも、クロス表の各構成部分と、リレーション例の各属性や属性名そのもののとの対応関係を示すことができる。
【００７３】
なお図２０では、直観的に分かりやすくするために対応関係情報を表形式で示したが、対応関係情報の実際の表現形式はこのような表形式でなくてもよく、図２０と同様の関係が表現できるものであればどのようなものでもよい。この点は、図５や図１３、図１７についても同様である。また、図５や図１３、図１７等の対応関係情報が図２０と同様の形式で表現できることも容易に了解されるであろう。
【００７４】
また、上記実施形態の手法を利用すれば、集計欄を持ったクロス表の生成も実現できる。以下、この点について説明する。
【００７５】
周知のように、クロス表は集計欄を含む場合が少なくない。例えば図２２に示すクロス表例は、図２１に示すリレーション例に対応するものであるが、集計欄として、５及び９行目に各人の四半期ごとの小計の行が、１０行目に各人の全期間の合計の行が配置され、４列目（Ｄ列）に月度ごとの合計の列が配置されている。以下、このような場合の処理について、図２１及び図２２のリレーション例及びクロス表例を例にとって説明する。
【００７６】
基本的な処理手順は図２に示したものでよい。ただしこの場合は、クロス表例（図２２）に現れる集計欄の見出しやデータがリレーション例（図２１）には現れてこないことを考慮した処理が必要となる。具体的には、図２の手順のＳ１０でクロス表例が与えられた際、まずそのクロス表例から集計欄に該当する行や列を検出する。一般的な表計算ソフトウエアで集計欄付きのクロス表を作成した場合、図２２に示したように、集計欄には、個々のデータ（数値）ではなく、「=B2+B3+B4」（Ｂ列２行の値とＢ列３行の値とＢ列４行の値を足し合わせる計算を示す）などのように計算式が含まれている。そこで、このようなクロス表例が与えられた場合、データ値がなく計算式だけが並んでいる行や列を検出し、そのような行や列は集計行、集計列に該当すると判断して、それら集計行及び集計列の構造を示す集計欄情報を作成する。
【００７７】
図２３に、図２２のクロス表例から作成された集計欄情報を例示する。集計欄情報には、検出された集計行又は集計列ごとに、その集計行又は列に対応する見出しの文字列（「見出し名」）、クロス表にてその集計行又は列が現れる位置（「配列位置」）、及びそれら集計行又は列に属する各欄の計算式を求めるための計算式決定規則（「計算式」）が含まれている。一般に、クロス表の集計行又は集計列には、表の最終行又は最終列に来るものと（図２２の例では「合計」の行と、「月度計」の列）、所定数の行又は列ごとに規則的に現れるもの（「四半期計」の行）とがある。前者については、与えられたクロス表例の最終行、最終列を調べることで即座に見つけることができるし、後者についても、計算式からなる行や列のうち、同じ見出し名であるものの行番号や列番号を調べることで、その規則性を検出することができる。
【００７８】
図２２の例では、「四半期計」の集計行が（４ｎ＋１）行目（ｎは自然数）に現れているという規則を検出することができるので、集計欄情報の集計行＃１「四半期計」の「配置位置」には、その規則を示す計算式が示されている。図２２の例からは、この他に表の最終行である集計行が１種類（集計行＃２）と、表の最終列である集計行が１種類（集計列＃１）検出される。また、各集計行、集計列の各欄の計算式を調べることで、計算式決定規則を特定することができる。例えば、「四半期計」の各行に属する各欄については、「=X(4n-2)+X(4n-1)+X(4n)」であることがわかる。ここでＸは当該集計欄と同じ列の番号を示し、「Ｘ(ｋ)」の書式は第Ｘ列第ｋ行の欄（セル）に含まれる値を指している。
【００７９】
また、最終行の集計行「合計」については、「四半期計」により括られる小計のグループの繰り返しの後に現れる。このリレーション例及びクロス表例は四半期が２回ある例であったが、処理対象リレーションは、四半期の数が２回とは限らない。そこで、一般化した計算式を求める必要がある。この例では、「合計」の行の各欄は、同じ列の「四半期計」の値の合計であることが分かるので、計算式決定規則として「ΣＸ(4n+1)」（Ｘ(4n+1)は、当該欄と同じ列Ｘの「四半期計」の行(4n+1)を示し、Σは最初の四半期計から最後の四半期計までの総和である）となる。同様に集計列「月度計」の各欄の計算式は、当該欄と同一行（Ｙと表す）のＢ列とＣ列の欄の値の和であることが分かるので、計算式決定規則は「ＢＹ＋ＣＹ」となる。
【００８０】
このような手法で、与えられたクロス表例から、そのクロス表例の形式に従った一般的なクロス表の構造を示す集計欄情報を得ることができる。
【００８１】
なお、特開２００３−３４６０７４号公報（「表作成装置、表作成方法、表作成プログラム」）には、これと同様の考え方に基づくクロス表例の解析手法が詳細に示されている。したがって、この公報の解析手法を用いてクロス表例を解析し、その解析結果を用いて処理対象リレーションに対応するクロス表を構築することができる。
【００８２】
このようにクロス表例の解析が終わった後は、対応関係検出部１４は、図２の手順のＳ１２以降の処理を実行すればよい。なお、この手順でリレーション例の列とクロス表例の行又は列との対応関係を検出する際には、集計行及び集計列と判定した行及び列に属するデータを除いた上で対応関係を調べるようにすればよい。作成される対応関係情報は、上記実施形態のものと同様である。
【００８３】
また、クロス表作成部１８は、クロス表例の解析結果（例えば集計欄情報）と、リレーション例とクロス表例の対応関係情報とに基づき、与えられた処理対象リレーションからクロス表を作成する。すなわち、上記実施形態の手法で行見出し部及び列見出し部を作成すると共に、その行見出し部及び列見出し部に対してクロス表例の解析結果が示す規則性に従って各集計列・集計行を配置することで、クロス表が作成できる。このクロス表作成時の集計列・集計行の配置の処理についても、上述の特開２００３−３４６０７４号公報に示された処理を用いることができる。
【００８４】
なお、本実施形態の処理手順は、リレーション形式の表において、属性（列）の順序を並べ替えたり、不必要な属性（列）を削除したりする場合にも適用可能である。この場合には、変換元のリレーション例と、変換先のリレーション例を本装置に与えればよい。すると、変換元リレーションの各列のデータグループと、変換先のリレーション例の各列のデータグループとの間で出現データの一致するものが探索され、これにより変換元リレーションの各列が変換先リレーションにおいて何番目の列に現れるか（或いは現れないか）という対応付けを行うことができる。リレーション形式の表において、行と列のどちらが同一属性のデータグループを示しているかが分からない場合は、（変換元リレーション例の）列と（変換先リレーションの）列との対比で出現データが一致するものが見つからなければ、次に列と行を対比し、それでも駄目なら行と列を対比するといった具合に、行と列の組合せを順番に調べていくことで、対応付けができる。この対応付けの情報を対応関係記憶部１６に登録しておけば、処理対象リレーションが与えられた場合、これを変換先リレーションの形式に変換できる。
【図面の簡単な説明】
【００８５】
【図１】本発明に係るクロス表作成装置の概略構成を示す機能ブロック図である。
【図２】対応関係検出部の処理手順を示すフローチャートである。
【図３】リレーション例のデータ内容を示す図である。
【図４】図３のリレーション例に対応するクロス表例のデータ内容を示す図である。
【図５】対応関係情報の例を示す図である。
【図６】対応関係情報の別の例を示す図である。
【図７】クロス表作成部の処理手順を示すフローチャートである。
【図８】処理対象リレーションのデータ内容の例を示す図である。
【図９】図９の処理対象リレーションに基づき作成されるクロス表を示す図である。
【図１０】別のリレーション例のデータ内容を示す図である。
【図１１】更に別のリレーション例のデータ内容を示す図である。
【図１２】図１１のリレーション例に対応するクロス表例のデータ内容を示す図である。
【図１３】列見出しが２階層の場合の対応関係情報の例を示す図である。
【図１４】見出し配列順の情報を含んだ対応関係情報の例を示す図である。
【図１５】対応関係検出部の処理手順の変形例を示すフローチャートである。
【図１６】別のクロス表例のデータ内容を示す図である。
【図１７】対応関係情報の別の例を示す図である。
【図１８】属性名が見出しに現れるクロス表例を示す図である。
【図１９】属性名が見出しに現れる場合を考慮した対応関係検出部の処理手順の変形例を示すフローチャートである。
【図２０】対応関係情報の別の例を示す図である。
【図２１】更に別のリレーション例のデータ内容を示す図である。
【図２２】図１８のリレーション例に対応する、集計欄付きのクロス表例のデータ内容を示す図である。
【図２３】集計欄付きのクロス表例の解析結果のデータ内容の例を示す図である。
【符号の説明】
【００８６】
１０  ＵＩ部、１２  ファイルシステム、１４  対応関係検出部、１６  対応関係記憶部、１８  クロス表作成部。
【図１】
2005242587.tif 000003
【図２】
2005242587.tif 000004
【図３】
2005242587.tif 000005
【図４】
2005242587.tif 000006
【図５】
2005242587.tif 000007
【図６】
2005242587.tif 000008
【図７】
2005242587.tif 000009
【図８】
2005242587.tif 000010
【図９】
2005242587.tif 000011
【図１０】
2005242587.tif 000012
【図１１】
2005242587.tif 000013
【図１２】
2005242587.tif 000014
【図１３】
2005242587.tif 000015
【図１４】
2005242587.tif 000016
【図１５】
2005242587.tif 000017
【図１６】
2005242587.tif 000018
【図１７】
2005242587.tif 000019
【図１８】
2005242587.tif 000020
【図１９】
2005242587.tif 000021
【図２０】
2005242587.tif 000022
【図２１】
2005242587.tif 000023
【図２２】
2005242587.tif 000024
【図２３】
2005242587.tif 000025