2012-04-30 11 views
-2

nラベルのコメントシステムを管理し、このようなデータベース構造を設計したいと考えています。 my database structureコメントシステムの構造

登録されていないユーザーのコメント管理をサポートするデータベースを設計しようとしています。私が必要とする機能は、コメントが投稿されたときのようなものです。

  • ユーザーが登録されていると、それが直接表示されます。さもないと;
  • 投稿が表示される前にモデレータがチェックしてください。

この機能をサポートするために上記のデータベーススキーマの変更点をご提案ください。

+0

私はあなたに答えを書く前にごくわずかです:1)ユーザーが登録されているかどうかをどのように識別しますか、あなたは 'RegisteredUser'テーブルを持っていますか? 2)あなたは 'BlogSetting'テーブルを見せましたが、リンクされたものは表示されません。 'BlogSetting'と' BlogPost'の親であるメインの 'Blog'テーブルはありますか? (ヒント:そこにあるはずです!)3) 'BlogBlockedUser'はどうやってそれに入りますか? – Jamiec

+0

@Jamiecええ、私は 'RegisteredUser' table.Blogの着座は、ページが読み込まれたときの取得です。私の' sp'によって管理されます。 –

答えて

1

あなたが望むことを行うために必要なものは多かれ少なかれあるようです。あなたは

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 
これはすべて承認されたコメントを引き出します

ようなクエリ(それらをしたいポストの下に表示するようなコメントを引き出すとき

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 

を次のようにユーザーが新しいコメントを作成するプロセスがあります登録されているユーザ、またはモデレートされている登録されていないユーザから)、ユーザ名とともに表示されます(登録ユーザの場合は、RegisteredUserテーブルのユーザ名です。登録されていないため、BlogCommentテーブルのコメントとともに保存されます)

最後に、あなたが

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

あなたは、彼らがIsApproved=1に受け入れるレコードを更新することができます緩和するためにモデレータのために記事のリストを引き出したいです。

+0

私に素敵なアプローチを与えてくれてありがとう。私はそれがほしいと思った。 –