主キーの設計 (4) 親子孫の関係
最終更新日: 2023年7月12日
想定するモデル関係を図に示します。親モデルAと子モデルBの関係は前ページの説明をお読みください。
孫モデルCは、モデルAの主キー値がとりうる値の範囲(定義域)とモデルBの主キー値がとりうる値の範囲(定義域)、そして連番(順序値)の組み合わせとします。
用意するモデルは三つです。
モデルA,モデルBの主キー値を含みます。
「モデルBがもつモデルAの主キー」 項目は モデルA の主キー値を格納するため、モデルAの主キーの型と同じ数字型とします。主キーかつ外部キーの設定を行います。
入力系画面で、隠し項目の設定を行います。この項目への入力は「モデルB主キー入力用」で行うためです。
「モデルBがもつモデルBの主キー」項目は モデルB の主キー値を格納するため、モデルB の主キーの型と同じ数字型とします。主キーかつ外部キーの設定を行います。
入力系画面で、隠し項目の設定を行います。この項目への入力は「モデルB主キー入力用」で行うためです。
「モデルCの順序によるキー」項目も主キー項目で、順序を使うとします。
「モデルB主キー入力用」の設定です。「自モデル内項目へのマッピング」で主キー項目と紐付けます。これによって、この項目への入出力はすべてマッピングされた項目に対する操作に変わります。
この項目は必須とします。
モデルBの詳細画面に、モデルCの新規作成を行うボタンが用意されます。これはモデルBとモデルCの間に外部キーの関係を設定したためです。
モデルCの新規作成画面です。モデルBの主キー値が転記されています。参照連動も動作しています。
モデルCの新規作成を行ってみます。
モデルCの詳細画面では、順序値が割り当てられた項目「モデルCの主キー」も確認できます。
モデルBの詳細画面では、自身に紐づくモデルCの一覧が表示されます。赤枠部分と青枠部分が、それぞれ同じデータを指しています。
「モデルB主キー入力用」項目を検索条件とするとき、マッピング先である「モデルBがもつモデルAの主キー」「モデルBがもつモデルBの主キー」も必ず検索条件としてください。
さらに、今回のように検索項目「モデルB主キー入力用」は範囲検索ではない場合、マッピング先の項目も範囲検索設定を解除します。
また、マッピング先項目は、検索画面で隠し項目とします。
設定方法
モデルC
項目名
型
外部キー
その他
モデルBがもつモデルAの主キー
文字列
モデルBの「モデルA主キー」
隠し項目
モデルBがもつモデルBの主キー
文字列
モデルBの「モデルB主キー連番」
隠し項目
モデルCの主キー
文字列
-
順序値とする。
動作例
検索条件設定時の注意点