Какой тип поля лучше для флага "Да" или "Нет"

Эдди

Новичок
Какой тип поля лучше для флага "Да" или "Нет"

Где-то когда-то читал, что неправильно использовать тип enum с каким-либо значением типа "true" - "false" или "yes" - "no".
А надо категорически использовать числовой тип вроде 0 - 1.
Не помню, чем обосновывалось. Вот и спрашиваю...
 

Эдди

Новичок
Автор оригинала: fixxxer
никакой разницы не вижу
Можешь прикинуть, почему может вообще возникнуть мысль, что enum - неправильно.
БЛН. Ну не могу вспомнить, где это написано...

Я рассуждаю так. enum имеет тоже внутреннее численное представление. Потому со строками это не связано.
А к примеру, tyniint - это 255 вариантов.
Логически первое лучше. Или нет?
 

fixxxer

К.О.
Партнер клуба
предлагается сэкономить целый байт, офигеть.
 

Эдди

Новичок
Как я понял - синонимы.
А для себя вынес, что буду использовать tinyint(1).
Привычнее как-то...

Вурдалак, спасибо за ссылку. Исчерпывающе...
 

Найч

Алгоритмик :-)
в последнее время все больше склоняюсь к tinyint по 2 причинам
1. Как бы не предусматривали, что значений будет только 2, в долгоживущем проекте иногда возникает необходимость добавить еще одно возможное значение. Alter table на больших нагрузках и объемах совершенно не интересное занятие. А с читаемостью в коде все просто при использовании констант, подставляющих значение в поле
2. Выборки на 5% медленней на 5.0.67. Мелочь, а неприятно

Если на эти 2 пункта можно положить - то выбор переходит в плоскость вкуса
 

Вурдалак

Продвинутый новичок
Автор оригинала: Найч
Alter table на больших нагрузках и объемах совершенно не интересное занятие.
— один раз-то в момент реализации нововведения? Никак не аргумент :)
 

Zefo

Новичок
Найч
А откуда инфа насчёт "Выборки на 5% медленней на 5.0.67. Мелочь, а неприятно" ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вурдалак
Это если табличка не 10Гб весом. Бывает, но редко...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fixxxer
вообще имхо каждый дрочит как он хочет, и тут не принципиально сделать enum, set, или int поле)

Да и оправдан enum как мне кажется - в случаях, когда нужен не "да-нет" выбор, а какой-то набор строго определенных значений.
 

Найч

Алгоритмик :-)
не, ну известно, что в Москве давно нет тех проблем, что в регионах :)
там и данных побольше, и мощностей поболее, да и руки прямее, так что ворочать терабайтами научились за считанные секунды
 

Эдди

Новичок
Да проблема не в alter table один раз.
А в правке кучи старых скриптов, если уж придется добавлять еще один элемент.
И всегда помнить о "западло", когда какой-нибудь, да упустишь.
 
А я юзаю enum т.к. там чётко указывается, что там может храниться - "yes" или "no", "1" или "2"... а если тип tynyint, то там может оказаться и 1 и 2 и 3... Типа БД сама контролирует "чистоту" данных.
 

Beavis

Banned
Вася Патриков
только проблема в том что после выборки этого "yes"/"no"
в скрипте уже не проверить if ($flag) как это можно было сделать в случае с TINYINT(1)
придется писать if ($flag == "yes"), что не очень удобно
 

Эдди

Новичок
Так же, как и неудобно при множественном выборе использовать цифры 1, 2, 3 и помнить, что значит каждая цифра.

Кажется, в теме, на которую была ссылка выше, исчерпывающе сказано, что где как удобнее использовать.
http://phpclub.ru/talk/showthread.p...threadid=118392?
 
Сверху