用户推荐关系表如何设计比较合理?

维护一个有用户推荐关系的项目,用户间的关系就是
a推荐b, b推荐c, c---------N,无限级。
设计表的时候遇到了难题。
这个系统以前实现的方式是mysql单表,只有两列。

clipboard.png

uid: 用户id, 主键。
datas: 推荐关系。数据格式如 ,0,1,2,3,4,5,6,------n,每个数字代表一个用户的id。

clipboard.png

我在想,这种用户推荐的关系,查询起来很麻烦呀,比如:要查找某个人推荐的第几个人,很难查呀。。。。
想把这个表改成,每推荐一个人一条记录的方式。

clipboard.png
id:主键
parent_id:推荐人的id
uid:被推荐人的id
depp:被推荐人当前的深度

clipboard.png

**两种实现方式,哪个好些?
或者,有没有更好的实现方式?**

阅读 9.6k
5 个回答

肯定第二种撒,这样可以了

很明显,后面一种方式好啊,可以在parent_id和deep加个唯一索引,查找速度就更快了。只不过在新增数据的时候,需要额外一些开销在计算deep上。或者你也可以不要deep列,新增数据的时候直接插入,在查找时 WHERE parent_id = 用户ID ORDER BY ID ASC LIMIT 1,1,这就是用户第二个推荐的人了。结合使用场景看怎么取舍了。

这种场景应该用nosql啊,例如Neo4j 比较合适

我喜欢两个一起存 · 以后查询方便

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题