Нет ли смысла создавать переменный символ длиной 1 в базе данных?

#mysql #memory #char #varchar

#mysql #память #символ #varchar

Вопрос:

Я хотел бы сохранить статус пользователя в базе данных, поэтому я буду использовать символ для сохранения статуса, например, «активен», «неактивен», «закрыт». Я буду использовать «a», «i», «c» для представления этих статусов. Но нет смысла хранить varchar в базе данных? должен ли я использовать тип символа или set?

**база данных в mysql.

Комментарии:

1. varchar — это сокращение от «Символ переменной»… Если размер не будет меняться, нет необходимости использовать varchar, который медленнее и больше, чем char . С другой стороны, c , i и т.д. Не имеют реального значения. Используйте семантику, (я думаю, что) Active лучше, чем a .

Ответ №1:

Возможно, вы захотите рассмотреть возможность использования вместо этого int или enum. Если вам нужен тип символа, CHAR(1) NOT NULL должно быть в порядке. С перечислением это было бы:

 status ENUM('active', 'inactive', 'close')
  

С помощью int:

 status tinyint
  

Использование int — хороший вариант, но хорошо документируйте значения.

Комментарии:

1. Еще лучше: ENUM('active', 'inactive', 'close') . Размер хранилища не меняется.

Ответ №2:

Следует остерегаться того, что добавление нового значения в перечисление требует перезаписи всей таблицы. Обычно я рекомендую хранить CHAR или VARCHAR . Можно добавить ссылку FK к таблице допустимых значений, если вам нужен другой аспект перечислений, требующий, чтобы значение было перечисленным. Тогда ‘almost enum’ можно расширить, добавив другое значение в таблицу FK ‘ed.