分销系统的用户关系数据库设计~
程序员文章站
2022-04-12 23:34:31
来到这家公司,迭代了个遗留的快被抛弃的社交软件,然后主要任务就是设计并从零完成一个服务于互联网用户以及关联代理商家的购物软件.因为公司需要在购物及代理商拿货中集成分销系统,最高可以返利3级,于是我设计了如下的用户模块; 选用的关系型数据库是MySQL,其实像这种父子关系可以使用树形结构的数据库比如Elasticsearch等;MySQL不适合记录树形结构比如JSON结构这种,但是可以冗余记录用户之间的父子关系;(1)用户表的设计,就是最基础的一些属性:id......
来到这家公司,迭代了个遗留的快被抛弃的社交软件,然后主要任务就是设计并从零完成一个服务于互联网用户以及关联代理商家的购物软件.因为公司需要在购物及代理商拿货中集成分销系统,最高可以返利3级,于是我设计了如下的用户模块;
选用的关系型数据库是MySQL,其实像这种父子关系可以使用树形结构的数据库比如Elasticsearch等;MySQL不适合记录树形结构比如JSON结构这种,但是可以冗余记录用户之间的父子关系;
(1)用户表的设计,就是最基础的一些属性:
id | parent_id | name |
主键 | 父级主键 | 名称 |
用户父子关系表可以这样设计:
id | user_id | parent_id | level |
主键 | 用户主键 | 用户父级主键 | 父子等级 |
(2)比如新增几个用户:
1 | 小明爷爷 | |
2 | 1 | 小明父亲 |
3 | 2 | 小明 |
则新添加的数据到数据库关联表中如下:
101 | 2 | 1 | 1 |
102 | 3 | 2 | 1 |
103 | 3 | 1 | 2 |
插入的方式就是,当插入一个子用户时,通过父级id查询出关联表中所有的关联数据,然后将该子用户的父级,以及查询出来的关联数据,依次关联该子用户并将level+1后,依次插入到关联关系表中;
有了关联关系表,后续如果需要取出该用户多级的父用户,则不需要递归查询即可得到结果;
本文地址:https://blog.csdn.net/myth_g/article/details/108996666