为数据库实现简单的true-false切换的规范/最佳方法是什么?

时间:2011-08-11 23:43:15

标签: database toggle

例如用户偏好,例如“向其他用户显示我的电子邮件”,他们可以设置或取消设置复选框。

这是一个单一的信息,所以你将字段设置为INT(1)或BOOLEAN,你将它设置为一个或零(默认值为零),或者设置为一个或NULL。 SET有两个可能的值,'是'和'否'怎么样?

我看不出它们之间存在任何巨大的差异,或者陷入困境。什么是最佳做法?

编辑:忘了说,你测试这个值的语言可能是一个因素。如果您有内置的undeffalse,那么您可以使用

进行测试
if($show_email)

更好
if($show_email == something)

2 个答案:

答案 0 :(得分:1)

NULL应代表“我不知道答案”,而True或False应代表“我知道答案,它是[True | False]”

将“位”存储为特定数据类型是否有好处可能取决于您使用的特定数据库平台。对于没有显式布尔数据类型的数据库平台,如果您没有更好的指导,那么使用最小的整数(例如TINYINT)数据类型可能是一种安全的方法。

答案 1 :(得分:0)

我想我自己更喜欢1或0。这可能适用于很多数据库服务器(以及很多应用程序。)我只是抛弃了我也看到CHAR(1)使用'y'或'n'很多。当然这意味着您必须检查案例和所有这些,但如果这是一个问题,它确实可以节省一点空间。

我个人不会允许NULL。这增加了一些在应用程序级别检查的条件,不是吗?