Sql server 2008 此表上是否需要特殊的数据库约束?
我的数据库里有一个评论系统。就像stackoverflow->每个帖子都有一个评论列表。基尔 匿名用户也可以添加评论或注册用户 在我的表格中,我正在考虑以下内容:Sql server 2008 此表上是否需要特殊的数据库约束?,sql-server-2008,unique-constraint,Sql Server 2008,Unique Constraint,我的数据库里有一个评论系统。就像stackoverflow->每个帖子都有一个评论列表。基尔 匿名用户也可以添加评论或注册用户 在我的表格中,我正在考虑以下内容: Userid int可为空 匿名昵称varchar(100)可为空 匿名邮件varchar(200)可为空 现在它只能是其中之一。你不是已经注册就是没有注册 那么,我应该强制执行某种类型的约束,即一种约束还是另一种约束。。如果是,怎么做 注意:数据库是Microsoft Sql Server 2008 干杯 一个简单的约束是 (U
- Userid int可为空
- 匿名昵称varchar(100)可为空
- 匿名邮件varchar(200)可为空
干杯 一个简单的约束是
(Userid is not null and AnonymousNickname is null and AnonymousEmail is null)
or (Userid is null and AnonymousNickname is not null and AnonymousEmail is not null)
这将强制只设置一个或另一个。根据你的申请,这听起来是合理的。由您决定在数据库或应用程序中实施它。如果应用程序的其他部分依赖于硬约束,那么我可能会在数据库中强制执行它,并通过代码中的验证来检测它。我不会包含该约束。您应该将匿名名称字段重命名为name。当注册用户留下评论时,请将其用户名输入“名称”字段。当您列出注释时,这将为您保存对用户表的查找。此外,如果用户从用户表中删除,他们的评论会比他们的寿命长。我肯定会在应用程序中检查这一点,但我喜欢总是有非常紧凑的代码和紧凑的数据库,所以我不确定这是否也可以在数据库中完成。如果是这样,怎么做?tvanfosson的答案是如何在db中执行-在表上创建约束并使用他的代码…哦。。很抱歉我还以为那是些伪密码。很抱歉我以前从未做过限制/你的方法会使数据库非规范化。如果一个用户被删除,他们将有大量的子记录,因此不能直接删除,而只是被标记为不活动。@rmeador:my schema或joemucchiello's会反规范化吗?此外,我不明白你想说什么,当(如果)一个用户被删除??