付録E.2 クラス名やプロパティ名などをデータベース定義の名称に使用するためのデータベース移行

データベース定義の名称に,GUID値を変換したIDを使用するデータベースから,クラス名やプロパティ名を使用するデータベースに移行するための,移行手順およびデータベース移行ツールについて説明します。

<この項の構成>
(1) 移行手順
(2) EDMChangeDBDefName(クラス名やプロパティ名などをデータベース定義名称に使用するためのデータベース移行ツール)の文法
(3) 名称定義ファイル
(4) エラー発生時の対策手順
(5) 注意事項

(1) 移行手順

データベースの移行手順について説明します。

  1. データベースのバックアップを作成します。
    • データベースのエラーによってデータベース移行ツールが異常終了した場合,このバックアップからデータベースを回復します。
  2. 名称定義ファイルを作成します。
    • クラス名やプロパティ名などをデータベース定義の名称に使用する場合の規則に従って,クラス名およびプロパティ名が指定されている場合,この作業は不要です。
    • 名称定義ファイルについては,「(3) 名称定義ファイル」を参照してください。
  3. RDエリアを拡張する必要がある場合は,HiRDBのデータベース構成変更ユティリティ(pdmod)を実行して,RDエリアを拡張します。
    • 表識別子および列名に関するメタ情報およびデータベース定義の変更によって,RDエリアを拡張する必要がある場合は,RDエリアを拡張してください。
    • HiRDBのデータベース構成変更ユティリティについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
  4. EDMChangeDBDefNameコマンドを実行します。
    データベース定義文が出力されます。
  5. データベース定義文格納ファイルを入力ファイルとして,HiRDBのデータベース定義ユティリティ(pddef)を実行し,スキーマの定義内容を更新します。
    手順4.実行後に出力されたデータベース定義文を基に,スキーマの定義内容が更新され,クラス名やプロパティ名などをデータベース定義の名称に使用できるデータベースのスキーマが,HiRDBの表に格納されます。
    • HiRDBのデータベース定義ユティリティについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。

(2) EDMChangeDBDefName(クラス名やプロパティ名などをデータベース定義名称に使用するためのデータベース移行ツール)の文法

EDMChangeDBDefNameコマンドの詳細について説明します。

機能
データベース定義の名称に使用する値を,GUID値を変換したIDから,クラス名やプロパティ名に変更します。
このコマンドを初めて実行する場合,すべての表識別子および列名が変更されます。2回目以降は,-fオプションに指定した名称定義ファイルに定義している表識別子および列名だけが変更されます。
形式

EDMChangeDBDefName  〔-f 名称定義ファイル名〕
                     -o データベース定義文格納ファイル名
                   〔-r 表格納用RDエリア名〕
                   〔-i インデクス格納用RDエリア名〕

オプション
-f 名称定義ファイル名
名称定義ファイルを絶対パスで指定します。省略した場合,クラス名が表識別子になり,プロパティ名が列名になります。なお,次の場合は名称定義ファイルを必ず指定してください。
  • 表識別子として使用できないクラス名,および列名として使用できないプロパティ名を指定している場合
  • このコマンドを実行するのが2回目以降の場合
名称定義ファイルについては,「(3) 名称定義ファイル」を参照してください。
-o データベース定義文格納ファイル名
出力されたデータベース定義文を格納するファイルを絶対パスで指定します。
-r 表格納用RDエリア名
このコマンドを初めて実行する場合,表識別子および列名を格納するメタ情報の表が追加されます。このメタ情報の表を格納するユーザ用RDエリア名を指定します。指定を省略した場合,メタ情報の表は,定義されている表数が最少の公用RDエリアに格納されます。
-i インデクス格納用RDエリア名
このコマンドを初めて実行する場合,メタ情報用のインデクスが追加されます。このメタ情報用のインデクスを格納するユーザ用RDエリア名を指定します。指定を省略した場合,メタ情報用のインデクスは,表識別子および列名のメタ情報の表が格納されているRDエリアに格納されます。

(3) 名称定義ファイル

名称定義ファイルには,ユーザ定義のクラスに対応する表識別子,およびユーザ定義のプロパティに対応する列名を定義します。ここでは,名称定義ファイルの記述形式および記述例について説明します。

名称定義ファイルの記述形式
名称定義ファイルの記述形式を次に示します。

class=クラス名,DBAlias=表識別子
prop=プロパティ名,DBAlias=列名

class=クラス名,DBAlias=表識別子
ユーザ定義のクラスに対応する表識別子(1~28バイト)を指定します。クラス名を表識別子として使用できない場合は,必ず指定してください。
prop=プロパティ名,DBAlias=列名
ユーザ定義のプロパティに対応する列名を指定します。プロパティ名を列名として使用できない場合は,必ず指定してください。
次に示すクラス名やプロパティ名などをデータベース定義の名称に使用する場合の規則に従って,列名を指定してください。規則の詳細については,「4.7.2 サブクラス名およびプロパティ名をデータベース定義の名称に使用する場合の規則」を参照してください。
  • VariableArray型のプロパティに対応する列名は,1~14バイトで指定する。
  • VariableArray型の要素のプロパティに対応する列名は,1~15バイトで指定する。
  • 上記以外のプロパティに対応する列名は,1~28バイトで指定する。
なお,このファイルで,行頭が「;」(セミコロン)または「#」(シャープ)の行はコメントとして処理されます。
名称定義ファイルの記述例
名称定義ファイルの記述例を次に示します。

#クラス
class=usrClass_ProblemInformationDocument,DBAlias=CProblemInfoDoc
class=usrClass_QuestionAndAnswerDocument,DBAlias=CQandADoc
 
#VariableArray型のプロパティ
prop=usrProp_WriterInformation,DBAlias=PWriterInfo
 
#VariableArray型の要素のプロパティ
prop=usrProp_WriterName,DBAlias=PWriterName
 
#上記以外のプロパティ
prop=usrProp_ProblemInformationDocument,DBAlias=PProblemInfoDoc
prop=usrProp_QuestionAndAnswerDocument,DBAlias=PQandADoc

(4) エラー発生時の対策手順

データベースのエラーによってデータベース移行ツールが異常終了した場合,次に示す手順に従って対策を実施してください。

  1. 移行手順1.で作成したバックアップから,データベースを回復します。
  2. エラーメッセージを基に,エラーの要因を取り除きます。
  3. 移行手順3.から再度実行します。

(5) 注意事項