![](https://blogimg.goo.ne.jp/user_image/6e/23/a871ae198f1ce41a94492db5fcfb44f6.png)
ここまで、各種のデータモデルのパターンについて述べてきました。
では、実際に拡張性のある(汎用的な)モデルを作成するためには、どのような手順を踏んでいけばいいのでしょうか?
ここでは汎用的なモデルの作成過程を、ある例を用いて解説していきます。
今回は、もっとも一般的だと考えられる“受注”を例にして解説していきます。
一般的な受注関連のエンティティ関連図としては、以下のようなモデルが想定されます。
受注エンティティで、「いつ」、「誰」から受注したのか、「どこ」に納入するのかといった情報を管理し、受注明細エンティティでは、「何」を、「いくつ」、「いくら」で受注したのかといった情報を管理します。
(1) 受注番号と得意先注文番号
「受注番号」は、受注取引が発生したタイミングでシステムが自動採番し、“受注”エンティティのキーとなります。それに対して「得意先注文番号」は、受注先(得意先)で管理している注文番号で、得意先からの問い合わせはこの「得意先注文番号」で問い合わせが行われることになります。
(2) 入力担当社員コード
ここでは、受注入力の担当社員を管理するために、“受注”と“社員”との間にリレーションを定義しています。
(3) 納期年月日
受注先への納入期限(納入希望日)のことを納期年月日としています。この納入年月日を起点にリードタイムを計算し、出荷予定日を計算することになります。
(4) 受注備考
受注に対する注意事項や取引条件等を管理するための項目です。
(5) 得意先コードとフリー得意先名
受注先の「得意先コード」。「フリー得意先名」という項目は、「得意先名」は「得意先コード」で得意先マスタを参照すれば取得できるので、本来不要な項目ですが、その時点でマスタ登録されていない場合や、マスタの変更が正常に行われていないという場合に、“受注”エンティティに直接持たせるようにする(画面から直接入力する)ための項目です。
(6) 納入先コードとフリー納入先名
納入先のコード。「フリー納入先名」という項目は、「納入先名」は「納入先コード」で納入先マスタを参照すれば取得できるので、本来は不要な項目ですが、その時点でマスタ登録されていない場合や、マスタの変更が正常に行われていないという場合に、“受注”エンティティに直接持たせるようにする(画面から直接入力する)ための項目です。
(7) 受注金額
受注金額は、受注商品の金額(受注商品の金額=受注数量×受注単価)+消費税で計算します。
消費税の場合は、内税と外税で計算式が異なります。
内税:消費税=受注金額×消費税率÷100
外税:消費税=受注金額×消費税率÷(100+消費税率)
また、消費税区分は“商品”エンティティの属性として持っているものとします。(基本的には、商品ごとに決まっているもので、取引単位に変更するものではない。)
(8) 値引き
値引きについては、商品単位(受注明細単位)に値引きする場合と、取引全体(受注単位)で値引きを行う場合が考えられます。
ここでは、商品単位に値引きを行う場合、「受注単価」自身を変更することにより対応可能するものとします。
取引全体(受注単位)での「値引き」を実現するために、“受注”エンティティに「受注値引金額」を持っています。
※コメント投稿者のブログIDはブログ作成者のみに通知されます