我的数据库中有评论系统。就像stackoverflow一样 - >每个帖子都有一个评论列表。 KEWL。
匿名人士也可以添加评论或注册用户。
在我的表格中,我想要有以下内容:
现在它只能是一个或另一个。你是注册的还是非注册的。
那么我应该强制执行某种类型的约束来说明一个或另一个 ..如果是这样,怎么做?
注意:数据库是Microsoft Sql Server 2008。
喝彩!
答案 0 :(得分: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)
这将仅强制设置一个或另一个。根据您的应用,听起来这是合理的。由您决定在数据库或应用程序中强制执行它。如果它是应用程序的其他部分所依赖的硬约束,那么我可能会在数据库中强制执行它并通过代码中的验证来检测它。
答案 1 :(得分:0)
我不会包含约束。您应该将匿名名称字段重命名为name。当注册用户发表评论时,将其用户名放入名称字段。当您列出评论时,这可以节省您对用户表的查找。此外,如果从用户表中删除用户,则他们的评论会比他们更长。