2

我正在做我的第一个数据库项目。

我想知道为什么您应该NOT NULL在以下查询中使用

...
TITLE nvarchar(60) NOT NULL
..

语境

CREATE TABLE Questions 
(
         USER_ID integer FOREIGN KEY 
                         REFERENCES User_info(USER_ID) 
                         PRIMARY KEY 
                         CHECK (USER_ID>0), 
         QUESTION_ID integer FOREIGN KEY REFERENCES Tags(QUESTION_ID) 
                             NOT NULL 
                             CHECK (USER_ID>0), 
         QUESTION_BODY nvarchar(4000) NOT NULL,
         TITLE nvarchar(60) NOT NULL,                               /////// HERE                             
         MODERATOR_REMOVAL boolean NOT NULL,
         SENT_TIME varchar(15) NOT NULL
)

我看了VPuml的教程。他们将所有值放在逻辑图中可为空的,而其余的则为空NOT NULL。这表明我应该将 nullable 与逻辑图一起使用。

not null 在数据库中还有其他用途吗?

我觉得我们可以检查用户是否通过 JS 赋予了价值,例如,而不是在数据库级别。

4

4 回答 4

4

如果不允许空值,则应检查用户条目在数据库中设置 NOT NULL。在数据库中使用 NOT NULL 可以绝对确保没有错误数据输入到数据库中,而不管前端代码中的错误如何。

但是,由于数据库错误通常不利于向用户显示,因此您应该检查以确保在进行数据库检查之前没有提交空值。

于 2009-07-29T01:14:04.783 回答
1

NOT NULL通常用于外键(即到其他表的链接)。它确保一行链接到其他表。

它几乎总是用于主键,即表中的唯一标识符。

这对于必填字段也是一个很大的限制。这确保了如果用户没有输入标题或问题,交易将失败。数据库非常擅长快速执行此类约束,因此您会看到很多此类业务逻辑已放入数据库中。但是请注意,您需要在应用程序端检查数据库错误并相应地处理它。

不管怎样,NOT NULL真的是一个你总是想要一个值的列。这种情况实际上是相当多的,但希望这能让你了解我们为什么使用它。

于 2009-07-29T01:13:15.473 回答
1

NOT NULL 表示必须在列中放置一个值。当数据没有值而存在没有意义时,使用它。

例如,在您的“SO”数据库中,如果不知道 user_id 列,则存在问题是没有意义的。问题必须始终由用户创建。

于 2009-07-29T01:14:13.380 回答
1

有时,查询取决于某个字段是否有值。拥有该字段NOT NULL意味着您只需检查一个空值,在这种情况下''(空字符串)。允许NULL值意味着您可能也必须检查这一点,这会使查询复杂化。

于 2009-07-29T01:58:06.663 回答