我正在使用SQL Server数据库,我正在开发一个房地产网站。
我有一个表格,列出了名为SIZE
的列的属性。
用户可以选择为属性输入SIZE
值(仅限整数和正数)。
目前我正在使用此
int Size NULL
我想知道:
Int
是否被占用。如果您认为这个问题不恰当,请将其从网站上删除。
谢谢
答案 0 :(得分:2)
NULL
这里是正确的,因为它具体意味着没有输入任何值,这就是您要表示的内容。任何其他值实际上都有一些含义。例如,0
是一个有效值 - 即使它在这种情况下可能没有意义。特别是将其设置为NULL
意味着您明确声明未输入任何值。
至于max int问题,来自documentation:
INT
整数(整数)数据从-2 ^ 31(-2,147,483,648)到2 ^ 31 - 1(2,147,483,647)。
答案 1 :(得分:2)
如果你想要一些代表非价值的东西,那么如果在这种情况下NULL值是有意义的(我读了一些不鼓励使用NULL的文章,所以我希望如果是这种情况)
NULL
就没问了。它比为每种不同的数据类型组成不同的表示(例如,数字中的-1或空字符串)更好。如果没有看到您阅读的文章并且知道它提出的论点(以及在什么情况下),我们就无法进一步评论。
size的值应该是0到100000,我想知道DataType
int
是否被占用。
这是大小最合适的整数类型 - tinyint
和smallint
的最大值低于100000.如果您想要彻底,请在表格中添加CHECK
约束:< / p>
CREATE TABLE Properties (
-- Various Columns
Size int null,
constraint CK_Properties_Sizes CHECK (Size between 0 and 100000)
-- More columns, constraints, etc
)
答案 2 :(得分:2)
NULL
是“正确的”方法,但它可以使编写查询变得困难,因为NULL
将不会匹配除IS NULL
之外的任何谓词。例如,假设您希望查询查找大小介于x和y之间的所有行,但您还希望显示没有任何大小的行。您的查询将如下所示:
select * from some_table
where size between x and y or size is null;
这可能会带来不必要的复杂性,您还需要处理如何呈现空大小。
更好的选择IMHO是制作列NOT NULL
并强制用户输入大小。这将简化您的应用程序和查询代码。
不要告诉我客户拥有房产并且不知道它有多大。