Если это фиксированный список (который, кажется, есть, или вы не должны хранить его как перечисление), я бы не использовал # 1.
Основная причина использования № 3 над № 2 - простота использования с утилитами самообслуживания. Тем не менее, я бы на самом деле пошел с вариантом # 2: сохранить значение в виде целого числа и сопоставить с перечислением при получении данных. Однако также создайте таблицу, представляющую тип enum, со значением в качестве PK и именем в качестве другого столбца. Таким образом, его легко, быстро и эффективно использовать с вашим кодом, но также легко получить логическое значение с помощью самообслуживания и других целей, которые не используют ваш код доступа к данным.