DDF Builder User's Guide (v11)

レッスン 6 - インデックスの不一致

シナリオ

このレッスンでは、テーブル定義のインデックス設定と一致しないインデックス設定を持つ Btrieve ファイルがあります。

目的

このレッスンの目的は、DDF Builder でファイルを開き、DDF Builder によってこの定義になんらかの変更が行われるかどうかを確認することです。DDF Builder が実施する変更を調べ、インデックスの不一致を修正するために必要な変更について検討します。


ヒント

DDF Builder はインデックスの不一致を修正するための解決法を提示し、それらの変更を保存できるようにします。


必要な知識

このレッスンでは、INDEX_INC.MKD というファイルを使用します。このファイルは Tutorial2 フォルダー内にあります。デフォルトのインストール先にインストールしている場合、このフォルダーは次の場所にあります。

<Application Data>¥DDFBUILDER¥TUTORIALS¥TUTORIAL2 

このフォルダーは Tutorial2 データベースの一部です。


メモ

このチュートリアルのデータにアクセスするためには、このデータベースを指し示す DSN(データ ソース名)が必要です。まだ DSN を作成していない場合は、データ ソース名(DSN)の作成を参照してください。


Btrieve ファイルを開く

すぐ前のレッスンから引き続き作業していれば DDF Builder は起動しているはずです。終了していた場合は、DDF Builder を起動してください。

  1. DDF Builder のデータ ソース エクスプローラーで、[データベース]ノードを展開し、一覧から TUTORIAL2 データベースを見つけます。



  2. TUTORIAL2 データベース アイコンをダブルクリックしてそのノードを展開します。
  3. ノードをさらに展開して INDEX_INC.MKD ファイルを探し、それに関連付けられている SQL テーブルを表示します。



  4. index_inc SQL テーブル名をダブルクリックするか、右クリックして[テーブル定義の編集]をクリックします。

テーブル定義エディターでは、次のメッセージが表示されます。

このメッセージは、DDF Builder で既存のテーブル定義を分析したら、その定義に問題があったということを知らせています。この結果、DDF Builder で既存のテーブル定義を開いて表示するために、いくつか修正を行う必要がありました。

  1. OK]をクリックすると、このメッセージがクリアされテーブル定義が表示されます。

    ヒント

    発生する可能性がある定義エラーの詳細については、テーブル定義エラーを参照してください。


不一致を探す

まずは DDF Builder インターフェイスで検出された不一致を確認します。これは、グリッド データ ビューと元の定義を比較すればすぐにわかります。

このレッスンの場合、DDF Builder は注目すべき列について視覚的なインジケーターを何も示しません。フィールドが変更されていることを示す不明な列インジケーターはありません。

大変興味深いことに、これらの 2 つのテーブル定義を比較しても違いが見つかりません。DDF Builder では変更を行っていますが、DDF Builder が修正した問題はインデックスに関するものなので、テーブル定義上に表れません。

インデックス情報についてより詳しく見る前に、定義エラー ビューに挙げられている問題を調査しましょう。定義エラー ビューでは DDF Builder によって検出および変更された問題を表示します。


メモ

DDF Builder が行った変更は自動的に保存されません。DDF Builder による修正は保存する必要があります。


エラーについて理解する

定義エラー ビューでは以下のことを通知します。

定義エラーでは次の 2 つの問題を挙げています。

問題が発生した場所
DDF Builder で検出された問題
必要な対処
インデックス:indx_id
DDFBLDR-1:この SQL インデックスに対応する Btrieve キーがありません。インデックスを無視しました。
テーブル定義で見つかった SQL インデックスに対応するキーが Btrieve ファイルに存在しません。その結果、DDF Builder ではこのインデックスが無視されるため、実行できる操作は DDF Builder による変更の確認のみです。
インデックス:インデックス0
DDFBLDR-2:この Btrieve キーに対応する SQL インデックスが見つかりません。インデックスを追加しました。
Btrieve ファイルにキーがあるため、それに対応するインデックスが DDF Builder によってテーブル定義に追加されました。テーブル定義のインデックスを検証して、DDF Builder が行った変更を受け入れる必要があります。

1 番目のエラーは、Btrieve ファイルに存在しないインデックスが既存のテーブル定義に含まれていることを示します。DDF Builder はテーブル定義を変更するだけで Btrieve ファイル自体を変更することはできないため、このインデックスは無視されます。これは、存在しないインデックスを使用しないようにするためにも知っておくことが重要です。

2 番目のエラーはこの逆の状況です。 既存のテーブル定義に、Btrieve ファイルで定義されているインデックスがありません。 DDF Builder は Btrieve ファイルのインデックスを表すために、これまで定義されていなかった SQL インデックスを追加します。

DDF Builder が作成したインデックスに名前を割り当て、そのテーブル定義のインデックスに対する変更を受け入れます。


メモ

DDF Builder によって作成されたインデックスがあり、それがもう必要でない場合は、ファイルおよびテーブル定義からそのインデックスを削除することができます。同様に、DDF Builder がテーブル定義を変更したときに、これまで定義されていなかったインデックスを追加する必要があることに気付くことができます。どちらの場合でも、『Pervasive PSQL Programmer's Guide』でインデックスの追加と削除に関する説明を参照してください。


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

  1. テーブル定義エディターで[インデックス]タブを選択します。
  2. [インデックス]列の "インデックス0" エントリをダブルクリックします。
  3. インデックスの名前として「index_lname」と入力します。




    メモ

    Btrieve ファイルに定義されたインデックスを見るには、[統計情報]タブをクリックします。


テーブル定義を保存する

DDF Builder によってテーブル定義に追加されたインデックスを検証したので、この作業を保存して変更を有効にしてください。作業を保存する前に、もう一度テーブル定義を見直してください。

Btrieve 型はすべて定義され、不明なフィールドも無く、またすべてのバイトが明確に割り当てられています。これでテーブル定義を保存できます。

  1. メニューから、[ファイル保管]を選択するとテーブル定義が保存されます。

終わりに

おめでとうございます。これでテーブル定義の保存が成功しました。このレッスンでは、DDF Builder が認識したインデックスの不一致についてご紹介しました。また、DDF Builder が行った変更と更新されたテーブル定義の保存方法についても説明しました。


レッスン 5 - ファイル/フィールド フラグの不一致

レッスン 7 - 可変長レコードの不一致