2012-01-30 2 views
0

У меня есть вопрос об изменении типа данных в mysql.Mysql Тип данных

У меня есть столбец в таблице под названием статус

Какой будет иметь эти значения 0 = сыгран, 1 = активная, 2 = отвергнут, 3 = приостановить 4 = утвержден 5 = отзыв

Мой вопрос это лучший тип данных для использования. ли

Char(1) 
Tinyint(1) 
SmallINT(1) 
INT(1) 

Какой из них лучше использовать.

Я исследовал это, чтобы найти, но я не прихожу с правильным ответом.

Прошу совета.

Спасибо

ответ

1

Если только эти 5 значений всегда разрешены, а затем использовать TINYINT, который представляет собой тип 1 байт данных. Это дает вам диапазон 0-255 (без знака)/- 128- + 127 подписанного диапазона.

Не используйте символы для хранения числовых данных. Это тип текста.

В качестве альтернативы вы можете использовать поле ENUM, которое позволит вам использовать ваши «дружественные» имена вместо простых чисел.

+0

Thans for reply. Мне сказали избежать Эннума. – Lalajee

+0

@MarcB: Будет ли иметь значение, если используется 'TINYINT' или' CHAR (1) '? –

+0

tinyint 1 всегда является байтом, потому что это всего лишь число, char (1) действительно может быть больше, если вы храните utf-8/16 символов. Вы сохраняете числа, поэтому идите с полем int. –

1

Я просто не большой поклонник наличия кодов в таблице базы данных. Что происходит при добавлении нового статуса?

Вы можете создать таблицу поиска (дочерняя), называемую статусом. Вставьте все возможные значения для статуса, а затем настройте неидентифицирующее отношение с родительской таблицей.

Если есть специальный заказ (кроме алфавитного), который должен быть заказан, скажем, в выпадающем элементе управления, добавьте столбец, который вы можете сортировать.

+0

Благодарим вас за ответ. Потому что у меня разные статусы в каждой таблице, что затрудняет это. например У меня может быть 0 = Нет 1 = Да для активного. – Lalajee

+0

У меня будет такой же статус, и я буду писать статус на разных языках. – Lalajee

+0

@ Lalajee Не уверен, что я последую - Вы имеете в виду, что у вас будет другой статус в каждой строке или в каждой таблице? Оригинальный вопрос задан как часть одной таблицы. –