Какое значение по умолчанию выбрать для числового поля БД MySQL?

Тема в разделе "Базы данных", создана пользователем verfaa, 26 авг 2013.

Статус темы:
Закрыта.
Модераторы: latteo
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    Поле БД MySQL будет хранить числовое значение int(3), если юзером отмечен специальный пункт при заполнении анкеты на сайте.
    При создании поля задался вопросом, какое значение по умолчанию будет правильно для незаполненных полей?
    При создании поля попробовал оставить По умолчанию "Нет" (работаю в phpmyadmin) и во все незаполненные поля у меня подставились нули.
    А какое значение по умолчанию будет правильным в моем случае и почему?
    Может быть NULL?
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    Для указания "отсутствия значения" использую NULL
    Можно использовать "условности" (вроде 0 или -1), но зачем, если есть специальное значение "NULL"?
     
  3. svfolder

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    96
    Симпатии:
    39
    Все зависит от того как вы выполняете запросы на обновление этой таблицы, если вы используете поумолчанию 0, а true будет 1 или любое другое значение, тогда у вас не будет никаких заморочек с полем. Просто если ваш скрипт затрагивает это поле при обновлении, например в инсерте в это поле пишется '' тогда может возникнуть проблема, а если вы все запросы составляете вручную сами, тогда можно и NULL.
    В противном случае вам придется явно в запросах использовать SET поле = NULL
    Лично я например более 10 лет по умолчанию для числовых использую 0.
     
  4. antonio85

    antonio85 Создатель

    Регистр.:
    26 сен 2012
    Сообщения:
    13
    Симпатии:
    5
    В Вашем случае если "юзер" отметил пункт то надо записать "1" если нет "0", логические "true" либо "false". Для этого лучше использовать тип не int(3) который всегда одинаков от -2в31 до +2в31-1 и занимает 4б айта, а BOOL, BOOLEAN хранит 0 либо 1 = 1 байт (синоним TINYINT(1)).
    Источник
     
  5. NoName999

    NoName999 Создатель

    Регистр.:
    27 июн 2013
    Сообщения:
    14
    Симпатии:
    5
    Начнем с самого начала: NULL означает, что данные неизвестны. Т.е ни нулевые, а именно неизвестны. Например, если поле обозначает сколько котов живет дома у заполняющего, то 0 означает, что их нету у него. А NULL может означать, что угодно (этих данных у нас не имеется). Поэтому если такое различие важно, то незаполненное поле должно быть NULL. А если необходимы в процессе использования, например, не конкретные значения, а только некие агрегатные (например, максимально количество "котов" или сумма указанных), то тут неважно для нас 0 или NULL, т.к в указанной ситуации для нас это одно и тоже.
     
Статус темы:
Закрыта.