#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.