良いあそなすちゃん

良い方のあそなすちゃんです!

意図しない設計

あるカラムがNULLかどうかでそのレコード(インスタンス)の振る舞いを変える、みたいなやつ、NULLじゃなく文字列(ENUM制約付き)とか真偽値とかでやってくれって思う。

NULLでええやろ、みたいな思考になるの、まぁわからんでもないが、データモデル側でNULLだった場合にいい感じに人間が読める感じにすると思うんだけど、そもそもアプリケーション側で意図しないNULLが絶対に入らない保証を絶対に完璧しなくてはならない。そしてソフトウェアに絶対とか完璧はない。
その機能に関わっている人以外は「NULL可カラムだからNULL入ってもええんやろ」みたいな場合にNULLを入れてしまいデータが壊れることになるし、カラム名に zetttai_NULL_wo_irenai_koto みたいなサフィックスでもついてない限り人がひたすら気にかけることになって死ぬほどだるくなるから、基本的にそういう設計はしないしさせないようにしていたけど、目の前のバベルの塔でしばらく気を失ってて気が付いたらSchemafile変更されてて本番デプロイされててマジか、みたいなのがあった。

DB、ただの容器感覚でデータポコポコ出し入れといつか死ぬので、DBの設計は厳しく厳かに佇んている必要がある。しかし設計はある面においては柔軟にして拡張性を保つ必要もある。難しい。

当面はどうやって意図しないNULL可カラムを処すかみたいなことを頭の隅で考えていつか革命を起こす気でいる。