环境:
现在系统要求是让下面代理可以发布信息,然后他发布的信息就只有他的分代理可以看现表如下
Agent  表
id  name
1   广州代理点
2  深圳代理点AgentUser 表
ID  分代理名称
1   白云代理点        
2  天河代理点本来数据信息分布的数据库是这样的
message
id   Agent   User  title
1        1      1  标题
2        1      2  标题
3        1      1  标题
这样子也就是根据登录的user所在的代理点显示他的信息
这样可以
但是当比如AgentUser中的"天河代理点"发展他下面的子代理点的时候
上面的数据库好像就不行了
因为"天河代理点"是子代理点他接收的是他上一级的代理信息
”天河代理点“发布的布的信息又要他下面的接收这样的一层一层向下发布的信息表要怎么设计

解决方案 »

  1.   

    Agent
    ParentID ID  Name
    1         0   广州代理点
    2        0   深圳代理点
    3         1   白云代理点
    4         1  天河代理点
      

  2.   

    Agent  表
    id  name          parentId ,path
    1   广州代理点       0       0,1
    2  深圳代理点       0       0,2
    3  福田区           2       0,2,3
    4   天河区           1       0,1,4
    5   会展中心         3       0,2,3,5这是代理表.记录各代理的关系.AgentUserID  UserName ,AgentID
    1   天河用户1    4
    2  会展中心用户 5  
    3   深圳用户     2  关于权限:如果  深圳用户      发消息,通过AgentID找到它的agent的path = "0,2"
    然后它所有下级代码为 path like '0,2,%"
    然后所有用户agentid 为   path like '0,2,%"
    的可收到消息.,