主キーの設計 (4) 親子孫の関係

最終更新日: 2023年7月12日

設定方法

想定するモデル関係を図に示します。親モデルAと子モデルBの関係は前ページの説明をお読みください。

孫モデルCは、モデルAの主キー値がとりうる値の範囲(定義域)とモデルBの主キー値がとりうる値の範囲(定義域)、そして連番(順序値)の組み合わせとします。

モデルの関係

用意するモデルは三つです。

用意する親子孫モデル

モデルC

モデルA,モデルBの主キー値を含みます。

項目名 外部キー その他
モデルBがもつモデルAの主キー 文字列 モデルBの「モデルA主キー」 隠し項目
モデルBがもつモデルBの主キー 文字列 モデルBの「モデルB主キー連番」 隠し項目
モデルCの主キー 文字列 - 順序値とする。
モデルC (孫)

「モデルBがもつモデルAの主キー」 項目は モデルA の主キー値を格納するため、モデルAの主キーの型と同じ数字型とします。主キーかつ外部キーの設定を行います。

モデルC (孫) 主キーの設定 (1)

入力系画面で、隠し項目の設定を行います。この項目への入力は「モデルB主キー入力用」で行うためです。

モデルC (孫) 主キーの設定 (2)

「モデルBがもつモデルBの主キー」項目は モデルB の主キー値を格納するため、モデルB の主キーの型と同じ数字型とします。主キーかつ外部キーの設定を行います。

モデルC (孫) 主キーの設定 (3)

入力系画面で、隠し項目の設定を行います。この項目への入力は「モデルB主キー入力用」で行うためです。

モデルC (孫) 主キーの設定 (4)

「モデルCの順序によるキー」項目も主キー項目で、順序を使うとします。

モデルC (孫) 主キーの設定 (5)

「モデルB主キー入力用」の設定です。「自モデル内項目へのマッピング」で主キー項目と紐付けます。これによって、この項目への入出力はすべてマッピングされた項目に対する操作に変わります。

モデルB主キー入力用 (1)

この項目は必須とします。

モデルB主キー入力用 (2)

動作例

モデルBの詳細画面に、モデルCの新規作成を行うボタンが用意されます。これはモデルBとモデルCの間に外部キーの関係を設定したためです。

モデルBの詳細画面にモデルCの新規作成ボタンが用意される

モデルCの新規作成画面です。モデルBの主キー値が転記されています。参照連動も動作しています。

モデルCの新規登録画面

モデルCの新規作成を行ってみます。

モデルCを作成する

モデルCの詳細画面では、順序値が割り当てられた項目「モデルCの主キー」も確認できます。

モデルCの詳細画面

モデルBの詳細画面では、自身に紐づくモデルCの一覧が表示されます。赤枠部分と青枠部分が、それぞれ同じデータを指しています。

モデルBの詳細画面

検索条件設定時の注意点

「モデルB主キー入力用」項目を検索条件とするとき、マッピング先である「モデルBがもつモデルAの主キー」「モデルBがもつモデルBの主キー」も必ず検索条件としてください。

マッピング先も検索項目とする

さらに、今回のように検索項目「モデルB主キー入力用」は範囲検索ではない場合、マッピング先の項目も範囲検索設定を解除します。

また、マッピング先項目は、検索画面で隠し項目とします。

「モデルBがもつモデルAの主キー」範囲検索設定の解除と、隠し項目の設定
「モデルBがもつモデルBの主キー」範囲検索設定の解除と、隠し項目の設定