mysql - 新浪微博中的關(guān)注功能是如何設(shè)計(jì)表結(jié)構(gòu)的?
問題描述
問題解答
回答1:個(gè)人簡單猜測,如有雷同,純屬巧合!有錯(cuò)誤請指正!
user_relation - 用戶關(guān)系表user_id - 用戶IDfollower_id - 被關(guān)注者用戶IDrelation_type - 關(guān)系類型,1=關(guān)注 2=粉絲
業(yè)務(wù)邏輯處理
1 用戶A關(guān)注了用戶B
插入兩條記錄
insert user_relation(user_id,follower_id,relation_type) values(a_id,b_id,1);//增加一個(gè)關(guān)注的人insert user_relation(user_id,follower_id,relation_type) values(b_id,a_id,2);//增加一個(gè)粉絲
2 查用戶A關(guān)注的所有用戶
select * from user_relation where user_id=a_id and relation_type=1
3 查用戶A有多少粉絲
select * from user_relation where user_id=a_id and relation_type=2
4,5等等邏輯以此類推。。。。
設(shè)計(jì)理由
考慮到擴(kuò)展性,數(shù)據(jù)量大了必定分庫分表,一般按user_id取模等等算法拆分,所以沒辦法用follower_id查詢出所有關(guān)注我的人(粉絲)。
當(dāng)然如果不要擴(kuò)展性或數(shù)據(jù)很小,那兩個(gè)字段正著查所有我關(guān)注的人,反著查所有的關(guān)注我的人(粉絲)
相關(guān)文章:
1. Python處理Dict生成json2. (python)關(guān)于如何做到按win+R再輸入文件文件名就可以運(yùn)行?3. 想練支付寶對接和微信支付對接開發(fā)(Java),好像個(gè)人不可以,怎么弄個(gè)企業(yè)的4. mysql - Sql union 操作5. java - Mybatis 數(shù)據(jù)庫多表關(guān)聯(lián)分頁的問題6. 急急急!!!求大神解答網(wǎng)站評論問題,有大神幫幫小弟嗎7. javascript - 按鈕鏈接到另一個(gè)網(wǎng)址 怎么通過百度統(tǒng)計(jì)計(jì)算按鈕的點(diǎn)擊數(shù)量8. python - 如何使用websocket在網(wǎng)頁上動態(tài)示實(shí)時(shí)數(shù)據(jù)的折線圖?9. python - 請問這兩個(gè)地方是為什么呢?10. python2.7 - python 正則前瞻 后瞻 無法匹配到正確的內(nèi)容
