直销数据库架构如何设计?采用oracle数据库!

原来一直都是做olap的架构设计,现在接触oltp,做直销数据库架构设计,求各位大神指指招!需求分析:  1. 一个用户只能拥有2个下级,如果此用户还有推荐下级用户,则放到子下级下面  2. 每注册一个用户,就要为该用户的上6级用户分红,当然分红是有条件的,如果注册用户...显示全部
原来一直都是做olap的架构设计,现在接触oltp,做直销数据库架构设计,求各位大神指指招!需求分析:
  1. 一个用户只能拥有2个下级,如果此用户还有推荐下级用户,则放到子下级下面
  2. 每注册一个用户,就要为该用户的上6级用户分红,当然分红是有条件的,如果注册用户处于绩效少的一侧才分红,否则不分,离得最近的3个上级,每个上级分10%,离得远的3个上级,每个上级分5%。

如图:新注册用户J,上级用户是I,当前I只有J一个下级用户,就认为J是I的大区(绩效大),所以I不能分J的分红,然后再往上找上级用户G,注册用户J处于G的小区(绩效小的一侧),所以G要分得I的10%,也就是5块钱。然后依次类推,往上继续判断,总共6个上级用户分红才结束。

1.png


因为用户量比较大,现在需要设计各个表结构,还需要更快的算出每个用户的绩效(每注册一个用户就需要很快的算出提成),当然还要考虑表的IO,是否需要分表。原来做olap没有考虑这么多,求各位支支招
目前确定要建立一个关系表,存储每个用户之间的位置关系,比如在哪一层,位于左侧还是右侧,用户D相对于用户A的位置,大致结构如下
用户id     下级用户id    层次   区域
A             D             2         0
A             J              4         1
B             E              1         1
C             H               2        1
层次就表示当前D在A的第几层,区域就表示D对于A来说,在左边还是在右边,左边则为0。但还有很多不完善的地方,比如该怎么维护关系表,还有哪些设计需要注意的地方,关系表维护好之后,还有注册用户的分红怎么算。要是有直销数据库系统的案例参考就更好了。收起
参与12

查看其它 7 个回答royalwzy的回答

royalwzyroyalwzy技术经理海通证券股份有限公司
1.这个需求点最大难点:
        1.大区/小区会随时发生变化;
        2.当有新用户进来会发生级联的数据更新;
        3.树的结构可能会非常倾斜,树的层级会比较高;

2.优点:
        1.并发访问低;
        2.数据量应该不大;

3.可以考虑主要设计以下字段,一定不要保存下级用户,让用户ID作为主键;
        用户ID 上级用户 兄弟用户 分值 总分值
证券 · 2015-08-04
浏览1722

回答者

royalwzy
技术经理海通证券股份有限公司
擅长领域: 数据库服务器存储

royalwzy 最近回答过的问题

回答状态

  • 发布时间:2015-08-04
  • 关注会员:1 人
  • 回答浏览:1722
  • X社区推广