1

我正在使用 SQL Server 数据库,我正在开发一个房地产网站。

我有一个表格,其中列出了一个名为SIZE.

用户可以选择输入SIZE属性的值(仅整数和正数)。

目前我正在使用这个

int   Size   NULL

我想知道:

  • 如果在这种情况下 NULL 值是有意义的(我读了一些不鼓励使用 NULL 的文章,所以我想如果是这种情况)
  • size的值应该在0到100000之间,我想知道数据类型Int是否合适。

如果您认为这个问题不恰当,请仅发表评论,我会将其从网站上删除。

谢谢

4

3 回答 3

2

NULL这是正确的,因为它特别意味着没有输入任何值,这就是您要表示的内容。任何其他值实际上都会有一些意义。例如0是一个有效值——即使在这种情况下它可能没有意义。特别将其设置为NULL意味着您明确声明未输入任何值。

至于 max int 问题,来自文档

整数

从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整数(整数)数据。

于 2012-06-20T06:21:55.810 回答
2

如果在这种情况下 NULL 值是有意义的(我读了一些不鼓励使用 NULL 的文章,所以我想如果是这种情况)

NULL如果您想要代表非价值的东西,那很好。这比为每种不同的数据类型制作不同的表示形式(例如,数字中的 -1 或空字符串)要好。如果没有看到您阅读的文章并知道它提出了什么论点(以及在什么背景下),我们真的无法进一步评论。

size的值应该在0到100000之间,我想知道DataTypeint是否被占用。

它是大小最合适的整数类型 -最大值低于 100000。如果你想彻底,也可以在你的表中添加一个tinyint约束:smallintCHECK

CREATE TABLE Properties (
    -- Various Columns
    Size int null,
    constraint CK_Properties_Sizes CHECK (Size between 0 and 100000)
    -- More columns, constraints, etc
)
于 2012-06-20T06:25:12.597 回答
2

NULL是“正确”的方法,但它会使编写查询变得痛苦,因为NULL不会匹配除IS NULL. 例如,假设您想要一个查询来查找大小在 x 和 y 之间的所有行,但您还想要显示没有任何大小的行。您的查询将如下所示:

select * from some_table
where size between x and y or size is null;

这可能会引入不必要的复杂性,并且您还需要处理如何呈现空大小。

恕我直言,更好的选择是制作列NOT NULL并强制用户输入尺寸。这将简化您的应用程序和查询代码。

不要告诉我客户拥有房产,但不知道它有多大。

于 2012-06-20T06:30:36.750 回答