0

我们就如何在 MySQL 数据库中保存新引入的复选框值进行了一些讨论。复选框可以是“开”或“关”,但有时根本不显示。我的想法是简单地将状态保存到 BOOL NOT NULL 字段。然后我们有0或1。我的同事然后说要包括NULL,所以我们可以看到没有做出选择。

但是,我确实认为 BOOL 字段永远不应包含 NULL。你想要它,但它是真还是假,不是未知的。如果您真的想保存“未知”的额外状态,我会将字段设为 TINYINT,没有选中 = 0、选中 = 1 和未知 = 2。这也可以是一个 ENUM 字段。

您如何看待可能为 NULL 的 BOOL 字段?

4

3 回答 3

1

它不是一个 NULL 可能的 BOOL,它只是一个状态枚举,其中

0: not selected 
1: selected 
2: unknown/hidden 

枚举是实现您想要做的事情的好方法,因为如果您的应用程序行为包括复选框值的“隐藏/未知”状态,那么您的 mysql 需要反映这一点,否则您将开始在未来。

于 2012-06-13T15:29:48.743 回答
1

就个人而言,我认为将 NULL 用于 BOOL 字段没有任何问题。就我而言,它是一种与其他类型一样的类型,可以合理地分配一个未知状态。但是,如果 BOOL 不能为 NULL,因为它定义为“开”或“关”,那么我认为这个逻辑可以扩展到例如 Ints。然后, Int 不能为 NULL,因为它必须是数字。

根据这里的其他答案,我显然是少数。我可能应该重新考虑我的立场。

于 2012-06-13T15:32:28.873 回答
0

boolean字段不能有超过 2 个值,布尔值本身表示“要么”条件,就像 On 或 Off、True 或 False。

于 2012-06-13T15:29:33.563 回答