私はupvotes/downvoteを持つブログ/フォーラムシステムを持っており、各コメントはreddit/stackoverflowシステムのようにupvote/downvoteを持つこともできます。PHP/MYSQLユーザブログ/フォーラムの投票システム
すでにアップフォートしているユーザーがもう一度アップフォートできないようにするには、どの方法が最適ですか?
私は別々のupvoteテーブルを使って新しい行を作成する可能性を考えました。しかし、投稿に30のコメントがあれば、スクリプトは30のデータベースクエリを実行してしまい、サーバに多大な負荷をかけることになります。もう一つの可能性は、ユーザーのアップアップごとに行を作成し、それらを一緒に照会し、再び実行不可能なpost_idでチェックすることです。
これはupvote/downvoteシステムのための最良の方法で、stumbleupon/redditのようなサイトは何をしますか?彼がログインしている瞬間と同じように、彼は既に彼がすでにアップした投稿に赤い色を見せるかもしれません
私は、別々のデータベーステーブルを作成し、各投稿に行があり、各行には投票したユーザーの配列を格納する列があります。つまり、基本的にユーザ1,2,5と8がすべて投票した場合、それを[1,2,5,8]として保存することができます(jsonとして保存されるので、後で使用するために 'json_decode'を使用できます。)1データベースコール – GrumpyCrouton
"スクリプトは30のデータベースクエリを実行することになります」なぜ、ユーザーが特定のコメントをアップボードした場合、その1つのコメントをチェックして前に投票したかどうかを確認するだけで済みます。コメントテーブルのcommentIDに参加し、UserIDとそれが上/下の投票権を持っているかどうかを示す投票テーブルを作成して、commentID/UserIDコンボのクエリを実行します。その可能性があると思うなら、十分に拡張できるようにシステムを設計するか、または十分なハードウェアを使用する必要があります。 – ADyson
* "もう一つの可能性は、ユーザーのアップベクトルごとに行を作成し、 post_idはやはり実行不可能です。 "* ...なぜそれは実行不可能なのですか?単純な結合のような感じです質問ID(おそらく複合PRIMARY KEYとして)と投票記録(+1または-1を署名されたTINYINT(2)として) – CD001