(57)【特許請求の範囲】
【請求項１】
ポインタによりレコード間の関連付けがなされているネットワークデータモデルからリレーショナルデータモデルへ移行するためのデータ移行システムにおいて、
前記ネットワークデータモデルを記憶する第１のデータベースと、
前記リレーショナルデータモデルを記憶する第２のデータベースと、
前記第１のデータベースに記憶された前記ネットワークデータモデルから、レコード間の関連付けを示すポインタを除く移行前レコードを取り出し、取り出された前記移行前レコードを移行後レコードとして前記第２のデータベースに格納するレコード移行手段と、
前記第２のデータベースに記憶された前記移行後レコードに対して、各レコード固有の主キーを追加する主キー追加手段と、
前記第１のデータベースに記憶された前記ネットワークデータモデル内で前記移行前レコードに付加されているポインタを参照し、前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対して、親レコードとなる前記移行後レコードの主キーの値をリレーションキーとして追加するリレーションキー追加手段と、
前記第１のデータベースに記憶された前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対し、前記移行前レコードの順序性を保証した値をセット順キーとして追加するセット順キー追加手段と、
を有することを特徴とするデータ移行システム。
【請求項２】
前記セット順キー追加手段は、前記セット順キーの追加処理を行う日時を、前記セット順キーの値とすることを特徴とする請求項１記載のデータ移行システム。
【請求項３】
前記ネットワークデータモデル用に作成されたアプリケーションプログラムの中に子レコードの順検索命令があると、当該順検索命令を、親レコードの前記主キーと同じ値の前記リレーションキーを持った子レコードの前記セット順キーを参照して子レコードの順検索を行うような命令に変更するデータ操作命令変更手段をさらに有することを特徴とする請求項１記載のデータ移行システム。
【請求項４】
ポインタによりレコード間の関連付けがなされているネットワークデータモデルからリレーショナルデータモデルへ移行するためのデータ移行用プログラムを記録したコンピュータ読み取り可能な記録媒体において、
第１のデータベースに記憶された前記ネットワークデータモデルから、レコード間の関連付けを示すポインタを除く移行前レコードを取り出し、取り出された前記移行前レコードを移行後レコードとして、前記リレーショナルデータモデルを記憶する第２のデータベースに格納するレコード移行機能と、
前記第２のデータベースに記憶された前記移行後レコードに対して、各レコード固有の主キーを追加する主キー追加機能と、
前記第１のデータベースに記憶された前記ネットワークデータモデル内で前記移行前レコードに付加されているポインタを参照し、前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対して、親レコードとなる前記移行後レコードの主キーの値をリレーションキーとして追加するリレーションキー追加機能と、
前記第１のデータベースに記憶された前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対し、前記移行前レコードの順序性を保証した値をセット順キーとして追加するセット順キー追加機能と、
をコンピュータに実現させるためのデータ移行用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
コンピュータにより、ポインタによりレコード間の関連付けがなされているネットワークデータモデルをリレーショナルデータモデルへ移行するためのデータ移行方法において、
レコード移行手段が、第１のデータベースに記憶された前記ネットワークデータモデルから、レコード間の関連付けを示すポインタを除く移行前レコードを取り出し、取り出された前記移行前レコードを移行後レコードとして、前記リレーショナルデータモデルを記憶する第２のデータベースに格納し、
主キー追加手段が、前記第２のデータベースに記憶された前記移行後レコードに対して、各レコード固有の主キーを追加し、
リレーションキー追加手段が、前記第１のデータベースに記憶された前記ネットワークデータモデル内で前記移行前レコードに付加されているポインタを参照し、前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対して、親レコードとなる前記移行後レコードの主キーの値をリレーションキーとして追加し、
セット順キー追加手段が、前記第１のデータベースに記憶された前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対し、前記移行前レコードの順序性を保証した値をセット順キーとして追加する、
ことを特徴とするデータ移行方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ移行システム、データ移行用プログラムを記録したコンピュータ読み取り可能な記録媒体、及びデータ移行方法に関し、特にネットワークデータモデルのシステムからリレーショナルデータモデルのシステムにデータを移行するためのデータ移行システム、そのようなデータ移行をコンピュータに実行させるためのデータ移行プログラムを記録したコンピュータ読み取り可能な記録媒体及びネットワークデータモデルからリレーショナルデータモデルへのデータ移行方法に関する。
【０００２】
【従来の技術】
近年、システム構築で用いられるデータモデルとして、モデルの分かり易さ、データ独立性、データ操作の非手続性などの面からリレーショナルデータモデルが主流となっている。すでにネットワークデータモデルで構築されたシステムは、技術者の減少やメンテナンスが容易でないことなど保守や運用面で不安が生じているため、ネットワークデータモデルからリレーショナルデータモデルへの移行が必要とされている。
【０００３】
ネットワークデータモデルでは、ＤＢＭＳ(Data Base Management System) がレコード間の関係を制御するポインタを持っている。これに対し、リレーショナルデータモデルでは、データを単純な表形式で表現しており、１つの表の中ではデータに階層的な関係を持たない。
【０００４】
ネットワークデータモデルにおけるポインタに関する情報はセット情報として各レコードに付加されているが、利用者が意識的に設定するものではない。しかも、リレーショナルデータモデルは階層的関係を持たないことが前提であるため、レコード間の階層的関係を示すセット情報をそのままリレーショナルデータモデルのレコードに付加して利用することはできない。そのため、ネットワークデータモデルのデータ構造のままリレーショナルデータモデルに移行すると、レコード間の関係を判断することができなくなる。
【０００５】
したがって、データを移行する際には、リレーショナルデータモデルに適用できるようにデータ構造を見直し、ネットワークデータモデルのデータを加工してからデータの移行を行っていた。
【０００６】
【発明が解決しようとする課題】
しかし、データ構造の変更は、そのデータを処理対象としているアプリケーションプログラム（以後、単に「アプリケーション」と呼ぶ）の処理機構全体に影響する。ネットワークデータモデルからリレーショナルデータモデルへデータを移行した場合、既存のアプリケーションをそのまま使用できないのは勿論であるが、部分的に変更して使用することも困難である。そこで、既存アプリケーションを破棄し、新しいデータ構造を処理するアプリケーションを別に作成する必要があった。そのため、データを移行した際にはデータベースシステム全体を作り直すことになり、データ移行全体にかかる作業時間・作業量・作業費用の負担が大きかった。
【０００７】
本発明はこのような点に鑑みてなされたものであり、ネットワークデータモデルからリレーショナルデータモデルへの移行を、品質を落とさずに短期間で行うことができるデータ移行システムを提供することを目的とする。
【０００８】
また、本発明の他の目的は、コンピュータによるネットワークデータモデルからリレーショナルデータモデルへの移行を、品質を落とさずに短期間で行うためのデータ移行用プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することである。
【０００９】
また、本発明の別の目的は、ネットワークデータモデルからリレーショナルデータモデルへの移行を、品質を落とさずに短期間で行うためのデータ移行方法を提供することである。
【００１０】
【課題を解決するための手段】
本発明では上記課題を解決するために、ポインタによりレコード間の関連付けがなされているネットワークデータモデルからリレーショナルデータモデルへ移行するためのデータ移行システムにおいて、前記ネットワークデータモデルを記憶する第１のデータベースと、前記リレーショナルデータモデルを記憶する第２のデータベースと、前記第１のデータベースに記憶された前記ネットワークデータモデルから、レコード間の関連付けを示すポインタを除く移行前レコードを取り出し、取り出された前記移行前レコードを移行後レコードとして前記第２のデータベースに格納するレコード移行手段と、前記第２のデータベースに記憶された前記移行後レコードに対して、各レコード固有の主キーを追加する主キー追加手段と、前記第１のデータベースに記憶された前記ネットワークデータモデル内で前記移行前レコードに付加されているポインタを参照し、前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対して、親レコードとなる前記移行後レコードの主キーの値をリレーションキーとして追加するリレーションキー追加手段と、前記第１のデータベースに記憶された前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対し、前記移行前レコードの順序性を保証した値をセット順キーとして追加するセット順キー追加手段と、を有することを特徴とするデータ移行システムが提供される。
【００１１】
このデータ移行システムによれば、まず、レコード移行手段により、ポインタを除く移行前レコードが取り出され移行後レコードが作成される。そして、移行後レコードの親レコードには、主キー追加手段により主キーが追加される。また、移行後レコードの子レコードには、主キー追加手段により主キーが追加され、リレーションキー追加手段により親レコードの主キーと同じ値のリレーションキーが追加され、さらに、セット順キー追加手段により、移行前レコードの順序性を保証したセット順キーとが追加される。これにより、移行前レコード間の関係が、主キー、リレーションキー及びセット順キーで表されたリレーショナルデータモデルが生成される。その結果、既存アプリケーションプログラムの処理構造を変えずに、データベースに対する操作命令を変更するだけで、移行後レコードを処理するためのアプリケーションプログラムを作成することができる。
【００１２】
また、ポインタによりレコード間の関連付けがなされているネットワークデータモデルからリレーショナルデータモデルへ移行するためのデータ移行用プログラムを記録したコンピュータ読み取り可能な記録媒体において、第１のデータベースに記憶された前記ネットワークデータモデルから、レコード間の関連付けを示すポインタを除く移行前レコードを取り出し、取り出された前記移行前レコードを移行後レコードとして、前記リレーショナルデータモデルを記憶する第２のデータベースに格納するレコード移行機能と、前記第２のデータベースに記憶された前記移行後レコードに対して、各レコード固有の主キーを追加する主キー追加機能と、前記第１のデータベースに記憶された前記ネットワークデータモデル内で前記移行前レコードに付加されているポインタを参照し、前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対して、親レコードとなる前記移行後レコードの主キーの値をリレーションキーとして追加するリレーションキー追加機能と、前記第１のデータベースに記憶された前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対し、前記移行前レコードの順序性を保証した値をセット順キーとして追加するセット順キー追加機能と、をコンピュータに実現させるためのデータ移行用プログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【００１３】
このデータ移行用プログラムを記録した媒体は、記録したデータ移行用プログラムをコンピュータで実行させることにより、ネットワークデータモデルから、レコード間の関連付けを示すポインタを除く移行前レコードを取り出し、取り出された移行前レコードを移行後レコードとするレコード移行手段と、移行後レコードに対して、各レコード固有の主キーを追加する主キー追加手段と、ネットワークデータモデル内で移行前レコードに付加されているポインタを参照し、子レコードとなる移行後レコードに対して、親レコードとなる移行後レコードの主キーの値をリレーションキーとして追加するリレーションキー追加手段と、子レコードとなる移行後レコードに対し、移行前レコードの順序性を保証した値をセット順キーとして追加するセット順キー追加手段と、を有するコンピュータシステムを構築することができる。
【００１４】
また、コンピュータにより、ポインタによりレコード間の関連付けがなされているネットワークデータモデルをリレーショナルデータモデルへ移行するためのデータ移行方法において、レコード移行手段が、第１のデータベースに記憶された前記ネットワークデータモデルから、レコード間の関連付けを示すポインタを除く移行前レコードを取り出し、取り出された前記移行前レコードを移行後レコードとして、前記リレーショナルデータモデルを記憶する第２のデータベースに格納し、主キー追加手段が、前記第２のデータベースに記憶された前記移行後レコードに対して、各レコード固有の主キーを追加し、リレーションキー追加手段が、前記第１のデータベースに記憶された前記ネットワークデータモデル内で前記移行前レコードに付加されているポインタを参照し、前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対して、親レコードとなる前記移行後レコードの主キーの値をリレーションキーとして追加し、セット順キー追加手段が、前記第１のデータベースに記憶された前記移行前レコードの子レコードとなる前記第２のデータベースに記憶された前記移行後レコードに対し、前記移行前レコードの順序性を保証した値をセット順キーとして追加する、ことを特徴とするデータ移行方法が提供される。
【００１５】
このデータ移行方法によれば、親レコードには各レコード固有の主キーが付加され、子レコードには、各レコード固有の主キー、親レコードの主キーと同じ値のリレーションキー、及び移行前レコードの順序が示されたセット順キーが付加された移行後レコードが得られる。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の原理構成図である。この図では、ネットワークデータモデル１０には、レコードタイプが「レコードＡ」である移行前レコード１１と、レコードタイプが「レコードＢ」である移行前レコード１２とがある。移行前レコード１１と移行前レコード１２とは親子関係にある。
【００１７】
レコード移行手段１は、ネットワークデータモデル１０の移行前レコード１１，１２と同じ形式の移行後レコード２１，２２を、リレーショナルデータモデル２０用に作成する。主キー追加手段２は、移行後レコード２１，２２の全てに対して、各レコード固有の主キー２３，２４を追加する。リレーションキー追加手段３は、移行前レコード１１，１２に付加されているポインタを参照し、子レコードとなる移行後レコード２２に対して、関係する親レコードの主キー２３の値をリレーションキー２５として追加する。
【００１８】
セット順キー追加手段４は、子レコードとなる移行後レコード２２に対し、移行前レコード１１，１２の順序性を保証した値をセット順キー２６として追加する。ここで、移行前レコードの順序性を保証するとは、ある親レコードに対して複数の子レコードがあった場合、親レコードから順に呼び出されるレコードの順番を崩さないことである。すなわち、移行後レコード２２のセット順キー２６を比較すれば、親レコードから順検索をした場合のレコードが呼び出される順番が判別できる。
【００１９】
このようなデータ移行システムによれば、まず、レコード移行手段１により、ネットワークデータモデルと同一形式のレコード２１，２２が作成される。これにより、既存のアプリケーションへの影響範囲が、データベースに対する操作命令（データの定義命令も含む）に限定される。作成されたリレーショナルデータモデル２０の各レコード２１，２２には、主キー追加手段２により主キー２３，２４が追加される。また、子レコードとなるレコード２２には、さらにリレーションキー追加手段３とセット順キー追加手段４とにより、リレーションキー２５とセット順キー２６とが追加される。リレーションキー２５によってレコード間の親子関係が特定できる。また、セット順キー２６によって、親子関係が１対ｎの場合の子レコードの順序性が保証される。
【００２０】
従って、移行後のリレーショナルデータモデル２０のデータに対しても、レコード間の親子関係や子レコードの順序性に基づいたアクセスを行うことが可能となる。この結果、ネットワークデータモデル１０に用いられていたアプリケーションの構造を変えずに、リレーショナルデータモデル２０用のアプリケーションを生成することができる。この際、アプリケーションの構造を変えずにすむため、ネットワークデータモデル１０用のアプリケーションにおけるアクセス命令の命令文を、１文ずつリレーショナルデータモデル２０用のアクセス命令の命令文へ変換することができる。したがって、既存のアプリケーションのアクセス命令を機械的に変換していけば、リレーショナルデータモデル２０用のアプリケーションを生成でき、作業が極めて容易である。すなわち、データ移行作業を、少ない作業量で、迅速にかつ安価に行うことができる。
【００２１】
なお、移行後レコード２１，２２に追加される主キー２３，２４の値には、対応するレコードの一意性を保証するために、主キー２３，２４の追加処理ごとにカウントアップされるカウンタの値を用いることができる。同様に、セット順キー２６の順序性を保証するためにも、セット順キー２６が設定される度にカウントアップされるカウンタの値を用いることができる。また、主キー２３，２４やセット順キー２６を設定する日時（タイムスタンプ）を、それらのキーの値として利用してもよい。タイムスタンプを用いれば、常にそのキーを設定した順番が保たれるとともに、別途カウンタを設定する必要もない。ただし、セット順キー２６の値にカウンタやタイムスタンプを用いる場合、複数の子レコード間の順序性を保つ必要があるため、データ移行時のセット順キー２６の追加処理を常に上位のレコードから順に行わなければならない。
【００２２】
以上のような本発明のデータ移行システムは、所定のプログラムをコンピュータで実行させることにより実現できる。また、データ移行のみならず、アプリケーションの変更をコンピュータで行うこともできる。そこで、コンピュータを用いてデータ移行とアプリケーションの変更とを行う実施の形態を、以下に説明する。なお、本発明の処理を記述したプログラムは、コンピュータに付属する各種記録媒体に格納されている。
【００２３】
図２は、本発明の実施の形態を示す図である。コンピュータ３０は、既存のアプリケーション４１を、リレーショナルデータモデル６０に適用可能なアプリケーション４２へ変換するデータ操作命令変換プログラム３１を有している。また、ネットワークデータモデル５０をリレーショナルデータモデル６０へ変換するプログラムは、レコードＡ用データ移行プログラム３２とレコードＢ用データ移行プログラム３３とに別れている。レコードＡ用データ移行プログラム３２は、図１の中のレコード移行手段１と主キー追加手段２との処理機能を実行するための命令が記述されている。レコードＢ用データ移行プログラム３３は、図１の中の全ての処理機能を実行するための命令が記述されている。
【００２４】
図３は、本実施の形態によるデータ移行状況を示す図である。ネットワークデータモデル５０には、親レコードとなる「レコードＡ」に属する２つのレコード５１，５２がある。ここで、レコード５１の内容を「Ａ１」とし、レコード５２の内容を「Ａ２」とする。レコード５１の子レコードには、「レコードＢ」に属するレコード５３がある。レコード５２の子レコードには、「レコードＢ」に属する２つのレコード５４，５５がある。ここで、レコード５３の内容を「Ｂ１」、レコード５４の内容を「Ｂ２」、レコード５５の内容を「Ｂ３」とする。  レコードＡ用データ移行プログラム３２は、レコード５１，５２の形式を変えずに、そのままリレーショナルデータモデル６０のレコード６１，６２とする。同様に、レコードＢ用データ移行プログラム３３は、レコード５３〜５５の形式を変えずに、そのままリレーショナルデータモデル６０のレコード６３，６４，６５とする。
【００２５】
次に、レコードＡ用データ移行プログラム３２は、２つのレコード６１，６２の主キー項目に主キー６１ａ，６２ａを追加する。同様に、レコードＢ用データ移行プログラム３３は、レコード６３〜６５に対して主キー６３ａ，６４ａ，６５ａを追加する。これらの主キー６１ａ，６２ａ，６３ａ，６４ａ，６５ａは、対応するレコード毎に個別の値が設定される。この例では、それぞれの主キーとして「ｔａ１」、「ｔａ２」、「ｔｂ１」、「ｔｂ２」、「ｔｂ３」が設定されている。
【００２６】
レコードＢ用データ移行プログラム３３は、子レコードとなるレコード６３〜６５のリレーションキー項目に、各レコードの親レコードに追加されている主キーの値をリレーションキー６３ｂ，６４ｂ，６５ｂとして追加する。この結果、レコード６３には、レコード６１の主キー６１ａの値、すなわち「ｔａ１」がリレーションキー６３ｂとして追加される。残りの２つのレコード６４，６５は、共にレコード６２を親レコードとしているため、レコード６２の主キー６２ａの値、すなわち「ｔａ２」がリレーションキー６４ｂ，６５ｂとして追加される。なお、レコードの関連性は、ネットワークデータモデル５０の各レコードに付加されたポインタ（図中、各レコード間の矢印で示している）を参照することにより判別できる。
【００２７】
最後に、レコードＢ用データ移行プログラム３３は、子レコードとなるレコード６３〜６５のセット順キー項目に、ネットワークデータモデル５０の順序性を保証したセット順キー６３ｃ，６４ｃ，６５ｃを追加する。順序性を崩さないためには、ネットワークデータモデル５０の親レコードとなるレコード５１，５２から、ポインタが指し示すレコードを順番に追っていく。そして、ポインタで示されたレコードから順に番号を振っていく。この例では、セット順キー６３ｃ，６４ｃ，６５ｃの値には、タイムスタンプを用いるものとする。これにより、まずレコード６３には「ｔｂｎ１」のセット順キー６３ｃが設定される。そして、ポインタの順番通りに、レコード６４には「ｔｂｎ２」のセット順キー６４ｃが設定され、レコード６５には「ｔｂｎ３」のセット順キー６５ｃが設定される。
【００２８】
このようにして、リレーショナルデータモデル６０のデータが作成される。なお、レコードＢ用データ移行プログラム３３は、ポインタがそのレコードの親レコードを指していることを確認することにより、そのレコードが最後であることを認識する。
【００２９】
データの移行を行った後、アプリケーションを変更する。この際、変更するのは、既存のアプリケーションの中のデータ操作命令のみである。以下、アプリケーションの例と、そのアプリケーションによるデータアクセスの流れとを、レコードの検索時と更新時とに分けて説明する。
【００３０】
図４は、レコードの検索時のデータアクセス状況を示す図である。図中、左側にネットワークデータモデル５０におけるレコードの検索例を示しており、右側にリレーショナルデータモデル６０におけるレコードの検索例を示している。
【００３１】
この例では、既存アプリケーションに、
（ａ１）
「ＭＯＶＥ  ’Ａ２’  ＴＯ  エントリキー項目」
「ＧＥＴ  ＡＮＹ  レコードＡ」
（ｂ１）
「ＧＥＴ  ＮＥＸＴ  ’レコードＢ’  ＷＩＴＨＩＮ  ’Ａ−Ｂ’」
（ｃ１）
「ＧＥＴ  ＮＥＸＴ  ’レコードＢ’  ＷＩＴＨＩＮ  ’Ａ−Ｂ’」
というデータ操作命令が含まれていた場合を考える。（ａ１）は「レコードＡ」の検索処理（エントリキー項目によるレコードの直接検索）である。この例では、「エントリキー項目」に「Ａ２」を設定し、「レコードＡ」の中から「Ａ２」のレコード５２を取得する。（ｂ１）は、子レコードの順検索である。「レコードＢ」に属するレコードの中から、（ａ１）で検索したレコード５２の子レコードを検索する。これによりレコード５４が取得できる。（ｃ１）は、（ｂ１）の処理と同様に子レコード順検索であり、この検索により「Ｂ３」のレコード５５が取得できる。
【００３２】
このような命令を、データ操作命令変換プログラム３１により変更すると、以下のようになる。
（ａ２）
「ＭＯＶＥ  ’Ａ２’  ＴＯ  エントリキー項目」
「ＲＥＡＤ  レコードＡ  ＫＥＹ  ＩＳ  エントリキー項目」
（ｂ２）
「ＭＯＶＥ  主キー項目．レコードＡ  ＴＯ  リレーションキー退避領域」
「ＭＯＶＥ  ＭＩＮ値  ＴＯ  セット順キー退避領域」
「ＳＴＡＲＴ  レコードＢ  ＫＥＹ  ＞  リレーションキー退避領域  セット順キー退避領域」
「ＲＥＡＤ  レコードＢ  ＮＥＸＴ」
（ｃ２）
「ＭＯＶＥ  セット順キー項目．レコードＢ  ＴＯ  セット順キー退避領域」
「ＳＴＡＲＴ  レコードＢ  ＫＥＹ  ＞  リレーションキー退避領域  セット順キー退避領域」
「ＲＥＡＤ  レコードＢ  ＮＥＸＴ」
（ａ２）は、レコードＡの検索処理であり、（ａ１）の命令をリレーショナルデータベース制御用の命令に変換したものである。レコードの形式は変更されていないため、検索前の各種キー項目への設定値は既存の処理機構を利用でき、「Ａ２」のレコード６２の直接検索が行える。
【００３３】
（ｂ２）は、レコードＢの検索処理であり、（ｂ１）の命令をリレーショナルデータベース制御用の命令に変換したものである。この命令では、リレーションキー退避領域６６とセット順キー退避領域６７との２つのレコード退避領域を使用している。これらの退避領域は、レコードＢ検索用のアプリケーションプログラムの作業領域に定義されている。
【００３４】
（ｂ２）の１行目では、（ａ２）で検索したレコード６２の主キー６２ａの値を、リレーションキー退避領域６６に設定している。２行目では、セット順キー退避領域６７に下限値（ＭＩＮ値）を設定している。通常「０」を下限値とする。３行目では、「レコードＢ」の「ｔａ２」がリレーションキーとして追加されているレコードの中で、セット順キーが最も小さい値のレコードの位置が指定される。この例では、「Ｂ２」のレコード６４のセット順キー６４ｃが最も小さいため、レコード６４の位置が指定される。４行目では、指定された位置のレコード、すなわち「Ｂ２」のレコード６４を取得する。
【００３５】
（ｃ２）は、レコードＢの検索処理であり、（ｃ１）の命令をリレーショナルデータベース制御用の命令に変換したものである。１行目では、（ｂ２）で取得したレコード６４のセット順キー６４ｃの値をセット順キー退避領域６７に設定する。なお、リレーションキー退避領域６６の値はそのままである。２行目、３行目は、（ｂ２）の３行目、４行目と同じである。すなわち、２行目の命令によりセット順キーが「ｔｂｎ２」の次ぎの値「ｔｂｎ３」であるレコード６５の位置が指定され、３行目の命令によりレコード６５を取得する。
【００３６】
図５は、レコードの更新時のデータアクセス状況を示す図である。図中、左側にネットワークデータモデル５０におけるレコードの更新例を示しており、右側にリレーショナルデータモデル６０におけるレコードの更新例を示している。
【００３７】
この例では、既存アプリケーションに、
（ｄ１）
「ＭＯＶＥ  ’Ａ１’  ＴＯ  エントリキー項目」
「ＧＥＴ  ＡＮＹ  レコードＡ」
（ｅ１）
「ＳＴＯＲＥ  ’レコードＢ’  ＷＩＴＨＩＮ  ’Ａ−Ｂ’」
というデータ操作命令が含まれていた場合を考える。（ｄ１）では、レコードＡの検索（エントリキー項目によるレコードの直接検索）を行う。すなわち、子レコードの追加を行うために、まず親レコードを直接検索する。（ｅ１）では、レコードＢの更新（子レコードの追加）を行う。この命令により、「Ａ１」のレコード５１の子レコードとして、「Ｂ４」のレコード５６が追加される。
【００３８】
このような命令を、データ操作命令変換プログラム３１により変更すると、以下のようになる。
（ｄ２）
「ＭＯＶＥ  ’Ａ１’  ＴＯ  エントリキー項目」
「ＲＥＡＤ  レコードＡ  ＫＥＹ  ＩＳ  エントリキー項目」
（ｅ２）
「ＭＯＶＥ  主キー項目．  レコードＡ  ＴＯ  リレーションキー退避領域」
「ＭＯＶＥ  タイムスタンプ  ＴＯ  セット順キー退避領域」
「ＷＲＩＴＥ  レコードＢ  ＦＲＯＭ  レコードＢ出力用の退避領域」
ここで、（ｄ２）の命令は、検索時の（ａ２）の命令と同様の処理である。（ｅ２）は、レコードＢの更新処理（子レコードの追加）であり、（ｅ１）の命令をリレーショナルデータベース制御用の命令に変換したものである。１行目では、リレーションキー退避領域６６に、（ｄ２）で検索した親レコードの主キー値を設定する。２行目では、セット順キー退避領域６７にタイムスタンプ（ｔｂｎ４）を設定する。３行目では、レコードＢ出力用の退避領域のレコードを、レコードＢのレコード６８として追加する。このとき、このレコード６８の主キー６８ａ、リレーションキー６８ｂ、セット順キー６８ｃが追加される。リレーションキー６８ｂにはリレーションキー退避領域６６の値が設定され、セット順キー６８ｃにはセット順キー退避領域６７のタイムスタンプが設定される。
【００３９】
以下に、具体的なデータを用いて、データ移行例を示す。
図６は、ネットワークデータモデルと移行後のリレーショナルデータモデルとのデータ構造の例を示す図である。
【００４０】
ネットワークデータモデル５０には、従業員レコード５０ａと家族レコード５０ｂとが格納されている。従業員レコード５０ａには「名前」と「役職」との項目がある。家族レコード５０ｂには、「名前」と「続柄」との項目がある。これらのレコードはポインタｔ１〜ｔ６により関連付けられている。そして、各レコードには、セット情報５０ｃが付加されている。セット情報５０ｃには、「前」と「後」との項目がある。「前」は、そのレコードの直前のレコードを示すポインタが示されている。「後」は、そのレコードの次の順番のレコードへのポインタが示されている。なお、このセット情報５０ｃは、利用者が意識して設定するものではない。
【００４１】
図の例では、「Ｙ田Ｙ夫」には、「Ｙ田１美」という妻と二人の子供がおり、長男の名前が「Ｙ田１朗」、次男の名前が「Ｙ田２朗」である。また、「Ｙ田Ｙ志」には、「Ｙ田１子」という妻がいる。
【００４２】
このようなデータをリレーショナルデータモデル６０に移行すると、従業員レコード６０ａと家族レコード６０ｂとがそのままの形式で移行される。セット情報５０ｃは移行されないが、セット情報５０ｃの代りに、従業員レコード６０ａには主キー６０ｃが追加され、家族レコード６０ｂには主キー６０ｄ、リレーションキー６０ｅ及びセット順キー６０ｆが追加される。これにより、レコード間の関係を示す情報が保持される。
【００４３】
以上のようなデータ移行を行うことにより、各レコードタイプ（「従業員レコード」、「家族レコード」などの別）毎にデータを移行でき、データ移行作業が容易となる。その結果、データ移行プログラムの標準化が可能となっている。
【００４４】
また、ネットワークデータモデルにおいて使用されていた既存のアプリケーションのデータ操作命令を１文ずつ置き換えていくことにより、リレーショナルデータモデルのアプリケーションとして利用でき、しかも、変更個所がデータ操作命令に限られるので、変更プログラムの作成が容易である。なお、データ操作命令の変更は簡単であるため、データ操作命令変換プログラムを使わずに利用者が編集プログラム（エディタ）などを用いて手操作で命令を書き換えることも可能である。
【００４５】
以上の理由により、データの移行を行った際にシステム全体を変更する必要がなく、ネットワークデータモデルからリレーショナルデータモデルへの移行を安価で、短期間、高品質に行うことが可能となる。
【００４６】
【発明の効果】
以上説明したように本発明のデータ移行システムでは、レコード形式を変えずにレコードを移行する手段と、移行したレコードに主キー、リレーションキー及びセット順キーを追加する各手段とを備えたため、移行後もレコードの形式に変更がなく、かつレコード間の親子関係および子レコードの順序性を保持したままリレーショナルデータモデルへ移行することができる。その結果、既存のアプリケーションプログラムの流用が可能となり、データの移行が安価で、短期間、高品質に行うことができる。
【００４７】
また、本発明のデータ移行用プログラムを記録した媒体によれば、記録したデータ移行用プログラムをコンピュータで実行させることにより、上記のデータ移行システムをコンピュータによって実現することが可能となる。
【００４８】
また、本発明のデータ移行方法によれば、レコード形式を変えずにレコードを移行し、移行したレコードに主キー、リレーションキー及びセット順キーを追加するようにしたため、レコードタイプごとに移行でき、データの移行が容易となる。しかも、移行後のレコードは、移行前のレコードと同じ形式であり、かつレコード間の親子関係および子レコードの順序性が保持されているため、既存のアプリケーションプログラムの流用が可能である。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】本発明の実施の形態を示す図である。
【図３】本実施の形態によるデータ移行状況を示す図である。
【図４】レコードの検索時のデータアクセス状況を示す図である。
【図５】レコードの更新時のデータアクセス状況を示す図である。
【図６】ネットワークデータモデルと移行後のリレーショナルデータモデルとのデータ構造の例を示す図である。
【符号の説明】
１  レコード移行手段
２  主キー追加手段
３  リレーションキー追加手段
４  セット順キー追加手段
１０  ネットワークデータモデル
１１，１２  移行前レコード
２０  リレーショナルデータモデル
２１，２２  移行後レコード
２３，２４  主キー
２５  リレーションキー
２６  セット順キー
【図１】
0003734334.tif 000002
【図２】
0003734334.tif 000003
【図３】
0003734334.tif 000004
【図４】
0003734334.tif 000005
【図５】
0003734334.tif 000006
【図６】
0003734334.tif 000007