Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

親子伝票で、親行に子の数を持つべきか

例として、売上伝票の鏡部分(ヘッダー部: 顧客名称等の欄)と商品明細(商品名と価格等の欄)を考えます。
 (消費税が入るので、実際は子伝票に工夫がいりますが、省略します。)

【鏡部分】
 得意先Code/名称  TOK001 : 亜衣上夫
  住所/連絡先      大阪市南区杉下xxxxxx    06-xxxx-xxxx
  購入代金(税抜き) 149,000
  購入数量         4
 明細行数         3

【明細部分】
  行目       商品コード    名称                単価       個数
 1          A001          厚型テレビ          120,000      1
  2          D51           5級スーパーラジオ     3,000      2
  3          C57           貴婦人パック         23,000      1

ありがちな、売上情報です。明細行数は  購入代金と購入数量は、明細のサマリーになります。

親レコードの構成として。
  親伝票No, 得意先Code  は必要です、
  (*)名称 ,  住所/連絡先  は得意先マスタ引用で足りるか否かで必要性が決まります。
    売価と購入数量は明細部分の総和なので算出項目です。

子レコードの構成として。
  親伝票No, 子行数, 商品コード、個数
  (*)商品名称は、商品マスターの引用で足りるか否かで必要性が決まります。

ここまでは、定石の類です。
取り上げたかったのは、(上記の例で)明細行数(3),購入代金(149,000),購入数量(4)という情報を、親レコードとして保持するか否かです。

保持する設計になっているプロジェクトを時折見かけます。
私は、副問い合わせか outer left join で (select count(*) 行数 from xxxx....)をかませば充分だと、思うので冗長性を感じます。
「何か有ったとき、行数値と実行数が合わなくなったときの、チェックに必要だ」という意見で、親持ちにしているらしいのですが、なんか有った時点で、テープル整合性が崩れているわけで、親持ちの値を使って、なにか解るものではないような気がしています。
時間コストの節約というのも、説得力にかけそうですし。
 使い道がイマイチ不明です。「伝統的にそうしてきた。」というのが実際のような気がします。

明細行の増減で、親行を更新するのは、必然性がなく。親行に対するIO部分のソースと処理工程が増える分、バグ埋没する可能姓が増えそうです。
マイナス要素の方が多いように思うのです。

そうやって眺めてみれば、算出項目を保持するために、プログラム開発量とテスト量が増えて、余計なコストを増やしている気がします。
確かに、明細量が多くて、算出項目に時間コストがかる場合は、効果がありますが、普通の売上伝票ならは、僅かなコストです。
その僅かなコストの節約に、開発工数を増やすのはトータル的にドウなのでしょうか。
全て計算項目で実装してみて、プロファイラー的な事を実施して、ネックがあれば、親持ちに移行を検討するのが良いと考えます
昔からの継続しているシステムならば、データ構造を変えるのは、リスクが伴うので避けるのは理解できます。
新規でも、伝統的な項目設計スタイルって根付いているようで、モデリングや正規化などの論理では打破できない文化があるようです。

投稿日時 : 2009年7月23日 0:20

Feedback

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 0:48 Pasie.

 会計的な話や要件にもよると思いますが、情報技術的な王道は、
  明細行数…不要
  購入代金…要
  購入数量…不要
  税(または税込)…要
ではないかなと考えます。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 9:34 みきぬ

自分もわりと同意見ですが、と前置いて。

> 「何か有ったとき、行数値と実行数が合わなくなったときの、チェックに必要だ」という意見で、親持ちにしているらしいのですが、なんか有った時点で、テープル整合性が崩れているわけで、親持ちの値を使って、なにか解るものではないような気がしています。

これはチェックサムのようなものかしら。
「なんか有った」ってのがわかること自体が重要なのだと思います。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 10:15 trapemiya

全く同意見です。割と古い人はSQLで何でも処理するのに抵抗があるように思います。SQLに関する知識が不足しているからだと思うのです。業務アプリを作るなら、SQLの習得はプログラミング言語を習得するのと同じぐらい重要だと思うのです。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 10:16 trapemiya

>割と古い人はSQLで何でも処理するのに抵抗があるように思います。

古い人みんなじゃないです。私も古い人なんでw

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 12:24 choir

算出出来る項目はあまり持ちたくないですねー

そんなチェックが必要だとなってる段階で、
バックアップデータを引っかきまわして不整合起きた箇所を探さにゃならんような
エライ状態になっている気がしますし。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 18:57 Ognac

>「なんか有った」ってのがわかること自体が重要なのだと思います。
「何か有った」時、「どのようにリカバリーするのか」が対になっているモノだと思うのですか。チェックだけして、後は知らん...というソースがチラホラ目に付くこの頃....

私は、記事でも書きましたが、算出項目は原則持ちませんね。
把握行数と子行数が不一致(チェックサム効果?)でオカシイと騒いだとき、結論は 親行へのフィードバック部分だったという。複数の現場でありました。
子伝票の整合性は、原紙データとの整合性であって、親行との整合性ではない気がします。
私も古い人ですが、SQLがもたらす効果は感心します。行単位の手続き型から脱却するのは、ハードルが高いのでしょうかねぇ。
 集合体を扱うという面では、コレクション操作も同様だと思うのですが...... Foreach(..) 文化に馴染めない人もいますしね。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 20:44 こあら

> 明細行の増減で親行を更新するのは、マイナス要素の方が多いように思うのです。

例のような集計なら、インデックス付きビューで解決できるようになりました。
次は「DWHもSQLで!」ですかね。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/23 22:59 Pasie.

>これはチェックサムのようなものかしら。
 原則として、チェックサムやCRCは物理的障害、つまり通信やディスクやメモリなどでビット化けなどが発生した場合に、検出、あるいは訂正を行うために使用します。
 しかし、本文で例示された様なケースは、そのような障害に対応する物ではないので、このケースに対してチェックサムに喩えるのは違和感があります。

>算出項目は原則持ちませんね。
 同意です。
 しかし前述のとおり、購入代金や税が常に算出できるかというと疑問なので、これは計算結果を格納すべきなんじゃないかと思います。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/24 0:03 Ognac

>購入代金や税が常に算出できるかというと疑問(略)
消費税や値引きの扱いに対する、思考の差が出る個所ですね。
明細消費税では対応できない場合(伝票単位消費税など)の税額を鏡(親)でカバーする....この場合の事を指摘されていると思います。
私は、若干拘りが有り、長引きそうなので、今後のエントリーネタにします。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/24 8:45 Mr.T

個人的には、親に持たせたくはないです。

ただし、先に出た消費税の関係で総額がSQLじゃ・・・という場合だと、確かに持ちたいとは思いますが。

ところで、行数は必須じゃね?と思ったのですが、違うのかなぁ?
だって、ここに値引きの行を入れたいとか、ありそうだし、行番号というか表示番号は持ちたいです。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/24 9:29 みきぬ

> このケースに対してチェックサムに喩えるのは違和感があります。

本文中の「『何か有ったとき、行数値と実行数が合わなくなったときの、チェックに必要だ』」というのがチェックサムみたいだなーと思っただけですから。
# 行数のままではチェック「サム」にはなりませんが、合計金額を持てば、よりチェックサムっぽくなるんじゃないかと。
# チェックサムを説明するときに、レシートの明細と合計で例えるケースもありますし

…まあチェックに使えるってこと自体が、後付けの理屈でしょうけどね。

# re: 親子伝票で、親行に子の数を持つべきか 2009/07/24 23:42 Ognac

>行数は必須じゃね?
表示番号は必要ですね。これは明細行項目の気がします。

>後付けの理屈でしょうけどね
同意。
既存の項目を不要と発言したら、擁護意見しかでてこない現場って多くないですか?

# of course like your web site but you need to test the spelling on several of your posts. A number of them are rife with spelling issues and I find it very bothersome to tell the truth on the other hand I will definitely come back again. 2019/05/12 6:51 of course like your web site but you need to test

of course like your web site but you need to test the spelling
on several of your posts. A number of them are rife
with spelling issues and I find it very bothersome to tell the truth on the other hand I will definitely come back again.

# Just wish to say your article is as surprising. The clarity in your post is just spectacular and i could assume you are an expert on this subject. Well with your permission let me to grab your RSS feed to keep up to date with forthcoming post. Thanks a 2019/07/22 15:38 Just wish to say your article is as surprising. Th

Just wish to say your article is as surprising. The clarity in your post is just spectacular and i could assume you are an expert
on this subject. Well with your permission let me to grab
your RSS feed to keep up to date with forthcoming post.

Thanks a million and please carry on the gratifying work.

# What a information of un-ambiguity and preserveness of precious knowledge regarding unexpected feelings. 2019/08/19 1:24 What a information of un-ambiguity and preservenes

What a information of un-ambiguity and preserveness of precious knowledge
regarding unexpected feelings.

# What a information of un-ambiguity and preserveness of precious knowledge regarding unexpected feelings. 2019/08/19 1:25 What a information of un-ambiguity and preservenes

What a information of un-ambiguity and preserveness of precious knowledge
regarding unexpected feelings.

# What a information of un-ambiguity and preserveness of precious knowledge regarding unexpected feelings. 2019/08/19 1:26 What a information of un-ambiguity and preservenes

What a information of un-ambiguity and preserveness of precious knowledge
regarding unexpected feelings.

# What a information of un-ambiguity and preserveness of precious knowledge regarding unexpected feelings. 2019/08/19 1:27 What a information of un-ambiguity and preservenes

What a information of un-ambiguity and preserveness of precious knowledge
regarding unexpected feelings.

# Very good article. I will be going through some of these issues as well.. 2022/03/23 0:33 Very good article. I will be going through some o

Very good article. I will be going through some of these issues as
well..

タイトル
名前
Url
コメント