MOE3: モデル構成
Power(国)モデルと Province(地域)モデル
Province から Power への参照を持つのはゲーム開始時の各国初期領土のみ。
増設や無政府時解体の際に、Power 側から has_many
指定で逆にたどって「本国」を取得するのに使用する。
Order(命令)モデル
とりあえず周辺のモデルも含めて書き出してみる。
Order から Player への関連を経由して「どの卓のどの国(プレイヤー)が出した命令か」が、Order から Unit への関連を経由して「どの卓の何ターン目の何フェイズにどの地域にいる軍への命令か」が特定できる。
これで「どの卓の何ターン目の何フェイズに、どの国(プレイヤー)によってどの地域にいる軍に出された命令か」がカバーできる。「どんな命令か」は、Order の派生クラスとして定義する。
すっきりまとまって満足。
この構造ならば命令の対象は自国の軍には限らないので、MOE の伝統である仮想命令(支援や輸送で他国の軍を対象とする場合に設定するダミー命令)にも対応できる。
正規化もやりすぎると障害対応などで DB ダンプだけ見て状態を把握するのが困難になるけれど、これは本来ならば適切なメンテナンス用の画面を用意すべき話だろう。
モデル間の関連についての余談
Order から Province への参照は MoveOrder(移動命令)の移動先指定のため、Order から Order への自己参照は SupportOrder(支援命令)と ConvoyOrder(輸送命令)の対象指定のためである。