2012-04-12 57 views
2

結構,我想允許用戶跟隨其他用戶與Twitter,Instagram的等等。我想,這應包括表結構類似以下內容:的PHP/MySQL /社交網絡的最佳pracice表追隨者

用戶用戶ID,密碼,電子郵件,FNAME,lname的

關注與userid1(INT),followstatus(TINYINT),usererid2(INT)

當USER1決定跟隨用戶2創建新行。如果user1決定不再跟隨user2,則後續跟進狀態可以關閉。如果user2跟隨用戶1,將會有一個單獨的條目。

我可以告訴user1他正在查詢這個表。並通過計數查詢告訴用戶有多少人關注他們。然後以此關係爲條件,將user2s操作(followee)的信息打印到user1(follower)。

這是最佳實踐嗎?還是有更多的呢......是否有其他領域,表格需要?

注意:用戶有另一個人的表,不一定是用戶,但我認爲跟隨者的狀態應該在單獨的表中。

回答

4

看起來不錯。但值得注意的是:如果你的項目真的起飛了,你很快就會從一臺機器發展出來,而且必須分拆。這意味着將您的用戶和關係表分解爲更小的用戶。這是一個很大的話題,超出了範圍。

一旦你打破它們,某種類型的查詢變得困難或不可能。

例如,現在很容易查詢「誰跟我來」。

select * from followers where user2 = me; 

或「我跟誰?」

select * from followers where user1 = me; 

一旦你打破追隨者表,其中一個查詢將是不可能的(因爲數據可能跨越多個表/數據庫/服務器)。爲了解決這個問題,你可能需要創建兩個表格:

i_follow (user1 int, user2 int) 
follow_me (user1 int, user2 int) 

並在每個新的關係上插入相應的記錄。

這只是冰山一角。踏上這個旅程,你會發現很多有趣的問題來解決:)

+0

你的第二點對我來說很合理,我認爲它是一個好方向。謝謝。 – 2014-09-12 06:14:35

0

我認爲你是在正確的軌道上。包含用戶的表是必須的。第二張表是追隨者與被關注者之間的關係。這可以讓你確定誰跟隨誰,允許任何兩個用戶的雙向關係,並使查詢變得簡單。另外,重要的是,你不會存儲任何重要的信息兩次。使用單個刪除查詢刪除關係也很容易。