DDF Builder User's Guide (v11)

チュートリアル 1 - DDF Builder でテーブル定義を作成する

シナリオ

このチュートリアルでは、Btrieve データ ファイルがあり、そのレポートを作成するために ODBC アクセスを提供する必要があります。

これを行うには、その Btrieve ファイル用のテーブル定義を作成する必要があります。テーブル定義はデータベースの DDF ファイルに格納されます。ご存知のとおり、この Btrieve ファイル用のテーブル定義はないので最初から作成します。

目的

このチュートリアルの目的は、テーブル定義のない Btrieve ファイルへリレーショナル アクセスを提供するために必要な手順を実践することです。このチュートリアルの目的を達成するためには、DDF Builder を使用して以下の作業を実行します。

必要な知識

DDF Builder でテーブル定義の作成や変更作業を行うときは、そのデータの構造についてある程度の知識が必要です。このレコード長やインデックス情報などいくつかの情報は Btrieve ファイル自身に保存されます。しかし、列情報は Btrieve ファイルに保存されません。この列情報はソフトウェア ベンダーやアプリケーション開発者から提供される場合もあります。データを入念に調べてテーブル定義の作成や変更を試みることもできますが、データの構造について十分な知識を持っていない場合はこのユーティリティを使用しないようにしてください。

このチュートリアルの場合、データの構造はわかっています。このファイルの構造を見てみましょう。

CREATE_NEW.MKD という名前の Btrieve データ ファイルがあります。このファイルのレコード長は 110 バイトで 6 個のフィールドがあります。このフィールドは次のように定義されています。

表 8 作成する DDF のデータ構造
フィールド
サイズ
データ型
桁数
小数位
ヌル
大小文字無視
インデックス
ID
4
Integer
 
 
×
 
First Name
20
String
 
 
 
Last Name
20
String
 
 
×
 
DOB
4
Date
 
 
 
 
Address
50
String
 
 
 
Income
8
Currency
8
2
 
 

このファイルには、ID フィールドに設定された重複のないキー(一意のインデックス)があり、そのインデックスには indx_id という名前が付けられています。

データ構造について理解できたら、作業を開始することができます。DDF Builder を使用して空のデータベースを作成することから始めます。これは Btrieve ファイル用に定義する空の DDF のセットを提供します。

Pervasive データベースを作成する

既存の Btrieve ファイル用に DDF を作成する前に、まずはデータベースを作成する必要があります。DDF Builder をまだ実行していない場合は[スタート]メニューからアクセスして起動します。

データベースを作成するには

  1. スタート]メニューから Pervasive PSQL v11 SP2 の[ユーティリティ]プログラム グループにアクセスし、[DDF Builder]をクリックして DDF Builder を起動します。
  2. データ ソース エクスプローラーで、データベースを作成するマシンのツリーを展開します。これは DDF Builder がインストールされている同じマシンです。
  3. データベース]アイコンを右クリックし、次に[データベースの追加]をクリックします。



新しいデータベースを作成するための[データベースの新規作成]ダイアログ ボックスが表示されます。

  1. [データベースの新規作成]ウィザードで、以下のパラメーターを指定します。

[データベースの新規作成]ダイアログは次のようになります。


ヒント

これらの手順でデータベースを作成すると、データ ソース名(DSN)も作成されます。チュートリアルの作業が終了したら、ここで作成された DSN とデータベースは削除してもかまいません。


  1. 終了]をクリックすると、指定した場所にデータベースと空の DDF ファイルが作成されます。

データベースが作成されると、データ ソース エクスプローラーのデータベース ツリーにそのデータベースが新しいノードとして表示されます。

このデータベース ノードには、[データ パス]、[SQL テーブル]および[システム オブジェクト]フォルダーがあります。[データ パス]フォルダーには Btrieve ファイルの場所が含まれています。[SQL テーブル]フォルダーにはデータベースのリレーショナル テーブルが含まれ(この時点ではありません)、[システム オブジェクト]フォルダーはシステム辞書テーブル用および、この場合は空のデータ辞書ファイル用のフォルダーになります。

これらの要素を使用して PSQL データベースを作成することが、Btrieve ファイル用のテーブル定義を作成する最初の手順です。先程作成されたデータベースには辞書ファイル(DDF)がありますが、現時点でこれらのファイルには DDF 自身の構造用の定義しか含まれていません。DDF Builder で Btrieve ファイルを開いたら、このデータベース用に作成された DDF へテーブル定義を追加し、その Btrieve ファイルのデータにアクセスできるようにします。

このデータベースには SQL テーブルが含まれていないので注意してください。含まれているのはこのチュートリアルで使用する CREATE_NEW.MKD Btrieve ファイルのみです。これは定義済みのユーザー テーブルがないからです。データ ファイルとは別に、空の DDF が[システム オブジェクト]フォルダーに置かれています。テーブル定義を作成すると、そのテーブル定義に一致する SQL テーブルも作成されます。この SQL テーブルはテーブル定義にアクセスします。引き続き、DDF Builder で Btrieve ファイルを開く作業に進みます。

既存の Btrieve ファイルを開く

Btrieve ファイルと同じ場所に DDF ファイルを作成したら、DDF Builder でそのファイルを開いてデータ構造がどのように解読されるかを見ます。

Btrieve ファイルを開くには

  1. DDF Builder で、ローカル マシンを選択し、作成したデータベースを選択します。

データ ソース エクスプローラーはデータ パスの一覧を表示して、mkd ファイルがインストールされたディレクトリを示します。これはデータベースを作成した場所と同じディレクトリです。データ ソース エクスプローラーで TUTORIAL1 データベース ディレクトリの構造は次のようになります。

  1. ファイルが含まれる CREATE_NEW.MKD フォルダーを右クリックし、[テーブル定義の作成]をクリックします。



テーブル定義を作成する場合、DDF Builder では新しいテーブル名とこのテーブル定義のセットを関連付けるための[テーブル定義の新規作成]ダイアログを表示します。このテーブルはトランザクショナル ファイルに対応するリレーショナル テーブルと考えてください。テーブル定義の作成が終了すると、SQL テーブルは元の Btrieve ファイルと同じ構造を正確に反映しているはずです。

  1. テーブル名としてデフォルトの「CREATE_NEW」を使用し、[OK]をクリックします。

テーブルの名前を指定して[OK]をクリックすると、DDF Builder では Btrieve ファイルを開くことができるようにするために、そのファイルの分析を開始します。 DDF Builder ではファイル内に認識できるキーやインデックスがあるかを判断し、その結果をテーブル定義エディター内に表示します。テーブル定義エディターの表示は次のようになります。

ファイルを開くことができたら、DDF Builder の調査結果をより詳しく見ていきます。

DDF Builder による調査結果を検証する

DDF Builder ではファイルの一般的な統計情報と既知のキーまたはインデックスを基にデータを分析します。DDF Builder による分析では、このファイルのレコードの先頭 4 バイトはキーであり、そのキーは Btrieve データ型で Integer であることを検出しています。このキーはテーブル定義エディターの先頭列でキー アイコンとして示されています。

レコード内のキー以外の残りの部分は DDF Builder で解読できないため 1 つのグループにまとめられ、テーブル定義エディターで疑問符アイコンとして示し Btrieve 型には不明(Unknown)が割り当てられます。

Btrieve ファイル用のテーブル定義を作成するにあたり、DDF Builder で検出された不明なフィールドを必要に応じてさまざまなフィールドへ分割するという作業が生じます。このまま先に進めば、各フィールドを詳細に定義します。

レコード フィールドの定義を始める前に、テーブル定義エディターでヌルがどのように扱われるかを理解しておいてください。


メモ

このチュートリアルでは真のヌルを使用しますが、旧バージョンの Pervasive.SQL と Scalable SQL では真のヌルをサポートしていなかったことに注意してください。サポートしていたのはレガシー ヌルのみです。真のヌルは Pervasive.SQL 2000 で初めて導入されました。Pervasive.SQL 2000 より前に作成されたファイルで作業する場合、ヌルに関する次のセクションは省いても構いません。


ヌルに関する注記

このチュートリアルでレコード フィールドを定義する場合、フィールドにヌル値を許可するかどうかについて留意することが重要です。なぜなら、レコードの一部分でヌル値を許可する場合、1 バイトが余分にフィールドへ追加されるからです。Btrieve ファイルでは、ヌル値が許可されるレコード部分はヌル インジケーター バイトによって指定されます。ヌル インジケーター バイトは、テーブル定義エディターの未加工データ ビューでフィールドまたは列の直前のバイトに該当します。[ヌル]チェック ボックスが選択されると、ヌル インジケーター バイトがアクティブになり、そのヌル インジケーター バイト分を確保するためフィールドのサイズは自動的に 1 バイト削減されます。

サイズが 50 バイトでヌル値を許可するフィールドを作成するとします。ヌル インジケーター バイトを確保するためにはフィールドのサイズを 51 バイトとして選択します。フィールドにヌル値を許可すると、そのサイズは自動的に 50 バイトに削減されます。

この情報はレコードのフィールドを定義する際に役立ちます。


メモ

DDF Builder でヌルを扱う作業の詳細については、DDF Builder におけるレガシー ヌルおよび DDF Builder における真のヌルを参照してください。


レコード フィールドを定義する

既にご覧になったように、Btrieve ファイルを開くと DDF Builder では 4 バイトのインデックスとそれ以外を 106 バイトの不明なフィールドと判断します。不明なフィールドをレコード フィールドに定義します。

レコード フィールドを定義するには

DDF Builder は先頭フィールドのほとんどの属性を判断しましたが、フィールド名は判断できませんでした。このため、まずは先頭フィールドに名前を付けてください。

フィールドに名前を付ける

  1. グリッド データ ビューで、"フィールド0" の行を選択し、以下の情報を反映するために必要な値を入力します。

これで不明なデータを解析して定義する準備ができました。

次のフィールドはヌル値を許可するよう定義します。次の手順では未加工データ ビューでデータを選択し、そのデータからヌル値を許可する列を作成する方法について説明します。

未加工データ ビューでヌル値を許可する列を作成する

  1. 未加工データ ビューでオフセット 4 から 21 バイト分のデータを選択します。

    ヒント

    オフセット 4 を特定するには、未加工データ ビューで先頭レコードのすぐ上にある疑問符マークを見つけるか、[オフセット]インジケーターの値が 4 になる場所にカーソルを置きます。


  2. 右クリックして[ヌル値を許可する列の作成]を選択します。




    ヒント

    列を 1 つ作成すると、未加工データ ビューとグリッド データ ビューのどちらにも、レコードの残りのバイトをまとめた新しい列が自動的に作成されます。


    21 バイト分を選択したはずですが、グリッド データ ビューでそのサイズが 20 バイトと表示されることに注目してください。 これは前に説明したヌル インジケーターによるものです。ヌル インジケーター バイトは未加工データ ビューに § 記号で示され、追加バイトとして割り当てられます。



    エディターには、4 バイトの整数値(ID)、前の手順で作成したヌル値を許可する列(フィールド1)、そして新たに残りのバイトをまとめた不明なフィールド(フィールド2)という 3 つのフィールドが表示されます。
    作業を進める前に、ヌル値を許可する列の定義を済ませてください。
  3. グリッド データ ビューで "フィールド1" の行を選択します。
  4. 以下の情報を反映するために必要な値を入力します。

Btrieve 型を設定してそのフィールドが定義されると、それ以降、グリッド データ ビューには不明なフィールド インジケーターが表示されなくなるので注意してください。

引き続き、グリッド データ ビュー内で不明な行を複数の列に分割して、ファイル内の不明なフィールドを定義します。

グリッド データ ビューで列を分割する

  1. グリッド データ ビューで "フィールド2" の行を選択します。
  2. 右クリックして[列の分割]を選択します。



列を分割する場合、分割される 2 つの列のサイズはそれぞれ同等か、ほぼ同等になるようにします。これは、85 バイトの列を 2 つの列に分割した場合、一方の列は 42 バイトでもう一方の列は 43バイトになるということです。

  1. "フィールド2" の行を選択します。
  2. 以下の情報を反映するために必要な値を入力します。

サイズを 42 から 20 に変更すると、DDF Builder では "フィールド3" 行に余分の 22 バイトを追加します。

SQL プレビュー列には定義されたデータが表示されていることがわかります。ここでは、テーブル定義に基づき DDF Builder がデータがどのように解釈したかをプレビューしています。

  1. "フィールド3" の行を右クリックして[列の分割]を選択し、この行を分割します。
    この列を分割すると、フィールド3 は 32 バイトに変更され、33 バイトのフィールド4 が作成されます。



フィールド3 を定義します。このフィールドにはヌル値を許可します。

  1. ヌル]チェック ボックスを選択して、フィールドの先頭をヌル インジケーター バイトで予約します。
    [ヌル]チェックボックスを選択すると、自動的にサイズが 31 に減少するので注意してください。



  2. "フィールド3" の行を選択します。
  3. 以下の情報を反映するために必要な値を入力します。

テーブル定義は次のようになります。

サイズを 4 に変更すると、DDF Builder では残りのバイト数を次のフィールドに含めます。

この時点で、60 バイトの不明なフィールドが残っています。データ構造ではさらに 2 つのフィールドの定義が必要であることを示しています。未加工データ ビューを使用して、その列を作成します。

未加工データ ビューから列を作成する

  1. 未加工データ ビューでオフセット 50 から 51 バイト分のデータを選択します。

    ヒント

    オフセット 50 を特定するには、未加工データ ビューで先頭レコードのすぐ上にある疑問符マークを見つけるか、[オフセット]インジケーターの値が 50 になる場所にカーソルを置きます。


  2. 右クリックして[列の作成]を選択します。



ヌル値を許可しない列を作成しましたが、本当に必要なのはヌル値を許可する列です。グリッド データ ビューを使用して、この列をヌル値を許可する列に変更します。

グリッド データ ビューでヌル値不可の列をヌル値を許可する列に変更する

  1. "フィールド4" の行を選択して、[ヌル]チェックボックスを選択します。



[ヌル]チェックボックスをチェックすると、ヌル バイト インジケーターを確保するのでサイズが 50 バイトに減少します。

  1. この他、以下のフィールド情報を反映するために必要な値を入力します。

テーブル定義は次のようになります。

最後に、ファイルの最後のフィールドを定義します。

  1. グリッド データ ビューで "フィールド5" の行を選択し、以下の変更をこの順番で行います。

最初に[ヌル]チェックボックスを選択することによって、サイズは自動的に修正されます。最初にサイズを 8 に変更すると、DDF Builder では最後に残った 1 バイトから不明な列を新たに作成してしまいます。

これで、ファイルのフィールドに対する定義が終了しました。テーブル定義は次のようになります。

作業を進める前に、テーブル定義を保存しておいてください。

  1. ファイル保管]または、ツールバーの[保存]アイコンをクリックして変更を保存します。

これで DDF にテーブル定義を作成することができました。作業を保存すると、データ ソース エクスプローラーで[SQL テーブル]ノードの下にその SQL テーブルが作成されます。

テーブル定義を作成したので、インデックスを見てみましょう。

インデックス情報を見直す

DDF Builder がファイルで検出したインデックスを見てみましょう。

  1. テーブル定義エディター で[インデックス]タブをクリックします。



DDF Builder ではファイルに作成されているインデックスを検出することができますが、Btrieve はインデックス名を使用しないため、DDF Builder でインデックスに関連付ける名前はありません。

[インデックス]ページは主に読み取り専用ですが、インデックス名については変更可能です。

インデックスの名前を付ける

  1. [インデックス]列の "インデックス0" エントリをダブルクリックして選択します。
  2. データ構造から、インデックス名として「indx_id」と入力します。



  3. 作業を進める前に、インデックスの変更を保存しておいてください。[ファイル保管]をクリックして保存します。

DDF Builder でインデックスに対して行うことができるのはこれだけです。

テーブル定義を終えたらそのデータを必ずプレビューするようにしてください。

定義したデータをプレビューする

次に、作成したテーブル定義用のファイルにあるデータを再度確認します。

  1. DDF Builder が起動していれば、テーブル定義エディターで[プレビュー]タブをクリックします。
    [プレビュー]ページは次のようになっているはずです。



    [プレビュー]ページでは、作成したテーブル定義を使用して書式設定されたファイルのデータを見ることができます。見てわかるように、すべてのデータが列名やデータ型に応じて適正に表示されています。
    このページの下部にあるボタンを使用すると、データを移動して全レコードを検証することができます。場合によっては予期しない書式のデータが見つかり、テーブル定義を完成させるために対処する必要があるかもしれません。
    予測どおりに表示されていないデータが見つかった場合は、次のセクションの チュートリアル 2 - DDF Builder でテーブル定義を変更するを参照してください。
    既に保存済みのテーブル定義に対して変更を行う場合、DDF Builder を閉じる前には作業を必ず保存してください。

終わりに

おめでとうございます。これでチュートリアル 1 は完了し、リレーショナル アクセスを使用して Btrieve ファイルのデータにアクセスできる DDF のセットを持つことができました。

次のチュートリアルでは Btrieve ファイル用に作成されている DDF のセットに対する変更に取り組みます。また、DDF Builder で自動的に検出される DDF に伴ういくつかの問題についても取り上げます。

ヒント

このチュートリアルではデータベースと DSN を新規作成しました。システムからこれらを削除する必要がある場合は、この時点で削除しても構いません。



DDF Builder チュートリアルの使用

チュートリアル 2 - DDF Builder でテーブル定義を変更する