それが課題だという認識を持ってるチームも見たことありません。
一方で、NULLだらけのテーブルは山ほど見ました。
なのに、NULLはだめでしょ。っていう意見も多いようなので調べてみました。
【そもそもNULLって何か?】
1.「値が不明」、「値がない」状態を示すための目印。
2.どのようなデータ型でもNULLをとり得る。3.プログラミング言語のNULLポインタとは別物。
4.値ではない。
【NULLの弊害】
1.NULL様専用に条件の記述が必要
「NULL + 10」も「NULL < 10」も、「NULL || '10'」も全部NULLになるので
「SELECT name FROM member WHERE branch <> 10 OR branch IS NULL」
のように書くことが増えます。
2.実行計画の最適化が難しくなる
要するにオプティマイザのパフォーマンスが悪くなるということ。
【え、それだけ?】
アクセスが多いシステムでもないし、システム改修のときは、NULLを覚悟で既存のテーブルに項目追加する方が楽だね。ってなるのはわかるような気がします。
【理想と乖離する根本原因】
WBSしか興味ないPMと、工学的な意味でシステムがわかってないSEと、訳も分からず派遣された若手の下請けPGの組み合わせでは、わざわざ影響調査してデータベースとプログラムをリファクタリングしてNULLを撲滅しましょうっていう話にはならないでしょうね。動けばいいんです。
0 件のコメント:
コメントを投稿