Answers:
在这里,我将采用另一种方法,建议对于您的开发人员来说,理解您的代码与编译器/数据库一样重要。使用布尔值可能与使用tinyint相同,但是它具有在语义上传达您的意图的优点,这是值得的。
如果使用tinyint,则应该看到的唯一值不是0和1并不明显。布尔值始终为true或false。
boolean
在MySQL中不是不同的数据类型;它只是的同义词tinyint
。请参阅MySQL手册中的此页面。
我个人建议使用tinyint作为首选项,因为boolean不会按照名称进行操作,因此可能导致误导代码。但是从实际的角度来看,这实际上并不重要-它们两者都做相同的事情,因此您不会因为使用这两者而获得或失去任何东西。
使用枚举既简单又快捷
我不建议使用enum或tinyint(1),因为bit(1)仅需要1位用于存储布尔值,而tinyint(1)需要8位。
参考
BIT(M) - approximately (M+7)/8 bytes
请参见:dev.mysql.com/doc/refman/8.0/en/storage-requirements.html
虽然这是真的,bool
并且tinyint(1)
是在功能上是相同的,bool
应该是更好的选择,因为它承载着你想要做什么语义。同样,许多ORM都将转换bool
为编程语言的本机布尔类型。
boolean
的tinyint(1)
。所以,你可以使用boolean
,true
并且false
和MySQL将它们视为tinyint(1)
,1
和0
。