У меня есть форма на сайте, которая имеет много разных полей. Некоторые поля являются необязательными, а некоторые - обязательными. В моей БД у меня есть таблица, в которой хранятся все эти значения, лучше ли вставлять значение NULL или пустую строку в столбцы БД, в которые пользователь не помещал никаких данных?
230
Если вы когда-нибудь планируете переключать базы данных, стоит учесть, что Oracle не поддерживает пустые строки . Они автоматически конвертируются в NULL, и вы не можете запрашивать их, используя такие предложения, как
WHERE somefield = ''
.источник
Steve B.
: смотрите этот вопрос: stackoverflow.com/questions/1171196/…Следует иметь в виду, что NULL может значительно усложнить ваши пути к кодам. Например, в Python большинство адаптеров / ORM баз данных отображаются
NULL
наNone
.Итак, такие вещи, как:
может привести к «Привет, нет Джо Доу!» Чтобы избежать этого, вам нужно что-то вроде этого кода:
Что может сделать вещи намного сложнее.
источник
Лучше вставить
NULL
для согласованности в вашей базе данных в MySQL. Внешние ключи могут быть сохранены как,NULL
но НЕ как пустые строки.У вас будут проблемы с пустой строкой в ограничениях. Возможно, вам придется вставить поддельную запись с уникальной пустой строкой, чтобы удовлетворить ограничения внешнего ключа. Плохая практика, я думаю.
Смотрите также: Может ли внешний ключ быть пустым и / или дублировать?
источник
Я не знаю, что было бы лучше в этом случае, но я бы вообще допустил ошибку в пользу нуля, если вы не хотите, чтобы ноль означал что-то отличное от пустой строки, а ввод пользователя соответствовал вашему определению пустой строки.
Обратите внимание, что я говорю, что вам нужно определить, как вы хотите, чтобы они отличались. Иногда имеет смысл различать их, иногда нет. Если нет, просто выберите один и придерживайтесь его. Как я уже сказал, я склоняюсь к NULL большую часть времени.
Да, и имейте в виду, что если столбец имеет значение NULL, вероятность того, что запись появится практически в любом запросе, который выбирает (имеет условие where, в терминах SQL) на основе этого столбца, если только выбор не для пустого столбца конечно.
источник
Если вы используете несколько столбцов в уникальном индексе, и хотя бы один из этих столбцов является обязательным (т. Е. Обязательным полем формы), если вы установите для других столбцов индекса значение NULL, вы можете получить дублированные строки. Это потому, что значения NULL игнорируются в уникальных столбцах. В этом случае используйте пустые строки в других столбцах уникального индекса, чтобы избежать дублирования строк.
Вот несколько кодов:
Теперь вставьте это, чтобы увидеть, что это позволит дублировать строки:
Теперь вставьте это и убедитесь, что это не разрешено:
Так что здесь нет правильного или неправильного. Вам решать, что лучше всего подходит для ваших бизнес-правил.
источник