【问题标题】:Have a yes or no field in database?数据库中有是或否字段吗?
【发布时间】:2015-04-26 00:24:08
【问题描述】:

对于诸如

这样的形式

知道时间吗?是或否

如果是,则询问时间输入。

时间灵活吗?是或否

如果是,则询问小时数输入

应该如何将表单提交记录在数据库中?

是否应该在数据库中记录所有 4 个字段(本例中为 2 个布尔值和 2 个非布尔值)?还是只存储 2 个非布尔值并将该字段存储为 null,如果该字段具有来自表单的 No 值?

是否值得在数据库中有一个字段用于从表单提交是/否?如果是这样,如果字段的存在为否,那么非布尔字段的值是多少?

上述重复问题并未解决为字段存在存储布尔值的问题。它只讨论了 MySQL DB 表字段中没有数据的表示。

【问题讨论】:

  • 如果它是可选的,则将其存储为空值比存储额外的布尔值更常见,因为它需要更少的簿记。
  • 布尔字段有什么价值吗? null 通常表示“这里没有值”,所以如果您需要存储的只是没有值的事实,那么列中的 null 条目似乎可以捕捉到这一点。如果布尔字段只是重复该事实,那么您实际上是将相同的数据存储了两次。历史上很难保持相同数据的副本同步。
  • "是否值得在数据库中有一个字段用于从表单提交是/否?"
  • 为了方便用户,表单可以提出“是”或“否”问题。当它可以存储为表示 YES 或 NULL 表示 NO 的值时,将其存储在 DB 中是没有意义的。

标签: php mysql database


【解决方案1】:

在您的情况下,我可能会使用单个编码列而不是多个布尔值。我会定义一些代码(1=未知时间,2=已知时间 - 灵活,3=已知时间 - 不灵活等)并将它们的短(1,2,3,..)值存储在数据库中。这将减少字段的数量并简化将来的查找。您可以使用代码表来存储这些代码以供参考。

【讨论】:

    【解决方案2】:

    仅使用这两个值的要求是,如果对任一问题的回答是肯定的,则非布尔响应是强制性的。

    【讨论】:

      猜你喜欢
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2018-09-16
      • 1970-01-01
      • 2017-11-22
      • 2021-11-14
      相关资源
      最近更新 更多