【问题标题】:Best Sql server 2008 R2 data type to store NumberOfEmployees . value that can be >=zero存储 NumberOfEmployees 的最佳 Sql server 2008 R2 数据类型。可以 >= 零的值
【发布时间】:2025-12-14 22:55:02
【问题描述】:

我正在为我的 HR 系统构建一个数据库。我需要存储每个部门的员工人数。这个数字可以是从零到 999999 的任何东西......现在我将 EmployeeCount 存储为 int ,并且我正在检查用户不应该输入负数,所以我最终不会有诸如 -30 之类的值,- 100 等。

现在我不确定在 sql server 2008 r2 中是否有更好的数据类型来表示 EmployeeCount,它只允许存储正整数?我最近的数据类型是 tinyint,但它最多只能有 255 个..

【问题讨论】:

标签: sql-server sql-server-2008 sql-server-2008-r2


【解决方案1】:

int 在这种情况下可能是最适合您的数据类型。

“正整数”没有标准的说法,但简单的“整数”是最接近它的东西,然后让您的应用程序(或数据库约束,或存储过程,或触发器等)确保输入的值最终 >= 0。

【讨论】:

  • 所以 int 是要走的路……不知道为什么没有类似于 tinyint 但可以存储数字 > 255 的数据类型???
  • tinyint 是这样的,因为它被设计为需要 1 个字节,这意味着可能的最大值范围是 0-255。任何供应商也可以根据需要创建negativetinyint,并将其定义为-1 到-256,但是数据类型的专业化在某些时候变得比它们的价值更麻烦......
【解决方案2】:

只有在employeecount 的最大值为32768 时,您才能使用SMALLINT。除此之外,您还需要一个INT,并且在设计您的表时,您可以为值添加一个约束条件为正数。比如:

EmployeeCount int NOT NULL CHECK  (EmployeeCount > 0)

如果你真的想,你也可以定义你自己的类型。阅读本文以获取更多信息: https://technet.microsoft.com/en-us/library/aa933121(v=sql.80).aspx

【讨论】: