【问题标题】:Database Design - Conditional Null Values数据库设计 - 条件空值
【发布时间】:2016-05-29 19:43:44
【问题描述】:

我有一个work_orders 实体,它可以有子工单,所以桌子上有一个parent_id。在某些情况下,子订单可以单独开票或与父订单一起开票。所以我有另一列名为bill_with_parent

由于 bill_with_parent 列仅适用于子工单,我一直将其设置为 NULL 用于非子工单,如果是子工单,则将是 0 或 @987654327 @。

这是处理此类事情的正确方法吗?

【问题讨论】:

  • 是的,我觉得还可以。

标签: mysql database-design data-structures


【解决方案1】:

虽然它不一定是“错误的”。我会摆脱null,只允许01。当然对于父母来说总是0,只有一个孩子可以同时拥有10

当您允许字段为 null 时,您永远必须在所有查询中为 null 大小写添加保护,因此我将保留使用 null 仅用于外字段键或存在的地方字面上没有有效值。

【讨论】:

  • 我认为 OP 意味着基于某些业务限制的孩子的 0/1。在这种情况下,父母必须为 NULL。
  • 是的,父母总是可以为该字段使用0,这将产生相同的结果。如果这比使用 null 更好,那很好。
  • @kenshin9 是的,如果它没有创建虚假状态并且您可以避免 null,我会选择它,甚至为父案例添加另一个状态 -1,但我认为从您的例如,只有 0 与父母一起使用。
  • 虽然我在某些事情上使用空值没有问题,但是的,这似乎是一个不需要空值的地方。
  • 感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
相关资源
最近更新 更多