2016-06-01 5 views
2

Основываясь на документации, столбцы UNSIGNED не принимают отрицательные числа. Так это значит, должен ли я использовать атрибут UNSIGNED для каждого столбца, который всегда содержит положительные или нулевые значения?Когда следует использовать атрибут UNSIGNED для столбца точно?

Пусть эту таблицу структуру:

// vote 
+----+---------+---------+-------+------------+----------+ 
| id | id_post | id_user | value | code_table | time | 
+----+---------+---------+-------+------------+----------+ 

В таблице выше, все столбцы равны нулю или положительны, за исключением value колонки. Так должен ли я установить атрибут UNSIGNED для всех столбцов, кроме value? Я прав? Или использование атрибута UNSIGNED основано на другом параметре?

ответ

1

Если вы уверены, что все столбцы, кроме столбца value, будут содержать положительные значения, тогда да, вы должны установить его как UNSIGNED. Использование атрибута UNSIGNED основано только на этом параметре как на каком значении, которое вы ожидаете в своем столбце. Также обратите внимание, что UNSIGNED находится в диапазоне от 0 до n, если SIGNED находится в диапазоне от -n/2 до n/2.

На стороне памяти оба типа с подписью и без знака принимают одинаковое пространство памяти (4 байта для INT).

+1

Я вижу. спасибо .. upvote – stack

1

Используйте атрибут UNSIGNED, основанный на значениях, которые вы будете хранить в столбце.

Идентификаторы, например, обычно являются значениями без знака (это просто соглашение, ничто не мешает вам иметь отрицательные значения ID).

С другой стороны, столбец age всегда будет содержать положительные значения, и значение UNSIGNED подходит для него.

+0

получил. спасибо .. upvote – stack