テーブル設計において「これは任意項目だから」といって安易にカラムの NOT NULL 制約を外すのはイマイチかなと思った次第です。自戒を込めて。
例えば、こんなテーブルがあるとして、商品の説明文 (description
) は任意項目だから NOT NULL は外そう、という安易な思考にならないように。
この場合、テーブルを分けて NOT NULL 制約を付けるのがよさそう。
クエリはこんな感じになるはず。
SELECT * FROM products p LEFT JOIN product_descriptions pd ON pd.product_id = p.id WHERE p.id = xxx;
現場からは以上です。