(57)【要約】【課題】  従来の技術では、膨大なデータに親子データが埋もれており、ツリー構造を把握できない。また、親データ、子データを把握することはできるが、その兄弟にあたるデータ、従兄弟にあたるデータは把握できない。【解決手段】  ツリー構造を持つ企業データに番号をふり、所定のアルゴリズムに従った抽出を図り、各企業データ、企業データにふられた番号、親企業のデータの番号を表形式に編集しなおし画面に表示する。画面に表示には、HTMLなどの簡単な表示技術を使い、ツリー構造（データの親子関係）を把握する。【選択図】  図４
2009129213.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータから構成されるツリー構造を有するデータ群を表示するデータ構造出力システムにおいて、
前記ツリー構造を有する各データを、当該データを識別する識別情報と当該データの親データのキー情報を対応付けて格納する手段と、
前記各データに含まれるデータの検索指定を受付ける手段と、
前記検索指定で指定されるデータおよび当該指定されるデータと階層関係を有するデータを検索する手段と、
検索された前記データについて、前記識別情報および前記キー情報を用いて、表形式に編集する手段と、
編集された前記表形式のデータを出力する手段とを有することを特徴とするデータ構造出力システム。
【請求項２】
請求項１に記載のデータ構造表示出力システムにおいて、
前記検索する手段は、指定されたデータに対して、当該データの最上位のデータのキー情報を格納する手段から求め、求められた前記キー情報から、当該最上位のデータについて、直接の下位に位置するデータを求め、当該直接の下位に位置するデータの下位のデータを求めることを繰り返すことにより、当該検索を実行することを特徴とするデータ構造出力システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置で取り扱われるデータに管理に関し、この管理にはデータ群の格納・検索・表示が含まれる。この中でも、特に、企業の合併履歴データ、住所データ、階層組織の部署・人員データ等、ツリー構造で示すことが可能なツリーデータの把握に好適な格納・検索・表示方法に関する。
【背景技術】
【０００２】
世の中には、親子関係などのツリー構造をもつデータが多い。近年、その数が急増している企業合併における企業データにおいても、合併先を親、合併元を子供として、企業の合併履歴を、親子関係をもつデータ群とみなすことができる。このツリー構造のデータ(群)における検索の効率化のために、所定の構造のツリー構成図を表示するものとして、特許文献１がある。
【０００３】
特許文献１においては、データについて、互いに関連する一連の項目をツリー構成で管理するデータベースにおける検索の簡素化と、ツリー構成の編集，作成作業を簡素化することを目的としている。この目的を達成するために、データの各項目毎にデータファイル内の格納位置を含む項目属性情報を記憶する項目属性テーブル１３と、各項目毎に所属するツリーのツリー名及び該当ツリー内における隣接接続される他の項目を記憶するツリー構成テーブル１４とを設け、外部から入力された項目属性情報に対応する項目を項目属性テーブル１５から検索し、検索された項目の所属するツリーのツリー名をツリー構成テーブルから検索し、検索されたツリー名のツリーを構成する各項目をツリー構成テーブルから検索し、検索された各項目及び前ツリー構成テーブルから読出された項目相互間の接続情報から図４に示すような所定の構造のツリー構成図を作成する。そして、この作成されたツリー構成図を表示装置に表示している。
【０００４】
【特許文献１】特開平７−２９６００４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１においては、ツリー構造そのものを表示する構成であり、コンパクトに表示をまとめることができなかった。また、表形式でまとめた形での表示については、考慮されていない。このため、全体を把握するために、つながりを示す線を辿って見ていく必要があり、理解がしにくいとの課題がある。
【０００６】
また、表形式に関しては、直接につながっている要素しか管理されていなかった。例えば、企業の合併履歴を把握するために、各データを検索するなどして、合併先企業（親データ）を求めることに留まっている。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明では、以下の構成を取った。すなわち、ツリー構造を構成する各データにそれを識別する識別情報（番号など）を対応付けておくが、各データは親となるデータのキーを属性として保持している。
【０００８】
この構成により、ツリー構造の各データに対する検索要求があった場合、検索要求に従ってデータを検索し、検索された各データを、識別情報に基づいて表形式に編集して出力するものである。この際、データとしては、企業や企業内の組織を示すデータが含まれる。企業データの場合、いわゆる親会社、子会社など合併等の履歴を階層的に管理する情報が含まれる。また、上記の出力の際、ＨＴＭＬを利用しての画面上への表示が含まれる。
【０００９】
さらに、本発明では、上記の検索の際、検索された各データについて、自身の識別情報とその親データの識別情報を付与（対応付ける）するように構成してもよい。また、検索としては、指定された１つのデータに対して、一番上の親のキーを求め、その親のキー値から、N個の子供（孫以下は含まない）のデータを求め、それ以降、n番目の子供以下の子供を求めてからn+1番目の子供以下のデータを求める、という条件に従って、データを検索することが含まれる。この際、検索された順に、画面表示用のデータエリアに格納していき、画面表示するよう構成してもよい。
【００１０】
なお、本願明細書では、親データ、子データ、ツリー構造との用語を用いているが、階層的な関係を示していればよく、本発明は、これらの表現には限定されるものではい。
【発明の効果】
【００１１】
以上、本発明によれば、膨大なデータの中から親子関係にあるデータを抽出できる。
【発明を実施するための最良の形態】
【００１２】
まず、本発明の一実施の形態の概要について、簡単に説明する。本実施の形態では、以下のように、DBから取得した各データに番号をふり、データ番号、データのキー値、データ内容、親データ番号を１レコードとして、配列に格納していく。
【００１３】
DBに格納されている１レコード：
データのキー値    ・・・・・・    親データのキー値    ・・・・・・
配列に格納する１レコード：
データ番号    データのキー値    データ内容    親データ番号
この前提に立ち、まず、システムが１つのツリーに含まれる１つのデータのキー値を受け取る。そのキー値から得られるデータにある親データのキー値をたどることで、ツリーの先頭にあるデータD1を取得し、配列の1番目の要素にデータ番号1、データD1のキー値、データD1の内容、親データ番号「null」を格納する。
次に、データ番号1のデータD1のキー値を親データのキー値としてもつ子データを検索し、取得されたn個のデータそれぞれに対して、データ番号を2、3、…、n、親データ番号を1として、配列の2番目からn番目の要素に格納する。
【００１４】
以降、配列のn番目の要素までデータが格納されているとする。
データ番号mのデータDmのキー値を持つデータを検索し、データがヒットすれば、取得されたN個のデータそれぞれに対して、データ番号をm+1、m+2、・・・、m+N、親データ番号をmとして、配列のm+1番目からm+N番目の要素に挿入する。データ番号m+1以降のデータ番号を (m+1+N) 〜 (N+n) に改める。そして、番号m+1のデータに同様の処理を始める。
【００１５】
以上の処理を配列にデータ番号m+1のデータがなくなるまで、m=m+1しながら続ける。
最後に、配列に格納されたデータを画面表示する。
【００１６】
この処理は、DBを参照し、簡単なプログラムを実装することで配列にレコードを格納し、それをHTMLのtableタグなどの簡単な表示技術で実現できる。これにより、膨大なデータから１つのツリーをなすデータ群を抽出でき、しかも、ツリーのどの部分のデータを指定してもツリー全体を抽出できるようになる。
【００１７】
次に、この実施の形態について、その詳細を説明する。
まず、ここで対象とするツリー構造をもつデータ群について説明する。ここでは、企業の合併履歴を対象とし、合併元企業が子データ、合併先企業が親データとなる。また、DBに格納されているレコードのキー値は企業コードとし、データの内容は、企業名のみ、親データのキー値は、当該企業の合併先企業の企業コードとする。その合併履歴をツリー構造にしたイメージは図１のようになる。図１は、例えば、企業D1と企業D2が合併し、企業B2が生まれる、というふうに読む。DBサーバ３２には、企業情報テーブルがあり、企業情報テーブルに格納されているデータのレコードイメージは、図２のようになる。図２は、例えば、企業コードc3の企業C3の合併先企業が企業コードb1の企業B1となっていることを表す。図１図２では、企業の合併履歴を例にデータイメージを表示しているが、住所データや、階層組織における部署データ、人員データなど、ツリー構造をもつ他のデータ群にも同様に本実施の形態を適用できる。
【００１８】
次に、本実施の形態を適用したツリー構造をもつデータの表示処理のブロック図を示す。図３において、各端末は、ネットワークを介して互いに接続されており、メモリ、ハードディスクを含む記憶装置、ＣＰＵなどの処理装置を有し、記憶装置に格納されたプログラムに従って、処理装置が情報処理を実行するものである。端末３１はユーザが操作する端末（クライアント）、DBサーバ３２は図１図２のようなツリー構造を持つデータが格納されているDB、端末３３はDBサーバ３２のデータを参照し端末３１へのデータの送信処理をする。また、図３においては、端末３１が１つだけ端末３３に接続されているが、実際には、２つ以上の端末が端末３３に接続されている。端末３１は、ユーザがキーボードから入力した企業コードを、端末３３に送信する。端末３３は、DBサーバにあるデータを参照し、端末３１で表示するデータを作成する機能を持つ。この機能は、端末３１から受信した企業コードをもとに、記憶装置に格納されたプログラムに従って、DBを参照し、端末３１へ送信する表示用データを作成するものである。
【００１９】
次に、本実施の形態を適用した表示用データの格納方法を図４、図５に従って説明する。DBに格納されている企業データは、図２のようなレコード構成になっており、端末３３は、以下の処理を行った後、返り値Rを、図５のようなレコード構成のデータを端末３１に送信する。端末３３のメモリには、領域 k 、領域 i 、返り値Rを格納する領域Rが確保している。
【００２０】
次に、図４を用いて、本実施の形態の処理の内容を説明する。
まず、端末３１がキーボードを介して、企業D1の企業コードd1と、企業コードd1が含まれるツリーデータを検索するイベントを受信し、端末３３にイベントを送信する。（ステップ４０１）。ここでいう「イベント」とは、企業コードd1が含まれるツリーデータの「検索要求情報」を意味する。
【００２１】
端末３３は、端末３１からイベントを受信し、DBサーバ３２の企業情報テーブルから企業コードがd1である企業情報を検索する。企業情報テーブルの企業コード属性にd1と一致するものがなければ、返り値Rにエラーメッセージを格納し、返り値Rを端末３１へ送信する。（ステップ４０２）企業情報テーブルの企業コード属性にd1と一致するものがあれば、メモリ領域kに企業コードd1を格納する。（ステップ４０３）
メモリ領域kに企業コードd1を格納しても、メモリ領域に企業コードd1への参照値を格納してもよい。
【００２２】
企業情報テーブルにおいて、「メモリ領域kに格納されている企業コード」を企業コード属性にもつレコードの、合併先企業コードを取得する。（ステップ４０４）ステップ４０４で取得した合併先企業コードがnullでなければ、メモリ領域kにその合併先企業コードを格納し、ステップ４０４へ戻る。（ステップ４０５、４０６）ステップ４０４で取得した合併先企業コードがnullであれば、企業番号、企業コード、企業名、合併先企業番号の４項目をそれぞれ「１」、「メモリ領域kに格納されている企業コード」、「その企業コードが示す企業名」、「null」とし、それらを１レコードとして返り値Rに格納する。（ステップ４０７）メモリ領域 i に、返り値Rの１レコード目にある企業番号１を格納する。メモリ領域 i に格納されている企業番号 i と同一レコードの企業コードを、企業情報テーブルの合併先企業コード属性から検索する。（ステップ４０９）検索の結果、j個のレコードにおいて、合併先企業コードに一致したとする。（今の例では、企業コードa1を合併先企業コードとしてもつレコードは、企業情報テーブルに2つ存在する。）
以下、端末３３とDBサーバ３２の間で、次の３つの場合に分けて処理が行われる。
（１） j が0でない場合：
返り値Rにおいて、企業番号 i のレコードの次に j 個のレコードを格納し、合併先企業番号に i を設定する。（ステップ４１１）  それぞれのレコードには「企業番号」「企業名」「合併先企業番号」が含まれる。企業番号 i 以降に格納されているレコードの企業番号に、 i + 1 、i + 2 、・・・、を設定する。（ステップ４１２）メモリ領域 i に格納されている企業番号に+1をして格納し直し、ステップ４０８に戻る。（ステップ４１３）
（２） j が0であり、かつ、返り値Rの企業番号 i のレコードが、返り値Rの最後のレコードでない場合、メモリ領域 i に格納されている企業番号に+1をして格納し直し、ステップ４０８に戻る。
【００２３】
（３） j が0であり、かつ、返り値Rの企業番号 i のレコードが、返り値Rの最後のレコードの場合、Rを表示用データとして端末３１に返す。（ステップ４１５）端末３１において、返り値Rをもとに、企業の合併履歴一覧を表示する。
【００２４】
また、図５に示した返り値Rの作成過程例は次のようになる。
端末３１がキーボードを介して企業D1の企業コードd1と、企業コードd1が含まれるツリーデータを検索するイベントを受信し、端末３３にイベントを送信する。（図４  ステップ４０１）
処理端末３３が次の処理をする。
(1) DBサーバ３２の企業情報テーブルから、企業コードと合併先企業コードを参照し、「先頭の合併先企業」A1の企業コードa1を取得する。（図４  ステップ４０２〜４０６）返り値Rの1番目のレコードに、企業番号1、企業コードa1、企業名A1、合併先企業番号「null」を格納する。（図４  ステップ４０７）
(2) 企業A1の合併元企業を検索し、企業B1、B2を取得する。（図４  ステップ４０９）返り値Rの2番目のレコード、3番目のレコードに「企業名B1、合併先企業番号1」「企業名B2、合併先企業番号1」のレコードを格納する。（図４  ステップ４１１）企業B1以降の企業番号を設定する。（図４  ステップ４１２）
(3) 企業B1の合併元企業を検索し、企業C1、C2、C3を取得する。（図４  ステップ４０９）返り値Rの2番目のレコードと3番目のレコードの間に、「企業名C1、合併先企業番号2」、「企業名C2、合併先企業番号2」、「企業名C3、合併先企業番号2」のレコードを格納する。（図４  ステップ４１１）企業C1以降の企業番号を設定し直す。（図４  ステップ４１２）
(4) (3)で取得した企業C1、C2、C3の合併元企業が存在しないことを確認する。（図４  ステップ４０９、４１０、４１４）※合併先企業コードがc1、c2、c3であるレコードの検索結果がnull、または、検索ヒット数が0となる。
【００２５】
(5) 企業B2の合併元企業を検索し、企業D1、D2を取得する。（図４  ４０９）
返り値Rの7番目のレコード、8番目のレコードに「企業名D1、合併先企業番号6」「企業名D2、合併先企業番号6」のレコードを格納する。（図４  ステップ４１１）企業D1以降の企業番号を設定し直す。（図４  ステップ４１２）
(6) 企業D1の合併元企業を検索し、E1、E2、E3を取得する。（図４  ステップ４０９）返り値Rの7番目のレコード、8番目のレコードの間に「企業名E1、合併先企業番号7」「企業名E2、合併先企業番号7」「企業名E3、合併先企業番号7」のレコードを格納する。（図４  ステップ４１１）企業E1以降の企業番号を設定し直す。（図４  ステップ４１２）
(7) (5)(6)で取得した企業E1、E2、E3、D2に合併元企業が存在しないことを確認して合併履歴データのツリーの検索を終了する。（図４  ステップ４０９、４１０、４１４）
(8) 端末３３から端末３１へ返り値Rを送信する。（図４  ステップ４１５）端末３１が、画面に合併履歴一覧表を出力する。
【００２６】
なお、本処理例では、企業D1が指定され、初めに「先頭の合併先企業」である企業A1を求め、その後、B1、B2以前の合併元企業をすべて求める処理を説明した。しかし、各企業の合併先を求める処理と、合併元を求める処理を順不同に実行し、合併元企業をメモリ領域に格納しておくことにより、処理完了までの時間を短縮することも可能である。
【００２７】
特に、大小さまざまな大きさの複数のツリーが含まれているデータの中から、指定したデータに関係する１つのツリーを抽出できる。また、１つのツリーのどのデータを指定しても、ツリー全体を取得することができるため、親の検索、子供の検索だけではなく、兄弟、従兄弟、孫などすべてのデータの把握が可能となる。
【００２８】
以上の本実施の形態によれば、以下のことも実行可能である。
（１）膨大なデータに親子データが埋もれており、ツリー構造を把握できない。本発明により、膨大なデータの中から、ツリー構造をもつデータ群を抽出できる。
【００２９】
また、ツリー構造を持つデータは組織階層のデータのようにデータ全体が１つのツリーになっている場合だけでなく、膨大なデータが、大小さまざまな複数のツリーから成る場合もあるが、本実施の形態では、指定したデータにつながっているツリーのみを抽出することができる。
【００３０】
（２）親データ、子データを把握することはできるが、その兄弟にあたるデータ、従兄弟にあたるデータは把握できない。本発明により、親データ、子データのトレースだけでなく、兄弟・従兄弟・孫データ等、ツリー全体を把握できる。
【００３１】
今回、注目している企業の合併履歴データについて考えれば、現在の企業を１つ指定した場合や、過去に存在し、合併により消滅した企業を１つ指定した場合にも、それら合併によりつながっている企業群を抽出できる。
【図面の簡単な説明】
【００３２】
【図１】企業の合併履歴を表すデータイメージ
【図２】企業情報テーブル（企業情報のDB上のレコードのイメージ）
【図３】データの表示処理をするシステムのブロック図
【図４】データの表示処理をするシステムのデータ取得、データ格納の処理順序
【図５】図１に示す企業の合併履歴の表の作成過程
【符号の説明】
【００３３】
３１  画面を持つクライアント端末
３２  データベースサーバ
３３  処理端末
【図１】
2009129213.tif 000003
【図２】
2009129213.tif 000004
【図３】
2009129213.tif 000005
【図４】
2009129213.tif 000006
【図５】
2009129213.tif 000007