Achei este link útil.
Aqui está o parágrafo destacando alguns dos prós/contras de cada abordagem.
O design mais comumente visto é imitar os muitos sinalizadores do tipo Boolean que as visualizações do dicionário de dados da Oracle usam, selecionando 'Y' para true e 'N' para false. No entanto, para interagir corretamente com ambientes host, como JDBC, OCCI e outros ambientes de programação, é melhor selecionar 0 para false e 1 para true para que funcione corretamente com as funções getBoolean e setBoolean.
Basicamente eles defendem o método número 2, por uma questão de eficiência, usando
- valores de 0/1 (devido à interoperabilidade com o
getBoolean()
do JDBC etc.) com uma restrição de verificação - um tipo de CHAR (porque usa menos espaço que NUMBER).
O exemplo deles:
create table tbool (bool char check (bool in (0,1)); insert into tbool values(0); insert into tbool values(1);`