评论系统的结构

时间:2012-04-30 07:58:29

标签: sql sql-server database-design blogs

我想管理一个n标签评论系统并设计一个这样的数据库结构。my database structure

我正在尝试设计一个支持未注册用户的评论审核的数据库。我需要的功能是在发布评论时

  • 如果用户已注册,则会直接显示。否则;
  • 主持人在出现之前必须检查帖子。

请建议对我上面的数据库架构进行可能的更改以支持此功能。

1 个答案:

答案 0 :(得分:1)

为了做你想做的事,看来你或多或少都有你需要的东西。用户创建新评论的过程如下

if the user is registered, and not blocked
  create BlogComment record with:
          IsApproved=true
          IsBlocked=false
          UserId=registered userId
          UserName = null
if the user is registered and blocked
  create BlogComment record with 
          IsApproved=false
          IsBlocked=true
          UserId=registered userId
          UserName = null 
if the user is unregistered
  create BlogComment record with
         IsApproved=false
         IsBlocked=false
         UserId=null
         UserName=user's name

当您提取评论以显示在帖子下方时,您需要像

这样的查询
SELECT Comment, ISNULL(bc.UserName, ru.UserName) AS UserName
FROM BlogComment bc
LEFT JOIN RegisteredUser ru
   ON bc.UserId = ru.Id
WHERE postId=<current PostId>
AND IsApproved=1

这将取消所有已批准的评论(来自注册用户或来自已经审核的未注册用户的评论)及其用户名(对于注册用户,这将是来自RegisteredUser表的用户名,用于未注册它将与BlogComment表中的评论

一起保存

最后,当您想要提取主持人的帖子列表以适度

SELECT * 
FROM BlogComment
WHERE IsApproved=0 
AND IsBlocked=0

然后,您可以将他们接受的记录更新为IsApproved=1