アプリケーション用のデータベースを設計する場合、テーブル間のリレーションシップを作らずに完結することはほとんどありません。AppMaster データベースエディターでは、このようなリレーションシップを簡単な操作で作成することができます。テーブル間にリンク線を引き、リレーションの種類 (1対1、1対多、多対多) を選択し、必要ならフィールド名を指定するだけです。しかし、テーブルが自分自身を参照する必要がある場合はどうでしょうか。
あるレコードのログを管理する必要がある場合について分析してみよう。同時に、レコードが厳密には連鎖的に作成されるように構成されている。各記録は、前後の記録とリンクしていなければならない(もちろん、一番最初と最後の記録は除く)。こうして、個々のレコードの連鎖全体を追跡することができ、システムは不正な変更からさらに保護される。
データベースの設計
まず、データベースデザイナーでモデルそのものを作成する必要があります。モデル名を Journalと名付け、テキストフィールドを1つ追加します。 record.
次のステップは、接続を作成することです。これを行うには、キャンバス上の任意の場所を右クリックし、. Create relation.
次のステップは、接続を設定することです。これを行うには、同じモデルとして Sourceと Target(この場合、Journal)、フィールド名(next とprevious)、接続のタイプ(has_one)を設定します。
自己参照テーブルの設定は完了です。フロントエンドの設計とビジネスプロセスの作成を開始することができます。
ビジネスプロセスの作成
ジャーナルに新しいエントリーを追加するバックエンドビジネスプロセスを作成しましょう。入力パラメーターとして、新しいエントリーのテキストを受け取ります。これは、最新のエントリをデータベースから検索して、新しいエントリに関連付けます。検索には _Limit = 1(最後のレコードが1つだけ必要なため)、デフォルトでは、レコードはID順に並び、データベースに追加された順に、最後のレコードから発行されるので、これで十分でしょう。
検索結果は1つの要素からなる配列になります。それを取り出すには Array Elementでブロックします。 index 0を使って抽出し、新しいジャーナル・エントリ(Make Journal).最後のステップは、データベースに書き込むだけです(DB: Create Journal) に書き込み、ビジネス・プロセスを完了させます。
このビジネスプロセスは、新しいデータベースレコードを作成するためのデフォルトのエンドポイントに使用することができます。
フロントエンドの設計
Webアプリケーションのフロントエンドでは、ページに3つの要素を追加すれば十分です。
- 新しいエントリの内容を入力するためのテキストフィールド
- エントリーを追加するためのボタン
- すべてのエントリーを表示するためのテーブル
"ADD Journal Record" ボタンのために、簡単なビジネスプロセスも作成する必要があります。ボタンをクリックすると、入力フィールドからのテキストがエンドポイントに送信されて新しいレコードが作成され、最後のアクションとしてテーブルの内容を更新するためにクリックされる別のボタンが必要です。
テーブル自体のために、ビジネスプロセスを設定することも価値がありますが、このレッスンでは、これには触れません。必要な情報はすべて、テーブルの設定のレッスンで見つけることができます。データを取得する際に、関連するテーブルからデータを取得するために _withを指定する必要があるということです。
アプリケーションを公開し、いくつかのエントリを追加し、すべてが正しく動作することを確認することができます。各エントリーは、実際には同じテーブル内のエントリーに関連しています。たとえば、ID 3 のエントリには、前のエントリ (ID 2) と次のエントリ (ID 4) へのリンクがあります。