以前の投稿: 安易な設計でデスマーチ http://blogs.wankuma.com/ognac/archive/2007/05/16/76952.aspx とカブルようなカブラナイような話。
顧客マスタや商品マスタなのとマスターのキー項目(コード項目)を数値にするのはよくあると思います。
アプリの種類によっては、取引データ上での顧客コードや商品コードは必須項目なのでNULLになるのはありえないとする要件はあります。
だからといって、取引データ上の顧客コードや商品コードを含む数字項目をすべてNot NULLにするのは飛躍しすぎです。
開発者からSE/PMに提案がありました。「取引データの新規登録画面では、DBのスキーマ・制約をCheckしてNOT NULL項目はDefault値で画面項目を初期設定のはどうですか」
局面でみれば悪くはないとして「数字項目はすべてNOT NULL」としたSEは無条件に採用した。<--- いいのか!!
件の画面はTextBoxのLostFocus時にマスタ存在チェックして名称を取得している。 <--- valdationでして欲しい!!
しかもマスタには コード値=0のデータは存在しない。
どうなるか考えなくても、画面UIとしては矛盾の塊になりますね。顧客コード欄にカーソルが入ると適正値を入力しないと抜けられない。
商品マスター欄は後から入力しようとしてもできない。この手の不具合をプログラムでカバーするのは無駄なコストとなって返ってきます。適切な設計だと不要な工数です。
他のマスターに関してもキーが数字であっても、取引データの該当項目をNOT NULLにするのはよくないです。
NULLという意味は未定という意味もあります。
発言力の大きい設計者がこんなルールを作っているのを目にするとナンダカナーと思うのです。
この手の設計者は開発者が提言しても聞く耳もたなかったりするので扱いにくい。
不勉強な設計者がデスマーチを招く。