關注功能的設計

想要設計一個關注的功能:

  1. 可以關注一個用戶。
  2. 可以看到某個用戶所關注的人,這些人裡面有哪些是我已經關注的人。
  3. 可以看到某個用戶「關注人數」、「被關注人數」。


關注與被關注表

創建user_followers以及user_followings兩張表,分別紀錄被關注列表以及關注列表。

table followers table followings

查詢某個用戶關注了哪些人時,從user_following查詢。
查詢某用戶被哪些人關注時,從user_followers查詢。

某個用戶所關注的人裡面,我的關注情況

關注功能的設計

上圖為Max所關注的人,而目前登入的用戶為「Don先生」,在上圖中可以看到(這裡省去pagination的設計):

  • Don先生為目前的使用者,所以不顯示「關注」按鈕。
  • Don尚未關注Hawkins,顯示「關注」按鈕。
  • 其他用戶Don都有關注,顯示「取消關注」按鈕

這裡的實現方式:

  • 先從user_followings中找出Max所關注的列表(where user_id = max的ID)得到following_id list
  • 再次查詢user_followings (where user_id = don的ID and where following_id in 上面的following_id list)

 

「關注人數」與「被關注人數」

關注人數與被關注人數

為了避免頻繁地去計算 user_following表以及user_followers表,這裡直接在user表中加入「followed_count」、「following_count」,當調用「關注」功能時,維護這兩個字段。

 

延伸思考:

  • 如果用戶有1億個,關注功能該怎麼重新設計?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *