NULLS应该在代码中还是在数据库中处理?的优点和缺点?

Xai*_*oft 6 c# t-sql sql-server database-design

我有几个关于何处理空值的问题.让我建立一个场景.想象一下,当提供使用空值或空字符串的原因时,我有一个包含5个varchar(50)列的表作为示例.

  1. 在代码或数据库中处理NULLS更好吗?我的意思是,如果一个空字符串没有包含任何值,或者将它赋给varchar(50)并在代码中处理null,最好将它分配给varchar(50)更好吗?

  2. 为列分配空字符串是否会影响性能开销?

  3. 使用null与空字符串如何影响索引?

  4. 我的印象是,如果您不允许数据库包含空值,则不必在代码中处理它.这个陈述是真的吗?

  5. 除了varchars之外的其他数据类型在使用默认值时是否会产生相同的问题,或者对于字符串数据类型是否更有问题?

  6. 如果表包含空值,使用ISNULL函数的开销是多少?

  7. 还有什么其他优点/缺点?

Don*_*nie 7

我的一般建议是在数据库中声明字段,NOT NULL除非您特别需要允许null值,因为对于刚接触数据库的人来说,它们往往很难处理.

请注意,空字符串和空字符串字段不一定意味着相同的事情(除非您将它们定义为).通常null表示"未知"或"未提供",而空字符串就是提供的已知空字符串.

允许或禁止null字段完全取决于您的需求.

  • 我同意你应该在可能的情况下将字段声明为NOT NULL,但我不同意你应该愚蠢的数据库设计,以方便新数据库的人.如果NULL是正确的选择,请使用NULL.如果某些新程序员不理解NULL,请向他们显示手册. (4认同)
  • 我不同意你的建议,以避免空值,因为对数据库不熟悉的人会感到困惑.不要避免空值,避免将数据库的新用户访问生产数据库! (2认同)