1

我在我们的数据库中有一个评论系统。就像 stackoverflow -> 每个帖子都有一个评论列表。科尔。

匿名用户也可以添加评论或注册用户。

在我的表中,我正在考虑以下内容:

  • 用户ID int NULLABLE
  • AnonymousNickname varchar(100) NULLABLE
  • AnonymousEmail varchar(200) NULLABLE

现在它只能是其中之一。你要么注册,要么没有。

所以我应该强制执行某种类型的约束,说一个或另一个..如果是这样,怎么做?

注意:数据库是 Microsoft Sql Server 2008。

干杯!

4

2 回答 2

2

一个简单的约束是

(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)

这将强制只设置一个或另一个。根据您的应用程序,这听起来是合理的。由您决定在数据库或应用程序中强制执行它。如果它是应用程序的其他部分所依赖的硬约束,那么我可能会在数据库中强制执行它并通过代码中的验证来检测它。

于 2008-12-14T05:04:33.380 回答
0

我不会包括约束。您应该将匿名名称字段重命名为 name。当注册用户发表评论时,将他们的用户名输入名称字段。当您列出您的评论时,这可以节省您对用户表的查找。此外,如果从用户表中删除用户,他们的评论会比他们更长寿。

于 2008-12-14T06:21:24.350 回答