Значение в поле таблицы - Y/N или 1/0

Духовность™

Продвинутый новичок
Значение в поле таблицы - Y/N или 1/0

В MySQL есть таблицы, где логические значения представлены как enum('Y', 'N')

А можно их ещё записать как 1 или 0 в столбце tinyint.

В последнем случае выигрыш по размеру - 1 бит вместо N байт.

А фактически, в чем приемущество/недостатки использования для логических величин тех или иных типов?
 

TutanXamoN

Новичок
если мы говорим о бинарной логике то здесь нам хватает 1/0
если у нас варианты Yes/No/Maybe уже стоит юзать енум
 

Wicked

Новичок
В последнем случае выигрыш по размеру - 1 бит вместо N байт.
А я всегда думал, что требования к месту у нас такие:
Код:
ENUM('value1','value2',...) 	1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum)
TINYINT 	1 byte
 

vovanium

Новичок
smallint(1) не катит?
Только SMALLINT занимает 2 байта, независимо от того, что в скобках ;)

Касательно одного бита, то насколько помню возможен вариант CHAR(0) и использование NULL-бита для определения статуса (но это только в таблицах с фиксированной длиной строки).
Хотя сам предпочитаю использовать TINYINT для таких целей.
 

ALEZ

Новичок
А как поступают, когда необходимо эти Y/N отобразить в интерфейсе? Скажем, вывести <select> с нужным <option> в зависимости от Y или N в таблице?

Ниужели, строят вот такую конструкцию:

<?
if ($result[display] == "Y") {$ display ="<option checked>Да</option><option>N</option>";}
else {наоборот}
?>

Думаю, что есть более правильные методы. Какие?
 

Gas

может по одной?
ALEZ
без разницы как это выглядит, всё равно создаётся одна функция-хелпер и вызывается в шаблонах, а о её содержимом очень быстро забываешь. У тебя высосанная из пальца проблема.
 
Сверху