2012-03-30 6 views
0

は、共有ビデオの評価のタイプです(例: "file.quality"または "file.story")。デザインの問題:私はこのベストを設計するので、私は評価のエンティティを持っているホイールに</p> <p>を再発明していないか疑問に思ってSymfony2の、doctrine2、mysqlのDB

私はビデオの詳細ページを開き、総視聴率を表示したい(すべてのユーザーの平均として....また、ユーザーとは関係ないが他の場所IMDB(インターネット映画データベース)のように...

Ratingエンティティにユーザーが新しい投票を追加する度に平均評価を保存して直接更新するCompleteRatingエンティティを追加することを考えています。 symfony2のリスナークラス

これは最高のデザイン方法ですか?

答えて

1

あなたがあなたの評価を更新する頻度、サーバーにストレスを与えたいかどうかなど、最良の方法が本当に頻繁に依存するかどうかにかかわらず、いくつかの方法があると信じています。

1)ビデオエンティティに2つの列、CompleteRating、LastRatingUpdateTimeを設定できます。 あなたのリポジトリにGetRating関数を持たせることができます。最後の更新時間をチェックするときはいつでも、最後の格付け更新と比較して1時間後に評価を更新して新しい評価を出力します。これはもちろん、ユーザーが投票数を見るのを待つ必要があることを意味しますが、サーバーの負荷が低くなることを意味します。

2)おそらく、あなたはcronjobを介して毎晩更新されるアウトソーシング評価(IMDBなど)のために1つ、次にユーザーが評価を追加したときに計算されるか個々の評価その場では、この種のデータベースではデータベースは非常に速いです。

私の投票は2であり、実際にはIMDB評価を掻き集めるためのコードがどの程度集中しているかによって異なります。

+0

3. IMDB評価(非ユーザー評価)の行を評価表に追加しますが、ユーザーIDとして0またはnullを追加する方法はありますか。私はdoctrine2で試してみましたが、それはユーザーが存在しないので、私にエラーを与えます...これは別の回避策ですか?同じ定格表に異なる評価があります: "rating_quality" 、 "rating_sound" ....など...また、私は将来、 "rating_user_credibilty" ....などのユーザーの評価を入れる予定です。 – Confidence

+1

/** @ORM \ Column(name = "user_id"、nullable = true)* /は、ユーザーの世話をして問題が存在しないことを示します。 – Cerad

関連する問題