我们对数据库使用NULL或0吗?

时间:2018-02-05 09:15:10

标签: database-design

我是数据库管理系统的新手,我有一个问题...... 让我们说我设计了员工关系/表。在员工关系中,有一个名为" Pay"的列。有些工作人员没有工资,所以我的问题是我应该输入一个" NULL"或" 0"?两者都有效但哪一个更好?

4 个答案:

答案 0 :(得分:3)

你明显有一个“不适用”的案例,这是根据你自己的句子“有些工作人员没有工资”。

对“不适用”使用NULL比将其用于“[适用但未知]”更糟糕。 “未知”是SQL 用于它用于“未知”的“你将会受益”,即使只是在没有招致所有惩罚的意义上,如果你将SQL倾倒在你身上做理论上合理的事情,分成两个表。

假设 的某个人确实有薪水,但该付款本身是未知的。你是如何记录这一点并将其与真正没有报酬的人区分开来的呢?

答案 1 :(得分:1)

SQL中的

NULL

  1. 表示无价值(非价值)或未知
  2. 可能是为空,没有意义,没有值。
  3. 占位符表示未知未指定,或甚至未初始化的数据值>
  4. 内存空间为空。
  5. NULL不能用于算术运算(如+, - 运算符和聚合运算符count()或sum()等)。
  6. SQL中的

    0

    1. 0本身是数字已知数量为零。
    2. 0不是空的,已知指定已初始化已知数量为零。
    3. 存储空间中存储的值 0
    4. 0 可用于算术运算。

    5. 对于您的问题, 0 NULL 具有相同的含义。 0 表示工作人员来支付行动,但他/她已支付 0 (可能在某些文本框或组合框中,他/她选择0)。

      但是, NULL 意味着他/她没有来支付。也许在接下来的几天他/她会来支付一些钱。因此 0 NULL 具有不同的含义和信息。

答案 2 :(得分:1)

NULL和零有不同的含义。考虑平均工资。我们有6个人,工资为1,2,3,0,0和0.平均工资是1(6除以6)。

或者我们有6个人有薪水1,2,3,NULL,NULL和NULL。平均工资是2(六除以三)。在你的案例中哪个答案更有意义?

答案 3 :(得分:0)

取决于您想要表达的内容:

  • 如果这是布尔值(是/否)类型应为BITTINYINT(1)且值为0或1
  • 如果这包含更复杂的值(比如FK到另一个表),NULL是个不错的选择