Joe Celko (sql guru) 说我们不应该使用专有数据类型,尤其要避免使用机器级别的东西,比如位或字节,因为 SQL-Server 使用高级语言。基本上,数据建模的原理是数据抽象。因此,根据上述对“IsActive”等字段的建议,数据类型的正确选择是什么,一种非常便携,一种由前端层清楚地破译?谢谢!
问问题
131 次
2 回答
4
在 SQL Server 中,我会选择BIT
数据类型,因为它符合您描述的抽象要求:它可以有 2 个值(通过广泛使用的 Yes = 1 和 No = 0 约定映射到 Yes 和 No)。如果需要,它可以有一个额外的 NULL 值。
如果可能,使用本机数据类型对其他人来说具有性能、清晰度和可理解性的所有好处。更不用说当你可以保持简单时不要过度复杂化的原则。
于 2013-10-30T19:03:49.770 回答
3
SQL Server 没有布尔数据类型,所以布尔是不可能的。BIT 是接受值 0 和 1 以及 null的数字类型。我通常更喜欢带有 CHECK 约束的 CHAR 类型,它允许像“Y”/“N”或“T”/“F”这样的值。如果您愿意,CHAR 至少可以让您将一组值扩展到两个以上。
BIT 有一个潜在的缺点,即它是非标准的、不是特别用户友好的,甚至 SQL Server 用户也不能很好地理解它。BIT 的语义在 SQL Server 中非常奇特,甚至微软自己的产品对 BIT 的处理方式也不一致。
于 2013-10-30T19:45:16.757 回答