Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

テーブルの項目は原始項目(基礎データ)で構成して欲しい

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

投稿日時 : 2007年11月12日 0:39

Feedback

# re: テーブルの項目は原始項目(基礎データ)で構成して欲しい 2007/11/12 0:54 taka

他の項目で導出可能な項目はなるべく入れないでほしいですね。
#意図があればいいのですが無いケースが殆ど
#DBの設計変更なしとか(え~、リニューアルなのに~w

# re: テーブルの項目は原始項目(基礎データ)で構成して欲しい 2007/11/12 2:36 かつのり

DBを再設計しないというのは、はっきり言って設計者の職務怠慢ですよね。
過去に度々経験がありますが、かなりコードが書きにくいというか、
DB設計の問題を実装でカバーする事が多々あります。

再設計しない=枯れた設計なので安全なんて思っている人は、
技術者と名乗らないで欲しい。

# re: テーブルの項目は原始項目(基礎データ)で構成して欲しい 2007/11/12 10:40 choir

再設計しないわけではなく、
再設計した結果、またそういうモノになっていたりすることもままあるわけで。

#SQL文書けない人に経験年数長いというだけでDB設計させる会社とか…

# re: テーブルの項目は原始項目(基礎データ)で構成して欲しい 2007/11/12 18:13 Ognac

>#意図があればいいのですが無いケースが殆ど
1レコード単位の計算時間は知れてますものね
>DBを再設計しないというのは、はっきり言って設計者の職務怠慢ですよね。
>DB設計の問題を実装でカバーする事が多々あります。
激しく同意.....上流工程の手抜きの皺寄せが下流にくる悪しき慣習

>#SQL文書けない人に経験年数長いというだけでDB設計させる会社とか… Remove Comment 107789

なぜか、権限のある地位におさまっているお寒い現実。....orz

# re: テーブルの項目は原始項目(基礎データ)で構成して欲しい 2007/11/13 10:05 中博俊

会計システム的に見れば、売り上げと預かり消費税は科目が別ですし明細単位での分割が必須です。
当然再計算なんてのもあり得ません。
販売系でも同じ考え方を意識する必要があるわけですが・・・
本題のケースでは元々原始項目で管理していないというのは本来の経営としてもおかしいと思います。
内訳項目と集計項目ちゃんと理解しましょうねぇ>名も知らぬ元設計者さんえw

# re: テーブルの項目は原始項目(基礎データ)で構成して欲しい 2007/11/13 18:21 Ognac

>内訳項目と集計項目ちゃんと理解しましょうねぇ>名も知らぬ元設計者さんえw
区別が付かない人って多いんですよね。

タイトル
名前
Url
コメント