1

ユーザーがページに残されたコメントを評価できるWebサイトがあります。各コメントには一意のIDがあります(例:402934)ユーザーが上記のコメントを高く評価/低く評価できるようにする場合は、簡単なカウンターコードを作成して、高く評価した数と高く評価した数を追跡する方法を確認できます。 -ダウンしますが、各ユーザーがコメントを1回だけランク付けするようにするにはどうすればよいですか。各コメント番号を1行としてデータベースを作成し、その行に、親指を上にランク付けしたすべてのユーザーと親指を下にランク付けしたすべてのユーザーの配列を作成しましたが、そうではなかったと感じました。一番いい方法。私の次の考えは、ユーザーごとにテーブルを作成し、そのユーザーがランク付けしたすべてのコメントを示す配列を作成することでした。この方法ではおそらくより高速に実行されます(たとえば、ユーザーの150のランキングとコメントからのチェック)

4

1 に答える 1

7

user_id、、comment_idおよびを使用して新しいテーブルを作成しますvote TINYINT(1)

1inの値は「voteいいね」、inの値は「0いいね」voteです。

にUNIQUEKEY制約を設定(comment_id, user_id)します。


上記に従うと、ユーザーが特定のコメントに投票したかどうかを簡単に確認できます。(高速実行のように)ユーザーが行ったすべてのコメントをすばやく確認できるようにする場合は、にを追加INDEXuser_idます。


REPLACE INTOユーザーが投票するとuser_comment_thumbs、次のように使用できます。

REPLACE INTO `user_comment_thumbs` (user_id,comment_id,vote)
VALUES (@user_id, @comment_id, @vote);

ユーザーがすでに投票した場合は、テーブルのエントリが更新されます。それ以外の場合は、新しい行が挿入されます。

于 2011-12-23T15:19:49.117 に答える