请问一下牛人,如果有这样一个需求该怎么样设计一张 mysql 表; - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
blakefan
V2EX    问与答

请问一下牛人,如果有这样一个需求该怎么样设计一张 mysql 表;

  •  
  •   blakefan 2014-12-04 10:13:20 +08:00 2876 次点击
    这是一个创建于 3966 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问一下牛人,如果有这样一个需求该怎么样设计一张mysql表;
    1、A直接推荐B,可享受B所交会员费的8%;
    2、B推荐C,A享受C所交会员费的2%,B享受C的8%;
    3、C 推荐D,A享受D的1%,B享受D的2%,C享受D的8%;
    13 条回复    2014-12-06 18:26:22 +08:00
    zieglar
        1
    zieglar  
       2014-12-04 10:21:01 +08:00
    不是mysql表的问题,一张会员表,纪录会员及推荐人,另外一张表记录各级推荐的阶梯返利
    kisshere
        2
    kisshere  
       2014-12-04 10:24:14 +08:00 via Android
    搞传销,鉴定完毕,不过粗略想了想,这个跟MySQL没关系吧,业务逻辑就能实现啊,推广链接附带一个小尾巴,以php为例,把父ID,祖先ID(如果存在)用的数组serialize再可逆式加密(参考discuz加密)后生成这个小尾巴,php在GET后count一下array从而判断存在多少层父ID,然后该乘以8%还是2%自己添加就行了
    mkeith
        3
    mkeith  
       2014-12-04 10:35:01 +08:00
    用户ID,上家ID

    然后依次查找用户的上家,上家的上家,直至上家没有上家未知
    blakefan
        4
    blakefan  
    OP
       2014-12-04 10:39:08 +08:00
    传销不传销不知道,但是项目是公司接的,咱们只负责做啊
    xia0chun
        5
    xia0chun  
       2014-12-04 10:42:39 +08:00


    不知道这样能不能满足你的要求,计算的时候分别乘以该级别的折扣即可
    sampeng
        6
    sampeng  
       2014-12-04 10:54:46 +08:00
    见好友关系设计思路
    blakefan
        7
    blakefan  
    OP
       2014-12-04 10:56:07 +08:00
    小猿跪谢啊
    feiyuanqiu
        8
    feiyuanqiu  
       2014-12-04 13:08:31 +08:00
    @xia0chun 我觉得表里面存一个直接推荐人就行了
    要考虑到以后需求会变,如果要求支持D推荐E那不是还要改表结构?

    这个问题其实就是一个树状结构。我之前在公司做过仓库覆盖地区跟这个差不多。每条数据就只需要一个标识上级ID的字段就行了:

    1、给定一个用户ID,要获取所有有关系的推荐人,只需要根据当前需要获取的推荐人数量,left join 几次这个表就行

    2、如果要展示所有的推荐关系,可以把表内容全拿出来,PHP可以通过 [引用&] 操作一次遍历就把整个层级关系构建出来
    jy02201949
        9
    jy02201949  
       2014-12-04 13:15:21 +08:00
    ID 跟SUPERID, 再加个层级的字段1、2、3、4之类的,其实没有也没关系根据ID跟SUPERID我觉得就够了
    stiekel
        10
    stiekel  
       2014-12-04 13:53:41 +08:00
    这个应该还好吧,一张用户表,一张各级奖励的具体数字表就行了。
    用户表里,有个字段是标明推荐人的。
    当要统计A的奖励数时,先看哪些人的推荐人是A可以找到B,再看哪些人的推荐人是B可以找到C,最后再找哪些人的推荐人是C于是找到D。
    再将各级的数量,与奖励表进行对应。

    主要逻辑写到代码里,如果想逻辑写到MySQL,那就得用存过了。
    xia0chun
        11
    xia0chun  
       2014-12-04 13:58:07 +08:00
    @feiyuanqiu
    @stiekel
    嗯嗯,学习了,应该是我想简单了,我也是刚刚学习数据库 :)
    zakokun
        12
    zakokun  
       2014-12-04 14:16:49 +08:00
    一张用户表就可以了. level 记录这个人在推荐链上的层级.
    stiekel
        13
    stiekel  
       2014-12-06 18:26:22 +08:00
    @zakokun 这样做基本没办法扩展,而且,无法进行反向对应,像D就无法知道是谁推荐了自己,C也不知道自己推荐了哪些人。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5843 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 01:36 PVG 09:36 LAX 18:36 JFK 21:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86