Нули имеют решающее значение в базе данных.Я еще никогда не имел дело с базой данных, которая не позволяла принимать значения NULL, которые в конце концов не были намного сложнее запрашивать, намного сложнее поддерживать (как вы решаете, что означает значение, я не знаю ответа) и обычно имеют большеплохие данные.Да, нулевые значения требуют особой обработки в запросах, поэтому делайте такие вещи, как добавление гораздо более поздней даты (1 января 1999 года) в качестве конечной даты, чтобы избежать нуля.
По правде говоря, некоторые данные просто не известны на момент вставки записи.Ничто не может заменить ноль.
Теперь в вашем случае, если вам нужно разбить две таблицы на две, на ширину таблиц и на частоту, с которой вы будете запрашивать эти обнуляемые столбцы.Я вряд ли перенесу столбец среднего имени в другую таблицу, хотя у меня было много нулей, потому что он всегда запрашивается с другой информацией в базовой таблице.Я также вряд ли перенесу столбец конечной даты.Но если столбцы - это вещи, которые хорошо знать, но обычно их не запрашивают всякий раз, когда вы запрашиваете базовые данные (например, день рождения, цвет волос и т. Д.), Тогда может подойти отдельная таблица только для записей, содержащих данные.Помните, однако, что когда вы запрашиваете, используете ли вы внутреннее соединение, вы удаляете все записи, которые не имеют значения во второй таблице.Если бы я обычно хотел, чтобы все записи (как со вторым именем, я редко запрашиваю людей, имеющих второе имя «Мэри»), то я склонен хранить их в одной таблице, если таблица не становится очень широкой, и я необычно не хотят запрашивать эту информацию.