Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 稀疏列还是普通列?_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 稀疏列还是普通列?

Sql server 2008 稀疏列还是普通列?,sql-server-2008,tsql,Sql Server 2008,Tsql,表中有6列日期时间类型。我的应用程序有一个要求,即每个列都应该有一个额外的列,用于验证,可以是位数据类型,如果用户想要修改它,还可以是另一个修改的日期时间。所以我的问题是,有什么比为每一列添加两列更好的方法吗?我也知道稀疏列可以用来节省表空间,但还有什么更好的方法吗 “比特”逻辑 所以有3列 原始日期时间, 修改日期时间和 验证位。 验证位默认设置为false。当用户想要更改日期时间时,修改后的日期时间列将更新为新值;但是,原始日期时间列中不会有任何更改。现在,用户必须决定输入的值是否有效。验证

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

“比特”逻辑

所以有3列

原始日期时间, 修改日期时间和 验证位。
验证位默认设置为false。当用户想要更改日期时间时,修改后的日期时间列将更新为新值;但是,原始日期时间列中不会有任何更改。现在,用户必须决定输入的值是否有效。验证位将决定此功能。

我将禁用有效复选框,直到他们输入修改日期。稀疏对于这两列是有效的。

如果您解释一下验证位背后的逻辑,这会有所帮助。@jsobo:所以有3列1。原始日期时间,2。修改日期时间和3。验证位。验证位默认设置为false。当用户想要更改日期时间时,修改后的日期时间列将更新为新值,但原始日期时间列不会更改。现在,用户必须决定输入的值是否有效。验证位将决定此功能。希望这能有所帮助。在什么情况下,用户会输入一个日期,然后确定它无效?我得到了稀疏列,这似乎是一个很好的用途。我只是没有得到这个验证位。@Blam:可能会有一个web表单包含“原始日期”、“修改日期”和“修改日期是否有效”列。用户看到原始日期,然后决定是否要更改日期。若他决定更改,那个么在表单和表中的“修改日期”列中存储一个新日期。然后,用户需要根据业务规则决定修改后的日期是否有效。如果修改日期有效,则他将选择true选项,该选项将验证位设置为true,否则保持原样。希望这有帮助。然后我会将声明更改为验证位表示状态。感谢@Blam的回答,但我想我无法在这里正确解释问题。我问的是,当我有一个主列和两个其他列时,稀疏列是我唯一的选择,它们应该在那里,但不一定每次都会被填充??您可以有一个单独的具有FK关系的表。在表中,FK也是主键,因此主表中的每一行只有0或1行。加入PK聚集索引非常快。就我个人而言,我使用稀疏列作为个人偏好,在2005年之前,稀疏列不可用。。