Ho trovato questo link utile.
Ecco il paragrafo che evidenzia alcuni dei pro/contro di ogni approccio.
Il design più comune consiste nell'imitare i numerosi flag di tipo booleano utilizzati dalle visualizzazioni del dizionario dei dati di Oracle, selezionando "Y" per true e "N" per false. Tuttavia, per interagire correttamente con gli hostenvironments, come JDBC, OCCI e altri ambienti di programmazione, è meglio selezionare 0 per false e 1 per true in modo che funzioni correttamente con le funzioni getBoolean e setBoolean.
Fondamentalmente sostengono il metodo numero 2, per motivi di efficienza, utilizzando
- valori di 0/1 (a causa dell'interoperabilità con
getBoolean()
di JDBC ecc.) con un vincolo di verifica - un tipo di CHAR (perché utilizza meno spazio di NUMBER).
Il loro esempio:
create table tbool (bool char check (bool in (0,1)); insert into tbool values(0); insert into tbool values(1);`