サポート > Wagby定義ファイル > 8 モデル連携 > 外部キーの利用

ここでは「顧客(customer)」と「サポート(support)」の二つのモデルを扱います。このとき、両者は「一人の顧客に対して、複数のサポート記録がある」という関係を持ちます。

Wagby では、このような「1件のデータに複数のデータが存在する」関係を実現するために「外部キー」という考え方を用意しています。 具体的には、図1のようになります。


図1 関係イメージ

実行例

ここでは「顧客(customer)」と「サポート(support)」という2つのモデルをとりあげてみます。

まず、「サポート検索」からサポート検索画面を開きます。 まだ1件もデータは登録されていません。


図2 サポート検索画面

この画面のポイントはデータ登録を行う登録画面へ遷移するボタンが用意されていないことです。

サポートモデルは、「どの顧客モデルに対してのサポートか」という関係を持っています。 そのため、顧客モデルを指定せずにサポートモデルを単独で作成することはできないようになっています。

それでは、顧客のデータを新規に登録しましょう。
顧客データを登録すると、詳細表示画面が表示されます。
このとき、操作ボタンに「サポート新規作成」ボタンが用意されていることが分かります。 このように、外部キーの関係にあるサポートモデルの新規登録は、対象データ(ここでは顧客データ)の詳細表示画面から 行います。


図3 顧客詳細表示画面

それでは、「サポート新規作成」ボタンをクリックし、サポート新規登録画面を開いてみましょう。


図4 サポート新規登録画面

各項目を入力して登録を行います。すると、今度はサポート詳細表示画面にて、「顧客モデル」へ戻るための「顧客 詳細表示」ボタンが用意されていることが分かります。


図5 サポート詳細表示画面

「顧客 詳細表示」ボタンをクリックして顧客詳細表示画面を開くと、さらに、顧客モデル側でも、サポート記録の一覧が表示されるようになります。


図6 顧客の詳細表示画面

このように、外部キー関係にあるモデルは、画面上でも双方向のリンク関係をもちます。 これによって、「どの顧客についてのサポート記録だったか」を簡単に確認できるようになります。

このように外部キー関係にある場合、顧客のデータが削除されたタイミングで、それに関連するサポートのデータも全て削除されます。 サポートのデータは必ず、1件の顧客データに関連するためです。
サポートのデータを同時に削除せず、ひとまず残しておく、という設定をすることもできます。 詳細は、「外部キーによるモデルの関連があった場合の削除レベルの指定」を参照してください。

設定方法

顧客モデルはすでに定義されているものとします。 サポートモデルのポイントは、「顧客ID」は外部キーであることを指定している部分です。
Wagby では、その項目が別のモデルの主キーである場合、これを外部キーとして扱うことができます。 モデル定義シートでは、「外部キー」の列に、英語のモデル名を記入します。


図7 サポートモデルの定義シート

続いて、参照先の項目名を指定します。サポートモデルの「顧客ID」のモデル項目定義シートを開きます。 「別モデル参照の詳細(この項目が別モデルを参照している場合のみ有効)」-「外部キー参照先項目名」で項目名を指定してください。
指定しない場合は、同じ項目名(ここでは「custid」)が指定されたものとして扱われます。


図8 外部キー参照先の項目名を指定する

参照先の項目名を指定した場合(上記例における図8では「顧客モデル」の主キー名と、「サポートモデル」の主キー名が異なっているため、参照先の項目名を指定しています)、顧客モデル側のデータに紐付けられるサポートモデルが一件も表示されないか、あるいは全件表示されてしまうことがあるという不具合が発見されました。この修正は 2008 年 10 月下旬に公開予定の R6.3 で修正されます。ご迷惑をおかけして恐縮ですが、今しばらくお待ちください。

参照先の項目名と参照元の項目名が同じ場合は、本不具合は発生しません。

外部キーのまとめ

外部キーによるモデルの連携は、複数指定することができます。 上記例に、同じ顧客モデルを外部キーとしてもつ、別の「購買経歴モデル」を用意することもできます。 さらに、購買経歴モデルを外部キーとしてもつ、「故障対応記録モデル」などへとつなげていくこともできます。 このように連携を重ねていくことで、複数のモデルを自由にナビゲートできるような Web アプリケーションを簡単に作成することができます。

制約