需要做一个三级返利的项目,需求是能查看某人的一级、二级和三级用户并可以更改这个人的上级,数据结构是开始是这样设计的:
uid 1 2 3
用户id 所属上级 所属上上级 所属上上上级
1 0 0 0
2 1 0 0
3 2 1 0
4 3 2 1
5 4 3 2
6 3 2 1
用户1的上级为平台 ,上三级都是0, 用户6的上级是用户3,上上级是2,上上上级是1,这样的结构是方便查询了,但是修改默认的上级的话,如果这个人的下级有10万人,那这10万人的上上级也需要修改,那修改量就太大了。
如果改成:
uid 1
用户id 所属上级
1 0
2 1
3 2
4 3
5 4
6 3
那查询这个用户向下数第三级的所有用户,需要先查询用户的所有第二级用户,再查询所有第二级用户的所有下级,这样的查询量也是很大。
想咨询一下大家有什么折中的办法吗?
mysql 外键+递归