Поле типа BIT
выставить крайний правый бит в 1: update bitset set data=data | 1
выставить крайний правый бит в 0: update bitset set data=data &~ 1
остальные биты так же (2, 4, 8, 16 ...)
Использую поле integer через слой. NULL понимается как FALSE, единичка 1 — TRUE. 

В итоге:
1. Кроссбазно. В любой момент можно переезжать от SQLite и MySQL до PostgreSQL и Oracle, а также экзотические, и даже nosql базы. Все, что поддерживает слой. Если не поддерживает — просто написать новый драйвер для слоя.
2. Не заметно каких-то существенных изменений в производительности и ресурсах. Честное слово, не заметно!
3. Удобно для использования, удобно для программирования, очень удобно для стандартизации.
4. В любой момент можно расширить количество состояний сущности. Про запас имеются 4 миллиарда вариантов…