(1) 顧客管理アプリ 親子関係(外部キー)の設定最終更新日: 2021年2月4日

Wagbyにおける親子関係の設定

Wagbyでは、モデル同士に親子関係を設定することができます。
親子関係とは、以下のような関係性を示します。

  • 親モデルと子モデルは互いに参照できる。
  • 一つの親モデルに対して、複数の子モデルを紐付けることができる。
  • 一つの子モデルに対して、複数の親モデルを紐づけることができる。
  • 子モデルも、他のモデルと同様に検索や一覧表示が可能。

親子関係の例(顧客モデルとサポートモデル)

本チュートリアルでは、「サポート」、「サポート種別」の2つのモデルを新規追加し、
「顧客」モデルと「サポート」モデルの間に親子関係を設定します。

サポートモデルを用意する

先のチュートリアルで作成した「顧客」モデルを親とし、子モデルとして「サポート」モデルを用意します。
サポートモデルには一人の顧客に対して複数件のデータを登録することができます。

  1. モデルを以下の通り新規作成します。
    モデル名:サポート
    モデルID:support
    項目名 項目ID英語 主キー 外部キー 検索 一覧
    サポートID supportid 数値
    顧客ID customerid 数値
    日付 supportdate 日付
    タイトル title 文字列型
    サポート種別 supporttype 文字列
    ※後で変更します
    内容 content 文字列

    「顧客」と「サポート」モデル間に親子関係を付与するため、主キー項目「サポートID」の次に、外部キー項目「顧客ID」を用意します。
    項目名、項目ID、型はいずれも顧客モデルの「顧客ID」項目と同じにしています。

    ワンポイント

    補足:外部キーについて
    他モデルの主キー項目をモデル項目として利用する場合、その項目は「外部キー」と呼びます。
    今回は「顧客」モデルの「顧客ID」を「サポート」モデルに外部キーとして設定しました。
    外部キーは、元の項目と型が同じである必要があります。

    サポートモデルの定義
  2. 「顧客ID」を外部キー項目に設定します。
    顧客IDの詳細設定を開き、「外部キー」に以下の通り設定してください。
    モデル名:顧客 (customer)
    外部キーの設定

    ワンポイント

    補足:「参照項目名」の設定について
    参照先項目名は、項目ID名が参照元の項目と異なる場合にのみ指定します。
    今回は同一の項目ID名 (customerid) としたため、指定しません。

  3. 外部キーを設定すると、その項目の左端に鎖アイコンが表示されます。
    このアイコンが表示されていれば、外部キーの設定は完了です。
    外部キーアイコン
  4. モデルの一覧画面に戻り、新しい選択肢モデル「サポート種別」を作成します。
    ギアアイコン内の「テンプレート」より、「選択肢モデル(初期データ固定)」をクリックします。
    選択肢モデルを作成する

    ワンポイント

    補足:「初期データ固定」の場合とそうでない場合の違い
    初期データ固定としない場合、アプリケーション上で選択肢となるデータを随時追加・更新することができます。
    一方、初期データ固定とした場合、初期データとしてWagbyDesignerで登録した選択肢のみ利用可能となります。
    アプリケーション上での追加や更新はできません。
    ★初期データ固定の選択肢モデルは「血液型」や「都道府県」のように運用途中で変更が生じない性質のデータに適しています。

  5. サポート種別モデルを以下の通り作成します。
    モデル名:サポート種別
    モデルID:supporttype
    選択モデルの作成
  6. 次に、サポート種別モデルの初期データを3種類設定します。
    「初期データ」タブをクリックし、以下を登録します。
    ギアアイコンの「新規」をクリックすると行を追加できます。
    No.ID内容表示優先度有効期限
    11価格照会未入力未入力
    22使い方未入力未入力
    33サポート未入力未入力
    初期データの設定
  7. サポート種別モデルの設定が完了したら、今度はサポートモデルの「サポート種別」項目と紐づけるよう設定します。
    先ほど作成したサポートモデルの編集画面を開き、「サポート種別」項目の型を文字列から「他モデルの項目参照」に変更します。
    「サポート」モデル編集画面
  8. 型を変更すると、ウインドウが立ち上がるので、以下の通り設定します。
    参照先モデル:サポート種別(supporttype)
    入力タイプ:ラジオボタン
    参照先モデル項目:内容(content)
    モデル項目の型詳細設定
  9. これでモデル定義は完了です。
    最終的に、サポートモデルの定義は以下のようになりました。
    サポートモデルの定義

動作確認とバックアップ

アプリケーションをビルドし、動作確認を行います。
動作確認が完了したら、最後にデータをバックアップします。

  1. アプリケーションをビルドし、ログオンします。
    ビルドとログオンの方法についてはビルド~アプリケーションの起動を参照してください。
  2. ログオン出来たら、前回のチュートリアルでバックアップしたデータを復元します。
    復元方法についてはビルドとデータの復元を参照してください。
  3. 顧客モデルに登録してあるデータの詳細表示画面を開くと、子モデルに設定した「サポート」モデルの登録ボタンが表示されます。
    鈴木 一郎さんのサポート情報を登録します。「サポート新規作成」ボタンを押してください。
    顧客詳細表示画面

    注意

    このボタンが表示されない場合は「リポジトリ>外部キー>連携に関する設定>ボタンの表示を制御する」の設定を確認してください。

  4. サポート登録画面に遷移します。顧客IDは先ほど表示していた顧客データと同じものが自動的にセットされます。
    サポート登録画面
  5. サポート情報を以下の通り1件登録します。
    日付:今日の日付
    タイトル:Wagbyアップデート
    サポート種別:サポート
    内容:Wagbyをアップデートしたいのですが、どうしたらよいですか?
    サポート情報を登録する
  6. サポートモデルの詳細表示画面では、親モデル「顧客」の一覧表示・詳細表示画面へ遷移するボタンが表示されます。
    「顧客 詳細表示」ボタンをクリックすると、鈴木 一郎さんの詳細データを表示します。
    サポート詳細表示画面
  7. 顧客の詳細表示画面では、この顧客データに紐づくサポート情報が表示されます。(1:Nの関係)
    顧客詳細表示画面
  8. 最後に、現時点のデータを保存(エクスポート)します。
    手順はデータのバックアップを参照してください。

繰り返しコンテナと外部キーの違い

前回のチュートリアルで設定した「繰り返しコンテナ」と今回の「外部キー」は似た構造になっています。
両者とも、関連するモデルと1:Nの関係になるという点で共通していますが、両者の違いは次の通りです。

繰り返しコンテナと外部キーの構造
  • 繰り返しコンテナはモデル内の項目を束ねるためのものです。
    モデルのデータが削除されると繰り返しコンテナのデータも同時に削除されます。
  • 外部キーは、モデル同士を関連づけるためのものです。
    繰り返しコンテナとは違い、子モデルとして独立しているので、単独での検索やデータ登録が可能です。

ここまでの連携方式のまとめ

ここまでのチュートリアルでは「顧客」「営業日報」「サポート」という三つのモデルを、異なる方式で連携させました。

図17 モデル連携図

トラブルシューティング

「よくある質問と回答 > チュートリアル」をお読み下さい。