2012-04-23 90 views
5

我對一些項目感興趣,並且正在考慮追隨者和跟隨系統像twitter.I有成員表在數據庫。我怎麼能做追隨者系統。什麼是邏輯?我工作關於這樣的事情:我創建了新的表名稱在下面,我有3行。這些行是id,user_id,follower_id。對我來說足夠了嗎?我不知道如何做這個系統?你可以幫我嗎?追隨者和追隨者系統的邏輯是什麼?

+1

這似乎是一個完全可以接受的設計。您可以通過在'user_id'中搜索該用戶並通過在'follower_id'中搜索該用戶來查找用戶關注的用戶,從而找到用戶的關注者。您可能希望包含一些額外的元數據,例如時間戳,以便知道關係上次更新的時間。您也可能希望跟蹤關係何時開始或結束,具體取決於您的用例。 – Ina 2012-04-23 19:18:38

+0

_「我創建了新的表,名稱是下面,我有3行」_ - 你的意思是「3 **列**」? – 2012-04-23 21:01:52

回答

5

是,設計是足夠簡單的下列系統如Twitter的。當然,一些額外的數據(例如@Ina建議的時間戳)可能會很有用,並且您並不需要其中的id

我建議是這樣的:

userID INT PRIMARY, 
followID INT PRIMARY, 
creationTime DATETIME 
0

假設您只有一個實體People,您需要創建一個從PeoplePeople的多對多關係。在您的關聯表中,您將有兩列,分別爲PeopleIDFollowing

要找到用戶的關注者,請在Following列中搜索該用戶的ID。 要列出用戶關注的是誰,請在PeopleID列中進行搜索。

5

「跟隨」(或「隨後是」)是您的表反映的兩個用戶實體之間的關係。

這意味着,除非您計劃將多個跟隨和取消跟進作爲單獨的條目處理相同的用戶,否則您甚至不需要id

充分利用user_idfollower_id參考userFOREIGN KEY,讓他們倆複合主鍵和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

假設你已經有了,用戶登錄一個網站,你會想要一個表添加到您的數據庫中有兩列,無論是「朋友1」和「朋友2「(假設友誼是雙向關係)或」領導者「和」追隨者「(針對訂閱的單向關係)。然後,您需要一個簡短的PHP腳本,它將friend1和friend2作爲輸入(例如,作爲POST或GET變量),並將該對輸入到數據庫中。最後,在你的網站上添加一個按鈕,或者對該PHP腳本進行AJAX調用,或者是目標是該PHP腳本的HTML表單的一部分。