Właśnie w ten sposób chciałem to zrobić, ale nie wiedziałem czy to jest dobra praktyka, bo wiele "ekspertów" mówi że miejsce na dane jest w bazie danych, nie w kodzie źródłowym. Dzięki za podpowiedź z byte, faktycznie int nie będzie tutaj potrzebny.
I dlatego o wiele lepiej jest słuchać anonimowych ekspertów z forum... aha... Sam napisałeś, że zakres wartości jest stały i ograniczony, więc po co robić redundantne struktury w bazie danych których istnienie nic nie wnosi? Odwzorowywanie typów wyliczeniowych w strukturach baz danych ma jedynie sens gdy np: robisz aplikację wielojęzyczną i chcesz jego tłumaczenia przechowywać w bazie danych aby mieć możliwość sortowania wyników zapytania po stronie serwera bazy według właśnie tego typu wyliczeniowego w danym języku. Każdym inny przypadek również będzie dobry o ile takie podejście uzasadnia. Twoje działania w tym konkretnym przypadku nie są podyktowane żadnym sensownym uzasadnieniem tylko własnym "widzi mi się".
@szalonyfacet nie lepiej, to rozwiązanie jest bez sensu... Po co deklarujesz typ wyliczeniowy którego praktycznie nie używasz w żadnym innym typie? Aby za każdym razem rzutować na właściwy typ? Przecież pod spodem to i tak będzie typ numeryczny... Użycie typu wyliczeniowego za to zawsze jasno określa jakie wartości dla danej właściwości obiektu są prawidłowe (co można wykorzystać np: implementując w prosty sposób automatyczną walidację przez konwencję).