【问题标题】:Sparse columns or normal columns?稀疏列还是普通列?
【发布时间】:2012-05-10 08:27:47
【问题描述】:

我在一个表中有 6 列日期时间类型。我的应用程序要求每一列都应该有额外的第一列用于验证,如果用户想要修改它,它可以是位数据类型和另一个修改的日期时间。所以我的问题是,有什么比为我拥有的每一列添加 2 列更好的方法吗?我也知道可以用来节省表空间的稀疏列,但我还有什么更好的办法吗??

“位”逻辑

所以有3列

  1. 原始日期时间,
  2. 修改日期时间和
  3. 验证位。

验证位默认设置为假。当用户想要更改日期时间时,修改的日期时间列将更新为新值;但是,原始日期时间列不会发生变化。现在用户必须决定输入的值是否经过验证。验证位将决定此功能。

【问题讨论】:

  • 如果您解释验证位背后的逻辑会有所帮助...
  • @jsobo :所以有 3 列 1. 原始日期时间,2. 修改日期时间和 3. 验证位。验证位默认设置为 false。当用户想要更改日期时间时,修改后的日期时间列将更新为新值,但原始日期时间列不会发生变化。现在用户必须决定输入的值是否经过验证。验证位将决定此功能。希望这会有所帮助。
  • 在什么情况下用户会输入一个日期然后确定它是无效的?我得到了稀疏的列,这似乎是一个很好的用途。我只是没有得到这个验证位。
  • @Blam :会有一个包含原始日期、修改日期和修改日期有效的网络表单。用户看到原始日期,然后决定是否要更改日期。如果他决定更改,则将新日期存储在表单和表格中的修改日期列中。然后用户需要根据业务规则来决定这个修改日期是否有效。如果修改日期有效,那么他将选择 true 选项,该选项会将验证位设置为 true,否则保持原样。希望这会有所帮助。
  • 那我就把语句改成验证位代表状态。

标签: sql-server-2008 tsql


【解决方案1】:

在他们输入修改日期之前,我会禁用“有效”复选框。这两列的稀疏工作。

【讨论】:

  • 感谢@Blam 的回答,但我想我无法在这里正确解释问题。我在问,当我有一个主列和另外 2 个应该存在但不一定每次都填充的列时,稀疏列是我唯一的选择吗??
  • 您可以有一个具有 FK 关系的单独表。在表中,FK 也将是 PK,因此主表的每一行只有 0 或 1 行。与 PK 聚集索引的连接非常快。就我个人而言,我只是出于个人喜好使用稀疏列,并且在 2005 年之前 sparse 不可用..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多