2012-04-23 8 views
5

私はいくつかのプロジェクトでウォーキングしています。フォロワーとTwitterシステムのようなシステムを考えています。私はデータベースにメンバーテーブルを持っています。フォロワーシステムはどうやってできますか?ハットはロジックですか?テーブルには名前がついていて、3行あります。これらの行はid、user_id、follower_idです。私のために十分ですか?私はこのシステムをどうすればできるのか分からないのですか?手伝って頂けますか?フォローアンドフォロワーシステムの論理は何ですか?

+1

これは完全に受け入れられる設計のようです。 'user_id'でそのユーザーを検索し、 'follower_id'でそのユーザーを検索してユーザーのフォローを見つけることができます。関係が最後に更新されたことを知るために、タイムスタンプなどの追加のメタデータを追加することもできます。ユースケースに応じて、関係がいつ開始されたか終了したかを追跡することもできます。 – Ina

+0

_ "名前がついているテーブルを作成しました.3行あります" _ - あなたは "3 **列**"を意味しますか? –

答えて

5

をはい、そのデザインはシンプル、次のシステムには十分ですTwitterのようなものです。もちろん、余分なデータ(@Inaで提案されているタイムスタンプなど)が役に立つ場合があり、その中にidが厳密に必要なわけではありません。

userID INT PRIMARY, 
followID INT PRIMARY, 
creationTime DATETIME 
0

Peopleという1つのエンティティがあると仮定すると、多対多の関係をPeopleからPeopleに作成する必要があります。関連付けテーブルには、PeopleIDFollowingの2つの列があります。

ユーザーのフォロワーを検索するには、そのユーザーのIDをFollowing列で検索します。 ユーザーがフォローしているユーザーを一覧表示するには、PeopleID列で検索してください。

5

「フォロー」(または「に続く」)は、テーブルが反映する2つのユーザーエンティティ間の関係です。

これは、別のエントリと同じユーザー間で複数のフォローおよびアンフォローを処理する予定がない場合は、idも必要ないことを意味します。

(ユーザー1のリストを取得することは速い次の)、FOREIGN KEYuser_idfollower_id参照userを作成し、それらの両方の複合主キーにし、follower_idにインデックスを作成します。

CREATE TABLE 
     follows 
     (
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 
     PRIMARY KEY 
       (user_id, follower_id) 
     KEY follower_id (follower_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 

あなたは他の追加も属性も同様です。

追跡したい場合は、次のと同じユーザー間のunfollowsが、あなたはエンティティにこれを推進する必要がある、代理の主キーを追加:

CREATE TABLE 
     follows 
     (
     id INT NOT NULL PRIMARY KEY, 
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 

     -- These are additional attributes 

     follows_from DATETIME NOT NULL, 
     follows_till DATETIME, 

     -- 

     KEY follower_id (follower_id), 
     KEY user_id (user_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 
0

は、すでにユーザーがログインするサイトは、次の2つの列を使用してデータベースにテーブルを追加したいと思う持っていると仮定すると、いずれかの「friend1」と ':

私のようなものをお勧めしますfriend2 '(友好関係が双方向関係であると仮定)または' leader 'と' follower '(購読の単方向関係の場合)。次に、friend1とfriend2を入力(POSTやGET変数など)し、そのペアをデータベースに入力する短いPHPスクリプトが必要になります。最後に、PHPスクリプトへのAJAX呼び出しを行うボタンをWebサイトに追加するか、そのPHPスクリプトをターゲットとするHTMLフォームの一部にボタンを追加します。

関連する問題