[好き| PHP/SQLを利用した最も魅力的で効率的な方法です。Like/Dislike機能のPHP/SQLロジック
私は現在、2つのテーブルを持っている:users
& content
- はどのようにして、ユーザの好き嫌いを保存する必要がありますか?
- 特定のコンテンツアイテムの好き嫌いの数をどのように保存する必要がありますか?
私は可能な限り最良のロジックを探していますので、非効率なクエリでサイトを過負荷にしていません。
[好き| PHP/SQLを利用した最も魅力的で効率的な方法です。Like/Dislike機能のPHP/SQLロジック
私は現在、2つのテーブルを持っている:users
& content
私は可能な限り最良のロジックを探していますので、非効率なクエリでサイトを過負荷にしていません。
サンプル表
posts
----
id
content
user
users
----
id
username
user_likes
----
id
user
post_id
あなたは新しいテーブルuser_likes
を作成すると、おそらくユーザーを維持するために外部キーによって一緒にリンクされたテーブルlikes_details
「好き」と(日付、IP、または何か他のものなど)、このものについての情報、デシベルnormalization
に見ることができます。
データベース構造を正規化しておく必要があります。それはあなたを意味します
したがって、効率的な方法は2つのテーブルを作成することです。 field "user_id"と第2の "likes_dislikes"のフィールド "user_id"、 "likes"と "dislikes"の最初の "user"
は、データベースの正規化についての詳細を学ぶためにこのwikiエントリを見てみましょう: http://en.wikipedia.org/wiki/Database_normalization
をより具体的にしてください。通常、回答を格納するために単一のテーブルを使用するのが最適ですが、状況によって異なります。 –
各オプションには長所と短所があります(ただし、好き嫌いテーブルは1つのテーブルに過ぎません)。それをテーブルに保持すると、COUNT節が不要になり、選択がはるかに迅速になります。しかし、一度に何かを好きにしようとする人が10人いると、アップデートによってロックの問題が発生します。別のテーブルを使用している場合、COUNTクエリは列を読み込むよりも少し遅くなりますが、新しいエントリを追加するときには* as * badではありません(ここではいくつか前提をしています)。そして、あなたは常にハイブリッド版をやることができます。 – Corbin
これは実際には曖昧です。これはもっと大きなプログラム/プロジェクトに入っていますか、単に好き嫌いを集めるつもりですか? – Robert