在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ 用戶(hù)推薦關(guān)系表如何設(shè)計(jì)比較合理?

用戶(hù)推薦關(guān)系表如何設(shè)計(jì)比較合理?

維護(hù)一個(gè)有用戶(hù)推薦關(guān)系的項(xiàng)目,用戶(hù)間的關(guān)系就是
a推薦b, b推薦c, c---------N,無(wú)限級(jí)。
設(shè)計(jì)表的時(shí)候遇到了難題。
這個(gè)系統(tǒng)以前實(shí)現(xiàn)的方式是mysql單表,只有兩列。

clipboard.png

uid: 用戶(hù)id, 主鍵。
datas: 推薦關(guān)系。數(shù)據(jù)格式如 ,0,1,2,3,4,5,6,------n,每個(gè)數(shù)字代表一個(gè)用戶(hù)的id。

clipboard.png

我在想,這種用戶(hù)推薦的關(guān)系,查詢(xún)起來(lái)很麻煩呀,比如:要查找某個(gè)人推薦的第幾個(gè)人,很難查呀。。。。
想把這個(gè)表改成,每推薦一個(gè)人一條記錄的方式。

clipboard.png
id:主鍵
parent_id:推薦人的id
uid:被推薦人的id
depp:被推薦人當(dāng)前的深度

clipboard.png

**兩種實(shí)現(xiàn)方式,哪個(gè)好些?
或者,有沒(méi)有更好的實(shí)現(xiàn)方式?**

回答
編輯回答
尕筱澄

很明顯,后面一種方式好啊,可以在parent_id和deep加個(gè)唯一索引,查找速度就更快了。只不過(guò)在新增數(shù)據(jù)的時(shí)候,需要額外一些開(kāi)銷(xiāo)在計(jì)算deep上?;蛘吣阋部梢圆灰猟eep列,新增數(shù)據(jù)的時(shí)候直接插入,在查找時(shí) WHERE parent_id = 用戶(hù)ID ORDER BY ID ASC LIMIT 1,1,這就是用戶(hù)第二個(gè)推薦的人了。結(jié)合使用場(chǎng)景看怎么取舍了。

2018年8月21日 09:56
編輯回答
胭脂淚

我喜歡兩個(gè)一起存 · 以后查詢(xún)方便

2017年2月7日 13:51
編輯回答
命多硬

肯定第二種撒,這樣可以了

2017年3月24日 17:28
編輯回答
誮惜顏

這種場(chǎng)景應(yīng)該用nosql啊,例如Neo4j 比較合適

2017年10月15日 05:56