几年前,我看到了一个由第 3 方开发的系统的数据库模式,并注意到他们使用 enum('y','n') 而不是 bool (tinyint) 字段。我不知道为什么,但我非常喜欢它,我发现它让事情更容易阅读(我知道这完全是主观的)但我采用了它并从那时起开始使用它。我想我可以将它换成“真”和“假”,但我能说什么呢,我只是喜欢它。
话虽这么说,但以这种方式做事是否有任何挫折——除了可能会让迟到的程序员有点恼火之外?
最佳答案
是的,这很糟糕。你失去了直观的 bool 逻辑(SELECT * FROM user WHERE NOT banned
变成了SELECT * FROM user WHERE banned = 'n'
),你收到的是字符串而不是 bool 值您的应用程序端,因此您的 bool 条件也变得很麻烦。使用您的模式的其他人会因为看到类似标志的列名称并尝试在它们上使用 bool 逻辑而受到攻击。
关于mysql - 使用 enum ('y' ,'n' ) 而不是 MySQL 表中的 bool 字段是否不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10882454/