这样一个会员管理需求:
现在有会员a,b,c,d,e,f,g.....
会员a介绍了会员a1,a2...
会员a1介绍了会员a1-1,a1-2...
会员a1-1介绍了a1-1-1,a1-1-2...
会员a1-1-1介绍了a1-1-1-1,a1-1-1-2...
会员a1-1-1-1介绍了a1-1-1-1-1,a1-1-1-1-2...
...
假设:
会员a1         在商城购买一件商品100元,此时系统将这100元的30%返回给会员a(a是a1的介绍人)。
会员a1-1       在商城购买一件商品100元,此时系统将这100元的20%返回给会员a,30%给会员a1。
会员a1-1-1     在商城购买一件商品100元,此时系统将这100元的10%返回给会员a,30%给会员a1-1。
会员a1-1-1-1   在商城购买一件商品100元,此时系统将这100元的5% 返回给会员a,30%给会员a1-1-1。
会员a1-1-1-1-1 在商城购买一件商品100元,此时系统将这100元的30% 返回给会员a1-1-1-1,会员a此时没有返回项(会员a的所返回项在这个会员级别终止)。
继续往下延伸...就是说每个会员都可以拿到他自己级别往下4层会员的购物提成。
是不是这个模式觉得有点似曾相识?....
请教一下大家这样的数据库应该怎么设计呢?或者做过其他类似这样模式的商城数据库设计的也请谈谈思路。
谢谢了!
:-)

解决方案 »

  1.   

    表设计为
    会员ID,上级ID
    a       null
    a1      a
    a2      a
    a1-1    a1
    ..具体计算则通过程序实现。
      

  2.   


    关于会员的关系表就这么简单。当然你还需要加入其它有关会员的信息会员ID,上级ID,姓名,生日,
      

  3.   

    数据库设计可能是我想多了吧,以为这个很麻烦..
    请教一下acmain——chm类似的这种模式程序你清楚是怎么设计的吗?尤其是计算方面的。
    谢谢~
      

  4.   

    MYSQL要用SP来递归查询,没有直接的递归查询
      

  5.   

    还有一种免递归的设计方法,增加层级(最高为1级)和路径字段(路径使用会员ID加分号延伸)。
    假设表名为member_t
    会员ID  上级ID  层级 路径               购物数
    a        null   1级  a
    a1       a      2级  a;a1
    a1-1     a1     3级  a;a1;a1-1
    a1-1-1   a1-1   4级  a;a1;a1-1;a1-1-1
    ...
    查询语句(假设提成为10%):
    select sum(购物数)*0.1 
    from member_t
    where 层级 < 当前层级 + 4 and  路径 like '会员ID;'
      

  6.   

    纠正一下:
    还有一种免递归的设计方法,增加层级(最高为1级)和路径字段(路径使用会员ID加分号延伸)。
    假设表名为member_t
    会员ID  上级ID  层级 路径              购物数
    a        null   1级  a
    a1       a      2级  a;a1
    a1-1     a1     3级  a;a1;a1-1
    a1-1-1   a1-1   4级  a;a1;a1-1;a1-1-1
    ...
    查询语句(假设提成为10%):
    select sum(购物数)*0.1
    from member_t
    where 层级 < 当前层级 + 4 and  路径 like '当前路径' 
      

  7.   

    楼上forever_feng(foreverfeng)  的方法不错。因为你的会员的上级应该不会变化,所以不存在维护更新复杂的问题。 的确是个好办法。