需要设计一套PHP+Mysql邀请注册系统,用户可以无限分类,无限邀请
A可以邀请B、C、D、E.........
B/C/D/E也可以邀请无限的人请问这样的需求应该如何设计数据库?最终结果是能查询到每个人的邀请人,和每个人邀请了多少人,明确用户与用户之间的关系,需要能支持5000W的用户数据测试.....求各路高人不惜赐教!网上查了很多了,没有类似需求的,在线等ing
A可以邀请B、C、D、E.........
B/C/D/E也可以邀请无限的人请问这样的需求应该如何设计数据库?最终结果是能查询到每个人的邀请人,和每个人邀请了多少人,明确用户与用户之间的关系,需要能支持5000W的用户数据测试.....求各路高人不惜赐教!网上查了很多了,没有类似需求的,在线等ing
这是原则
至于怎么查,可以在更新时统计,查询几乎0成本,但是更新成本很高
用关系型数据库存储树结构,又要高效 = 不可能。
邀请别人注册成功后,邀请人会奖励一定的积分。
例如:A邀请B,则奖励5积分,B邀请C,则B获得奖励5积分,同时A获得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页面而已,对此确实不甚精通,还望不惜赐教,感激不尽!
用户表设计如下:
id 主键,自增
u_id 本用户邀请人(没有为空)
parent_id 本用户邀请的人(没有为空)如果该用户邀请了多个人,都存在这一列吗?
u_name 用户名
u_pwd 密码
u_status 状态
..... 预留列
大神帮忙指点一下,这样设计是否合理