親子関係を定義する
最終更新日: 2021年6月11日
R8 | R9
ここでは「顧客(customer)」と「サポート(support)」という2つのモデルをとりあげてみます。
顧客のデータを新規に登録します。
「サポート新規作成」ボタンをクリックし、サポート新規登録画面を開いてみます。顧客ID(紐づく親モデルのID)は自動設定されています。
各項目を入力して登録を行います。サポート詳細表示画面から顧客モデルへ戻るための「顧客 一覧表示」「顧客 詳細表示」ボタンが用意されています。
「顧客 詳細表示」ボタンをクリックして顧客詳細表示画面を開きます。顧客モデル側でもサポート記録の一覧が表示されるようになります。
このように、外部キー関係にあるモデルは、画面上でも双方向のリンク関係をもちます。これによって「どの顧客についてのサポート記録だったか」を確認できるようになります。
外部キー関係では、顧客のデータが削除されたタイミングで、それに関連するサポートのデータも全て削除されます。(この動作を変更し、サポートのデータを同時に削除しない設定とすることもできます。)
今回用意したサポートモデルの定義を図5に示します。
定義のポイントは「顧客ID」が外部キーであることを指定する部分です。(図6)
参照先項目名は、主キーとなっている必要があります。上の例では(参照先モデルである)"顧客" の "顧客ID" は主キーとなっています。
子モデルの詳細画面に用意された「登録画面へ」ボタンを押下して新規登録画面を開くと、親の主キーは転記された状態になります。つまり子は共通の親を持つことが前提となります。
一方、子モデルの検索・一覧表示画面に用意された「登録画面へ」ボタンを押下して新規登録画面を開くと、親の主キーは空白です。これは特定の子を起点にしていないためです。
親モデルの詳細画面に用意された子モデルの新規登録を押下すると、親の主キーは転記されます。
外部キーモデルの一覧表示形式がグリッドのとき、子モデル表示もグリッドになります。
子モデルが「グリッド表示」の場合、子の外部キーは検索条件を有効にしてください。
外部キー指定された項目は、モデル項目一覧で鎖のアイコンが表示されます。
親モデルの詳細表示画面の下部に用意される子モデル一覧データの並びは、子モデル主キーの昇順となっています。
これを変更することができます。
例えば親p1に紐づく子データc1,c2,c3を作成したとき、標準では、子モデル一覧の表示順は c1,c2,c3 です。
ここで子モデル「主キー」項目のソート順に"-1"を指定するとc3,c2,c1になります。
ソートの設定は、親子モデル画面の子モデル表示だけでなく、子モデルの一覧表示画面にも同時に反映されます。(両者は区別されません)
「繰り返しコンテナ」と「外部キー」のいずれも、親モデルと子モデルの間で 1:N の関係を構築できます。両者の違いは次のとおりです。
外部キーの値を使った参照連動を指定することもできます。ここでは「氏名」項目を表示するようにします。
ここでは「顧客名」項目を用意してみます。
この顧客名項目は参照連動とします。連動する項目は外部キーである "顧客ID" です。
参照先モデル(上の例では "顧客" モデル)の主キーが複合キーの場合、外部キー項目(上の例では "顧客ID" 項目)の物理カラム名にコンマ区切りで(参照先モデルの)主キー項目を列挙してください。
次の条件に合致しているとき、子モデル一覧表示の行をクリックすると、対象モデルの詳細表示画面へ遷移させることができます。
子モデルが「グリッド表示」の場合、子の外部キーは検索条件を有効にする必要があります。
外部キーを用意する子モデルでは、親モデルの複合キーをすべて含める必要があります。
例えば親モデルの主キーが pkey1, pkey2 のとき、子モデルは pkey1 と pkey2 を外部キーとする項目を保持しなければなりません。どちらか片方のみを保持した子モデルを定義することはできません。
例
顧客の詳細表示画面に「サポート新規作成」ボタンが用意されています。(図1)
外部キーの関係にあるサポートモデルの新規登録は、対象データ(ここでは顧客データ)の詳細表示画面から行います。
ワンポイント
定義方法
外部キーに指定した項目の型は、参照先(親)の項目の型と同じ型で指定します。ここでは「顧客ID」を「数値」型と指定しています。
「外部キー>モデル名」に、親モデルを指定します。
重要
子モデル作成時の親の主キーの扱い
グリッド表示
定義方法
外部キーアイコン
子モデルの表示順序を制御する
注意
繰り返しコンテナと外部キーの違い
参照連動との組み合わせ
定義方法
参照先モデルが複合キーの場合
行クリック遷移8.5.4
true
と記述することで、当該モデルの一覧表示画面では行クリック遷移を有効にしつつ、子モデル一覧表示では(詳細ボタンは表示されるが)行クリック遷移を無効にすることができます。
トラブルシューティング
子モデル一覧が表示されない
子モデル一覧が表示されない(グリッド表示)
親モデルの主キーが複合キーの場合