Я думаю, у вас есть 2 вопроса:
Вы должны пометить поля как не нулевые?
Да, при условии, что вы никогда не намерены, чтобы строка valid имела нулевое значение в этом поле. Думайте о "не нуль" как о простейшем типе ограничений, которые вы можете наложить на поле. Ограничения в базе данных помогают обеспечить согласованность данных в соответствии с ожиданиями.
Должны ли нулевые поля иметь значения по умолчанию?
Только при наличии очевидного значения по умолчанию. Например, поле «Оплачено» таблицы счетов может иметь значение по умолчанию 0 (false). В целом, все работает наоборот - если поле имеет значение по умолчанию, то оно, вероятно, также должно быть не нулевым.
Не создавайте значения по умолчанию только ради значений по умолчанию - если поле не должно быть нулевым, но универсального значения по умолчанию не существует, оставьте его таковым. Это гарантирует, что любые операторы INSERT должны предоставлять значение для этого поля.