テーブルを分割するか NULL を許容するか
MySQL などの RDB の設計で悩んでいます。
NULL は排除できるなら極力排除するべきだという教えが一般的だと思うのですが、許容しても良い判断基準をどのように持てば良いのかが、自分の中でわかっていません。
例えば、ユーザテーブルがあり、結婚した日というカラムがあったとします。ユーザには結婚した人もいれば、していない人もいます。このとき、結婚日を NULL 許可するのか、結婚日テーブルのように分割するのか…。
使い方としては、全ユーザ一覧の中で結婚した人の絞り込み・結婚していない人の絞り込み・今年結婚した人の絞り込みなどの用途があります。つまり、テーブルを分割したとしても結局多く使わる SQL では LEFT OUTER JOIN をすることになるので NULL が入ってくることになります。
これが詳細プロフィールのように任意のデータが複数あるような集合だった場合は別テーブルに分割するという感覚はあるのですが、それが1列の場合はどうなのか。その NULL を含めた列を WHERE などの条件として使うような用途の場合はどうなんだろう…と色々な条件で考えていくとキリがなく。
おそらく色々なケースによって判断されると思うので一概にこっちだとは言えないと考えているのですが、みなさんの判断基準を参考にさせてもらえると助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。