|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2012 2010 2009 2008 2007 |
September 11, 2007. 正規化と冗長化 現在システムの設計だけでなく、そもそものエンドユーザの業務運用をどう改善すべきかという事も含め、提案をしています。いちパートナ社員がこんな立場で作業していいのでしょうか。そういう星の下に産まれたのか、ピラミッド型のプロジェクトに参画した経験があまりありませんけど。
昨日はテキストデータ出力のプログラム設計をやっていました。何度も帳票出力に利用するし、データとしても吐き出して外部システムと連携を取るため、ファイルレイアウトそのままに近い中間TBLを追加しました。別のSEの方は「selectすれば取得できるから無くても良いのでは?」と否定的だったのですが、一夜明けた今日は賛同していただけたようで何より。多少設計思想に違いが有りますが、その辺は誰が正しいか決め難い事なので、後はお任せすることにしました。
baristaはそれなりに冗長化支持派です。例えば、出荷指示を表すTBLなんかだと、指示をヘッダと明細にわけて
ヘッダ[出荷ID,出荷先CD,出荷日] 明 細[出荷ID,行No,商品CD,数量]
のような設計にして、ヘッダと明細、商品マスタ、出荷先マスタと結合するように設計します。これは単純な正規化であり、誰が設計してもほぼ同じでしょう。一方に結果から伝票データをテキスト出力する直前の中間TBLであれば、
伝票TBL[出荷ID,行no,出荷先CD,出荷先名,出荷先住所,商品CD,商品名,値段,個数]
というような冗長構造のTBLを作成すべきではないかとbaristaは思うのです。出荷指示と同じような構造にするなら、実績から出力すればよく、中間TBLを作る必要は無いでしょう。 「データの無駄」「結合すればよい」という意見をよく耳にしますが、「何度も結合するコーディングが無駄」「CPUが無駄」だと思うのです。伝票データ作成後にマスタメンテをかけると、再出力のたびに結果が違いますしね。最悪出力できなくなるし。そろそろデータ量ではなく、再利用性やメンテナンス性などを考えたTBL設計をして欲しいもの。DBは素人なので、baristaの考えが浅いだけかもしれませんが、頻繁に思うことです。
現在Visual EditorでSWTを弄っています。Menu等の作り方がまだよく分かりませんが、レイアウトはSwingより使い勝手がよさそうです。しばらく弄ったら記事を書いてUPしましょう。この辺VEの記事なのか、Swing, SWTの記事なのか、境目が難しくなっちゃうのが難点ですが...。 ※パスにはこの日記のタイトルをコピペして下さい。 Copyright 2007 barista. All rights reserved. |
|