我知道关于NULL数据库中的值有很多意见/方面。
我不明白什么是最好的做法。
即,如果我有一个带有可选属性的关系表,即它可以NULL取值 - 所以我们最终可以得到一个NULLs在该列上有很多的表 -最好使该属性成为一个新的关系表吗?
什么是最好的方法?
小智 9
从纯粹的关系角度(在第六范式之前),我认为没有必要将一组列移到单独的表中,仅仅因为它们经常为空。
作为一个简单的例子,考虑一个以结束日期作为列之一的客户帐户表 - 在客户关闭他们的帐户之前,结束日期将为 NULL。因此,结束日期列中可能有大量 NULL 值,但将其移到单独的表中将是一个糟糕的选择。
但是,作为一个实现问题,可能有充分的理由将某些字段拆分到单独的表中。例如,考虑一个客户地址表;某些地址可能需要复杂的递送说明,但绝大多数地址可能不需要它们。在这种情况下,有一个单独的地址传递指令表是有意义的,即使它与主客户地址表具有相同的键(客户地址 ID)。
(作为旁注,一些关系理论专家 - 例如 Chris Date 和 Fabian Pascal - 完全反对在关系数据库中允许 NULL。)
如果您的观点是“从关系理论”,正如您在该评论中声称的那样,那么答案很简单:null 不是值,包含 null 的事物不是关系,并且可以包含 null 的数据库是不是关系数据库。从关系理论的角度来看,没有“最佳”选择,因为根本没有选择。
(请注意,这并不意味着在物理(实现)级别,不能有诸如 null 之类的构造。但是这些构造不应该暴露给数据库用户,因为 DBMS 恰恰应该将其用户与实现内容隔离开来,让他只在逻辑级别与 DBMS 交互,这不能涉及空值。)
小智 0
“新的关系表”是什么意思?
如果您的列设置为 UNIQUE,则内容必须是唯一的,不能与任何其他行相同。这就是 NULL 或 NOT NULL 发挥作用的时候。提供 UNIQUE 或 NULL/空的选项。
| 归档时间: |
|
| 查看次数: |
1725 次 |
| 最近记录: |