【问题标题】:Is it a good practice to allow non-mandatory fields to accept NULL values ? Mysql允许非强制性字段接受 NULL 值是一种好习惯吗? mysql
【发布时间】:2014-04-21 06:12:59
【问题描述】:

我有一个 PHP 表单,其中包含必填字段和非必填字段。在相应的 mysql 表中,我定义了必填字段不是 NULL,非必填字段将接受 NULL 值。但我发现即使对于 NOT NULL 列,用户也可以输入空白值。如果我将 NULL 列留空,mysql 会将其值显示为 NULL,如果我将 NOT NULL 列留空,mysql 会将其值显示为空白(不显示 NULL)。

我现在的感觉是没有必要在对应的mysql表中定义非必填字段为NULL。最佳做法是什么?可以保持原样吗? (即仍然允许他们接受 NULL 值)或者我应该将非强制性字段也更改为不接受 NULL 值。

需要你的建议!!!!!!

【问题讨论】:

  • 添加了指向反论点的链接。

标签: php mysql null


【解决方案1】:

如果您提到表单字段会更好, 但是如果您的意思是用户可以在表单输入中输入空白(空格字符)值,您应该过滤输入数据以避免将空白值插入数据库。 我认为你应该只控制 php 代码中的必填字段,表列 null/not null 定义仅基于输入字段的类型和其他表之间的关系。

【讨论】:

    【解决方案2】:

    双方都有意见,但对我来说最有意义的是为所有字段指定“NOT NULL”,并使用您选择的默认值 - 通常是空白屏幕,但对于日期可能会有所不同。这就是我对大多数桌子所做的事情。

    话虽如此,请参考对方的论据herehere

    除了特殊情况外,我和可能的人不使用 NULL 值有几个原因。一是它使您的查询更容易。您知道您可能有空白值,但您知道您没有 NULL 值,并且您不必同时搜索两者。

    我似乎还记得在某些具有 NULL 值的引擎上的索引性能问题,但在 MySQL 5.6 上可能不再是问题。

    要考虑的另一件事是 NULL 或空白值的含义。为了论证的缘故,如果你的数据库中没有填写约翰的毕业日期,那是否意味着:

    1. John 还没毕业?
    2. 他已经毕业了,但我们不知道什么时候?
    3. 还是说我们不知道他是否毕业了?

    这是设计表格时要考虑的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 2014-05-17
      相关资源
      最近更新 更多