需要设计一套PHP+Mysql邀请注册系统,用户可以无限分类,无限邀请
A可以邀请B、C、D、E.........
B/C/D/E也可以邀请无限的人请问这样的需求应该如何设计数据库?最终结果是能查询到每个人的邀请人,和每个人邀请了多少人,明确用户与用户之间的关系,需要能支持5000W的用户数据测试.....求各路高人不惜赐教!网上查了很多了,没有类似需求的,在线等ing

解决方案 »

  1.   

    id, parent_id,只需要两个字段就可以描述它们的关系,相当于一个treenode
    这是原则
    至于怎么查,可以在更新时统计,查询几乎0成本,但是更新成本很高
    用关系型数据库存储树结构,又要高效 = 不可能。
      

  2.   

    做什么样的索引?
    邀请别人注册成功后,邀请人会奖励一定的积分。
    例如:A邀请B,则奖励5积分,B邀请C,则B获得奖励5积分,同时A获得3积分,以此类推。
      

  3.   

    大神,我感觉你说的能解决我遇到的问题,
    普通索引的话,CREATE INDEX idx_test_id_parentid ON   test_tab (id, parent_id);
    建立完索引,如何根据索引查询呢? 例如:A邀请了B、C、D,其中B又邀请了B1、B2、B3,B1又邀请了BB1,现在如何通过BB1查询所有邀请人以及他邀请的。还有  邻接列表算法 向上递归  这种算法我没有用过,刚刚网上搜了一下,都说的不具体,能不能举例下?
    小弟以前仅仅限于做Web页面而已,对此确实不甚精通,还望不惜赐教,感激不尽!
      

  4.   


    用户表设计如下:
    id              主键,自增
    u_id         本用户邀请人(没有为空)
    parent_id  本用户邀请的人(没有为空)如果该用户邀请了多个人,都存在这一列吗?
    u_name   用户名
    u_pwd     密码
    u_status  状态
    .....             预留列
    大神帮忙指点一下,这样设计是否合理
      

  5.   

    u_id和parent_id的中文注释写反了...