大家如何设计三级分销的数据表?

欲望故事 发布于 2017/05/07 18:26
阅读 3K+
收藏 4

如题
一开始我是这样设计的:
1.

table user:

uid
pid

用递归来查询,到后面用户多了卡成狗,换了第二种

2.

table user:

uid
​​​​​​

table user_parent:
`user_id` 
  `pid_1`
  `pid_2` 
  `pid_3` 

第二种查询没什么压力,不过缺陷也有,就是客户要加多一级的,就得遍历一遍user 表,在user_parent加多一个字段,大家还有更好的设计吗?

加载中
1
呼呼南风
呼呼南风

突然感觉自己好土,不过这个感觉好像可行:http://www.cnblogs.com/liulaocai2/p/4363364.html

呼呼南风
呼呼南风
上面那个是查询远远大于更新,如果是读写分离的,那就是比较可行。
欲望故事
欲望故事
怎么土法
1
耒耒耒耒耒
耒耒耒耒耒

额,我读懂什么叫三级分销。我想应该是这样做,user_id,parent_id,grand_id。哈哈,不知道这样如何,这样的话,都能很好的用到索引,效率应该能够保证。

0
单行道
单行道
不知道你的3级分销递归指的是什么?
单行道
单行道
在id上做文章,例如父ID为1,它的子ID为1/1,孙子为ID为1/1/1,其他以此类推,如果取1的子孙 like '1/%'
欲望故事
欲望故事
你要统计某用户的所有下级,或者他的上级
0
我不说话
我不说话

我们第二种,而且是放在user表里。现在搞转销系统的多了

欲望故事
欲望故事
幸亏后面微信打击三级分销哦,不然我们先前要做到八级去
欲望故事
欲望故事
你们也是这样做啊
0
我的名子
我的名子

应该是三级树结构吧,可以使用路径或左右值或权值。

0
混乱羽翼
混乱羽翼

1、用一张表 UID和PID记录

2、 加一张BELONG表, 也就是保存所有的UID和PID的关系

这样子可以不用1表的递归查询,查询表2速度飕飕的

0
skhuhu
skhuhu

table user_parent:
`user_id`  pid_x   这样不可以吗···· 数据显示就方便了   
 

skhuhu
skhuhu
回复 @撒哈拉的小猫 : 不是啊 ··· 比如有3个级别 ··那么你就会有3条数据 ··user_id , pid_1 ; user_id, pid_2;
欲望故事
欲望故事
这不是我写的第二种吗
0
ericSM
ericSM

建议用 k,v结构,特征值,特征向量,彻底扁平化。数据量大,有量大 的大数据处理方法;如果不扁平化,充系统级看,每次各种拆分计算耗时,耗cpu更大。

0
士别三日
士别三日

改用mongodb或postgresql,直接json格式存储,多少级都成。json只存id的层级关系,有相关信息就用关系表存储。

0
哼_哼
哼_哼

放一个“tree”字段,里面放上他所有的爸爸,用逗号隔开。

user_id

parent_id

tree

返回顶部
顶部