とあるシステムでのRDBの1テーブルの項目がn項目あります。
個数、販売単価の項目があるとき、売価(=個数*単価)を項目として設定することは、単純な販売管理ではあまりやりません。
昔はパフォーマンスの関係て、計算項目を保持したりしてましたが、昨今のRDBでは都度計算しても差がでないと考えてます(例外はありますが一般論として)
売価に関しては、消費税込みの場合、原始データと言えないことが起こるので、税抜き売価と税価格の2項目で保持するときと、税込みで表示するケースがありますが、この場合は等価とはいえません。(込み込みの場合分離できない性質を帯びます)
これも考慮してテーブルの項目は因数分解できない原始単位で設計するのが良いと私は考えてます。
ところが、テーブルの集計表を作成するにあたり、減算式がでてきて当惑したことがあります。
通常は 、支給金額 = 本給 + 残業手当 + 諸手当 など加算項目で式が成立します。(各々は原始項目)
事例では 式が 支給金額 = 本給 + 残業手当 + 諸手当 - 残業xx手当 となっています。
なんで? 問い合わせてみれば、 残業手当には 残業xx手当が含まれていて, 諸手当にも残業xx手当が含まれているんだそうです。
おかしくない? 複数の項目で決定される項目を 基礎項目に設定するのは後々困った事になりかねません。
支給金額 = 本給 + (純粋)残業手当 + (純粋)諸手当 + 残業xx手当 となるように テーブル設計すべきでしょう。
よくよく問い合わせると、旧システム(Cobol) がこのようなテーブルになっていて変更できないとのこと。
過去の遺産は時として負の遺産に成りかねません。折角RDBに乗せかえるのだから、キチンと設計してほしかったなぁと感じる今日この頃です。