2013-10-30 68 views
5

乔·塞科(SQL大师)说,我们不应该使用专用的数据类型,并从像位或字节机器层次的东西不要特别是自从SQL-Server使用高级语言。基本上,数据建模的原理是数据抽象。因此,辨别上述关于“IsActive”等字段的建议,对于数据类型来说,正确的选择是什么,一个非常便携,一个可以被前端层清楚地解读。谢谢!表示SQL-SERVER是“东西”数据

+2

是的,假设只有两个可能的值是“是”和“否”。 –

+0

虽然布尔对于SQL方言的实现有所不同,但对我来说似乎是合理的。 –

+1

@Jarvis。 。 。如果你的数据库支持'boolean',听起来像个好主意。并不是全部。你的问题会更好,如果它说:“我想在特定的数据库中表示布尔标志,什么是最好的方法?” - 然后用您正在使用的数据库标记问题。 –

回答

4

在SQL Server中,我将使用BIT数据类型,因为它与您描述的抽象要求相匹配:它可以有2个值(根据广泛使用的约定为Yes = 1和No = 0映射到Yes和No )。如果需要,它可以有一个额外的NULL值。

如果可能的话,使用本地数据类型具有的性能,清晰度和可理解为他人所有的好处。更不用说当你可以保持简单时不过分简单的原则。

3

SQL Server没有布尔数据类型,所以布尔不可行。 BIT是一个数字类型,它接受值0和1以及null。我通常更喜欢带有CHECK约束的CHAR类型,允许使用“Y”/“N”或“T”/“F”等值。如果你愿意,CHAR至少可以让你将这组数值扩展到更多。

位具有潜在的缺点,它是非标准的,不是特别方便用户甚至不会通过SQL Server用户很好地理解。 BIT的语义在SQL Server中是非常特殊的,甚至微软自己的产品都以不一致的方式处理BIT。