1

私はこの投稿を認識していますが、私の質問は少し異なり、複雑ではないと感じています。

MySQL 評価データベース構造

50 の異なるアイテムがあり、これらのアイテムの評価データベースを作成したい場合、id 列とスコア列を用意するだけでよいでしょうか?

そのため、新しい評価が入力されるたびに、アイテムの ID と評価によってデータベースに新しい行が作成されます。

次に、個々のアイテムの結果をクエリする場合は、クエリを実行"WHERE id =xyz "して評価を平均するか、そのアイテムに対して必要なことを行います。

時間が経つにつれて、私はIDと評価の巨大なデータベースになってしまうでしょう.それはちょっとずさんなように思えます.

または、私が見逃しているより良いアプローチや、私が考慮していない他のものはありますか?

4

1 に答える 1

1

rater同じ人物が複数の評価を送信できないように、列が必要になる場合があります。ログインを使用しない場合は、Cookie に保存されているランダムな文字列を使用できます。誰かが評価を送信しようとすると、Cookie をチェックします。Cookie が存在する場合は、古い評価を上書きするか、再評価を禁止しますが、それを処理したいと考えています。存在しない場合は、ランダムな文字列を生成して Cookie に保存します。

個々の評価を追跡する必要がない場合は、アイテムごとのテーブルの 2 つの列だけですべてを行うことができます。列は と にavg_ratingなりnum_ratingsます。新しい評価が送信されると、次の式で平均評価を更新できます。

UPDATE item_table
SET avg_rating = @new_rating/(num_ratings+1) + avg_rating*(num_ratings/(num_ratings+1)),
    num_ratings = num_ratings + 1
WHERE item_id = @item
于 2013-05-10T19:27:31.313 に答える