database - 何时在列中使用 Null 与 N/A?

标签 database database-design database-schema

假设您在一个表中有 2 列:FixedSalary 和 HourlyRate。这些列之一的值总是会丢失,因为不能同时向员工支付固定工资和小时费率。

现在,假设我有另一个表 HairColor 列。您正在为一位秃头患者更新一行。该值将丢失。

对于这两个示例,我们可以使用空值或类似“N/A”或“不适用”的值。我想知道,对于这些明显缺乏值(value)的情况,是否有最佳(数据库设计)实践,但缺乏值(value)是出于非常明确的逻辑原因?

最佳答案

像往常一样,这取决于。在这里,这取决于您希望在写入数据的应用程序和读取数据的应用程序之间传递什么消息。

NULL 通常传达“此位置没有值”的消息。这通常是读者需要知道的全部内容。特别是,在按小时计费和按薪计薪的情况下,一个结构良好的阅读器应用程序不应该对其中一个缺失感到特别惊讶,在任何情况下都是如此。

仅当数据读取者因数据不适用而丢失时预期以一种方式行事,而由于不同原因而丢失时以不同方式行事时,才真正需要指示“不适用”的特殊值,就像用户在输入表单上的遗漏。头发颜色可能就是这种情况,但这取决于您的情况。

最佳做法是分析您的案例,并据此进行设计。

关于database - 何时在列中使用 Null 与 N/A?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28854903/

相关文章:

database - 无法更改现有表时如何强制执行一对多关系

自定义元键 => 值查询的 MySQL 数据库设计

c# - ReferentialConstraint 中的依赖属性映射到存储生成的列。列 :

database - 远程连接 Azure SQL Server 不显示所有数据库

MySQL 搜索和替换以替换未使用的短代码

c# - Entity Framework /数据库 - 归档外键记录

mysql - 在 MySQL 数据库中实现复杂的约束

database - 设计表 : One to many and one to one at same time?

android - 如何 : Provide notification to Android app whenever SQLite table updates

mysql - 对于公交车时刻表,我应该为所有公交车准备一个数据表并将时间表存储在一列中,还是为每辆公交车创建单独的表?