0

ユーザーが登録ユーザーである場合にのみ投票を許可するとします。各ユーザーが記事ごとに 1 回だけ投票できるように制限する必要がありますか?
articleid、userid、bit (正/負を示すため)、および datetime 列の 4 つの列を持つテーブルを維持する必要があります。

これがまだ虐待されているのを見ますか?

純評価を取得するには、表に対して 2 回クエリを実行します。1 回目はすべての賛成票をカウントするため、もう 1 回はすべての反対票をカウントするためです。

あなたが見ている私のアプローチの欠陥/最適化を教えてください。

4

2 に答える 2

0

登録ユーザーに投票し続けることで、さまざまな IP アドレスを介して投票することで、乱用を回避できます。

純評価を取得するには、テーブルを 1 回クエリして、すべての投票を合計するか、さらに良いことに、最終投票の各項目の集計を行います。一度投票すると、アイテムの評価が増減します。

編集:事前に計算できる場合、複数のテーブルをクエリすることは悪い習慣であると主張しなければなりません。リレーショナル モデルの分割は、データベースの最適化の大きな部分を占めます。

于 2010-02-13T05:47:12.143 に答える
0

登録ユーザーに投票を制限することは、悪用の可能性を避けるための方法です。ただし、ユーザーが投票したら、投票を取り消すことができるかどうかを検討する必要がある場合があります。頻繁に起こることではないと思いますが、考えてみてください。

ところで、次のようにグループごとのクエリで 2 つの値を取得できるため、データベースに 2 回クエリを実行する必要はありません。

SELECT Vote, COUNT(Vote)
FROM tVotes
GROUP BY Vote, ArticleID
HAVING ArticleID = 1
于 2010-02-13T06:01:58.250 に答える