作者:CleanTheString | 来源:互联网 | 2023-05-16 15:06
需求是这样的,人员关系是个书的结构,每个人都有上级,上级还有上级等等,这样的机构。
数据库我利用的是树结构设计
id Pid Name
1 0 a
2 0 b
3 1 c
4 1 d
5 1 e
6 3 f
7 6 g
这样来存储的。
现在需求是,下级的人发表的文章,他的上级,以技术结构中有关系的人都可以访问。
也就是id=1的人,可以看他下面所有节点中的人员的文章。
文章发表时,我设置了一个字段userid来保存人员信息。
我的想法是,当我浏览文章时,先判断文章时什么人写的,然后判断这个人是否在我可以访问的人员列表中,如果存在则读取,否则提示错误。
具体操作,我想把我能看的人建立成一个字符串例如 '2,3,4,5,6,7,8,9' 来保存。
这样判断人员是否是我可以访问的时候,只要 userid in '2,3,4,5,6,7,8' 就可以了。
第一个问题是,这样设计是否合理,
第二个问题,怎么样能把自己下面所有节点中的人组合成为字符串。 从下往上用递归.从上往下就没写过了。
大家帮忙看看。
6 个解决方案
有朋友建议利用
001
001001
001002
002
002001
002003
这种形式来保存人员等级关系,不知道是否合理呢?
现在需求改变,人员关系变成网状结构的了。这样的数据库要怎么设计??
并不是树结构的。头都大了
问题最终解决了。
将自己所有上级的ID,保存起来,判断的时候,判断是否为上级就行了。