< 前へ | 次へ >

演習 2.4: 自動キー生成の使用

直前の演習では、新しい案内広告のためにユーザーが固有の ID を入力したことを確認するためのナビゲーション規則をセットアップしました。 サイト・ユーザーに試行錯誤させて 固有の ID を探し当てさせたくないため、このプロセスはもどかしく、現実的なものではありません。 この演習では、データベースがデータベースのそれぞれの新規レコードに固有の番号を自動 的に割り当てるように自動キー生成をセットアップします。

自動キー生成は複雑なトピックですが、簡単に言えば、 キー生成のためにデータベースに特別なテーブルが予約されていると、 データベースは新規キーを選択できるということです。 このテーブルには、未使用キーのリストを持つ列 (増分 (Incrementor) 列) と 1 から始まる番号順のリストを持つ別の列 (識別 (Identity) 列) が必要です。 データベースに新規キーが必要になると、識別 (Identity) 列で 1 を持つ行からキーを取り込み、 次に、次回に使用できる新規キーを取得します。

自動キー生成をセットアップするには、自動キー生成の働き方について、 いくつかのことを知っている必要があります。 自動キー生成を使用するには、この目的のために、データベースに 1 つのテーブルをとっておく必要があります。 このテーブルには、以下の 2 つの列があります。
  • 増分 (Incrementor) 列。使用可能なキーを保管します。 データベースは、新しい固有キーが必要になると、 この列からキーを取り出します。
  • 識別 (Identity) 列。番号 1 のインスタンスを 1 つだけ持つ番号のリストです。 この列は、増分 (Incrementor) 列から選択すべきキーをデータベースに知らせます。 この識別 (Identity) 列はキー生成テーブルの主キーです。

データベースは、新しい固有キーが必要になると、識別 (Identity) 列の値が 1 の行を見つけます。 この行の増分 (Incrementor) 列の値が次に使用可能なキーを保持しています。 データベースは、次回に新しいキーが使用可能になるように、 このキーを使用してテーブルを更新します。

以下はキー生成テーブルの例です。 このデータベースの次回に使用可能なキーは何でしょうか。 答えは、このテーブルの下にあります。
表 1. キー生成テーブル
識別 (Identity) 列 増分 (Incrementor) 列
3 78
4 3
1 65
2 12
このテーブルの次回に使用可能なキーは 65 です。 これは、このキー (増分 (Incrementor) 列にある) が、識別 (Identity) 列内で 1 を持つ行と同じ行にあるからです。

次回に使用可能なキーがテーブルから取り出されると、 キーが必要になる次回に備えてテーブルが更新されます。 データベースは、複数行の増分 (Incrementor) 列の値を取り出すことによって、 複数のキーを 1 度に取得することもできます。

要約すると、自動キー生成が正しく機能するには、2 つの列 (識別列として使用する主キー列と、 次回使用可能なキーを保管するための列) を持つキー生成テーブルを準備するだけで済みます。 このテーブルは、識別列の値を 1 とし、 使用する最初の使用可能なキーをその増分列の値として持つ 1 つのレコードで初期化されている必要があります。 このセットアップを行えば、自動キー生成は準備完了です。

自動キー生成のセットアップ

このチュートリアルで提供されたサンプル・データベースは、KEYS という名前のキー生成テーブルを持っています。 上述した 2 つの列は、各新規レコードに対して新規 ID 番号を提供します。 以下の手順によって、「create_record」関連レコードをセットアップし、KEYS テーブルからその ID 番号を取得します。
  1. 「プロジェクト・エクスプローラー」ビューで「new_record.jsp」ページをダブルクリックする。
  2. 「ページ・データ」ビューで、「create_record」関連レコードをダブルクリックする。 「関連レコードの構成」ウィンドウが開きます。
  3. 既存のレコードまたはレコード・リストからメタデータ定義を再利用」および「レコードにデータベースからの既存のデータを入れてください」をクリックして、「次へ」をクリックする。
  4. ドロップダウン・リストからデータベース接続を選択し、「次へ」をクリックする。
  5. 「関連レコードの構成」ウィンドウの右側に、リンクのリストがあります。「自動生成キー」をクリックします。「キー生成」ウィンドウが開きます。
  6. 自動キー生成の使用」を選択する。
  7. W5SAMPLE リストをクリックして展開し、「KEYS」テーブルをクリックする。
  8. ID 列の選択」フィールドで、「KEY_ID」をクリックする。
  9. 増分列の選択」フィールドで、「NEXT_KEY」をクリックする。

    広告の ID にはキーは 1 つだけ必要なので、「一度に取り出すキー数」を設定値 1 のままにしておきます。複数のキーが必要な場合は、 この設定ですべてのキーを一度にデータベースに選択させることができます。

    「データ・オブジェクトの構成」ウィンドウは、次のようになるはずです。

    「データ・オブジェクトの構成」ウィンドウ

  10. 閉じる」をクリックして「キー生成」ウィンドウを閉じ、「終了」をクリックして変更を適用する。これで、各新規レコードに ID フィールドが自動的に生成されます。 次に、ユーザーが値を入力できないように、ID 入力フィールドを除去する必要があります。
  11. Id: テキストをクリックして、カーソルを入力フォーム・テーブルの先頭行に置く。
  12. 「テーブル」 > 「削除」 > 「行の削除」と順にクリックする。
  13. このページを保管する。
オプションとして、どんなキーが生成されたかを知りたいのであれば、 行を削除する代わりに、その ID 番号の入力コンポーネントを削除し、 それを create_record の ID 列にバインドされている出力コンポーネントで置換することもできます。 こうすると、自動生成キーはフォームの上部に表示されますが、 ユーザーはこれを変更することはできません。

完了したチュートリアルのテスト

Web アプリケーションを公開する準備が完了したら、それをホストして、ユーザーがインターネット経由で Web サイトにアクセスできるようにするサーバーが必要になります。 ただし、Web サイトをテストするために、使用可能なランタイムを使用して、テスト目的でサーバーをシミュレートすることができます。 Web サイトをテストする方法については、演習 1.3: Web サイトのテストを参照してください。

演習のチェックポイント

演習 2.4 が完了しました。この演習では、自動キー生成のセットアップ方法を学習しました。

< 前へ | 次へ >