Помоему это не чем не лучше чем intАвтор оригинала: С.
Предлагаю "срединный путь" -- мнемоника и экономия в одном флаконе. Тип поля CHAR(1), значения полей соответственно "P", "D", "H" и т.п.
Хех, это кстати и есть пресловутый «опыт» и «чутье», за которые профессионалы берут деньги.когда следует отступать от "правильного" проектирования БД ради увеличения производительности запросов.
+100«Не гадай, где у тебя узкое место, а возьми и померь!»
Это не соблазн, а ВЫНУЖДЕННАЯ мера. У тебя она есть?и тут появляется соблазн заюзать денормализацию
У тебя реальный высоконагруженный проект?на реальных высоконагруженых проектах
Я так и делаю, как бы иначе я узнал где узкое место? Если речь о том чтобы сравнить различные реализации и посмотреть что быстрее, то так я тоже делаю, НО реальные проекты,реальные ситуации и синтетические тесты это все же разные вещи.«Не гадай, где у тебя узкое место, а возьми и померь!»
У меня есть желание перестать делать ни на что не пригодное гавно. И есть желание сразу пытаться создать грамотную архитектуру на этапе проектирования. Мне хочется сразу зафисксировать на бумаге, в доках к системе почему было выбрано именно такое арх. решение.Это не соблазн, а ВЫНУЖДЕННАЯ мера. У тебя она есть?
У меня есть такой проект, но все вопросы которые я тут поднимаю в основном касаются разработки OpenSource проекта.У тебя реальный высоконагруженный проект?
Ну и делай грамотную? Я тебе о чем? Денормализованная архитектура это не грамотная, а либо бездарная, либо вынужденная. Андестенд?И есть желание сразу пытаться создать грамотную архитектуру
в таких случаях обычно храню статусы в виде битовой маски в одном поле типа int. Очень удобно и нет никаких проблем с добавлением новых статусов.Автор оригинала: Nelius
pilot911
хороший вариант когда есть фиксированный набор статусов и необходимость устанавливать для записи несколько статусов одновременно.
Это уже надо смотреть наскоко часто меняется и кем меняется. Если фиксированно и только _возможно_ в будущем расширение то целесообразно держать эти значения в const HIDDEN = 0 et cetere, чтоб избавиться от magic number + auto compliteтакже имхо совершенно лишнее создавать для имен статусов отдельную таблицу - достатосно держать их где-то в массиве (KISS)
Нет контроля значений, которое дают enum.Предлагаю "срединный путь" -- мнемоника и экономия в одном флаконе. Тип поля CHAR(1), значения полей соответственно "P", "D", "H" и т.п.
Когда у вас программы-клиенты к БД написаны к примеру на разных языках программирования, то возможны ситуации, что в одном коде массив поправили, а в другом забыли.достатосно держать их где-то в массиве (KISS)
Ага,а альтить базу не избыточно, править маппинг полей и тд. Заместо того чтоб вставить 1! лишь ряд, изза того что ктото не поймет имхо элементарный запрос. Так давайте и обьекты не использовать. + А кто должен понимать эти запросы?Когда у нас есть несколько флагов, которые фактически имеют тип bool и могут быть установлены в различных комбинациях
имхо, не вижу смысла в бинарной маске, как таковой. Экономить пару десятков байт, и не иметь возможности построить по ним потом простую выборку опираясь на индекс... лучше уж тогда в отдельные целочисленные поля разнести.по поводу подхода который предлагает A1x?
ниче не понял :-(Автор оригинала: HraKK
целесообразно держать эти значения в const HIDDEN = 0 et cetere, чтоб избавиться от magic number + auto complite