Мне кажется, что я иду в другом направлении, чтобы объяснить, почему ноль и первичный ключ также принимаются в поле, когда сам первичный ключ неявно содержит не ноль.
Допустим, у нас есть таблица table1, что означает, что она будет хранить свое значение для хранения двухмерных данных. Если я создаю таблицу только с одним полем, это приемлемо, но каково ее использование в реальном времени в реальном объектном мире? Я думаю, это будет одномерная таблица, в которой будут храниться данные только одного поля. И сохранять это поле для принятия значений Null бессмысленно.
Теперь давайте предположим, что мы определили таблицу с 2 полями, что означает, что мы можем извлечь хорошую информацию из каждой строки при заполнении соответствующими данными.
Принятие этими двумя полями значения Null не имеет смысла ожидать, если мы хотим вытолкнуть мусор или ожидаемое количество (*) должно привести к появлению дополнительной строки.
Итак, мое мнение таково, что указание «не ноль» является обязательным по крайней мере для двух полей, если мы хотим использовать нормализованные таблицы с хорошими фундаментальными концепциями СУБД. Прежде чем подумать, нужен ли таблице первичный ключ в качестве ограничения, мы всегда определяем поле, не равное нулю. Кроме того, при необходимости используйте первичный ключ и обратите внимание, что вы можете удалить его в любое время, но не «not null»
И если мы уверены, что не будем отбрасывать первичный ключ, используйте только первичный ключ, в противном случае не нулевой, а первичный ключ.
Все зависит от использования, и, как я уже сказал, базовые определения таблиц и правила Кодда должны быть достигнуты для достижения хорошей базы данных.