最好的选择是0和1(作为数字-另一个答案建议0和1作为空间效率的 CHAR,但这对我来说有点扭曲) ,使用 NOT NULL 和检查约束来限制内容到这些值。(如果需要使列为空,那么所处理的不是布尔值,而是具有三个值的枚举...)
0/1的优点:
语言独立。如果大家都用 Y 和 N 就好了。但他们没有。在法国,他们用‘ O’和‘ N’(我亲眼见过)。我还没有在芬兰编程看看他们是否使用‘ E’和‘ K’,毫无疑问,他们比那更聪明,但你不能肯定。
与广泛使用的编程语言(C,C + + ,Perl,Javascript)中的实践相一致
可以更好地使用应用程序层,例如 Hibernate
例如,导致更简洁的 SQL,查明有多少香蕉准备吃 select sum(is_ripe) from bananas而不是 select count(*) from bananas where is_ripe = 'Y',甚至(呀) select sum(case is_ripe when 'Y' then 1 else 0) from bananas
“ Y”/“ N”的优点:
占用的空间小于0/1
这是甲骨文的建议,可能是一些人更习惯的
另一张海报建议“ Y”/null 表示业绩增长。如果你有 证明了,你需要的性能,那么足够公平,但否则避免,因为它使查询不那么自然(some_column is null而不是 some_column = 0) ,在左连接,你会合并虚假与不存在的记录。