一个员工在多个部门下的表结构设计 ,分层分级【巨坑】!!

        很多人看到这个问题可能会觉得很简单 大部分人就比如按照我下面的2种表结构设计就可以了。

方案1:

        1.部门表, id, name, parent_id

        2.员工表, id, name,dept_ids(储存1,2,3类似的部门id 集合)

方案2:

        1.部门表, id, name, parent_id

        2.员工表, id, name

        3.员工部门表, id, emp_id(员工id), dept_id(部门id)

本以为这么轻轻松松搞定!关系储存的 妥妥的。这下好了有一个这样的组织树结构:

部门10

|_部门1001

        |_部门100101

        |_部门100102

                |_部门10010201

|_部门1002

        |_部门100201

        |_部门100202

|_部门1003

员工 “张三” 所属部门   部门100101,  部门10010201,  部门100201

此时有个场景 搞了某个 “内容“ 只有 部门100102 部门1002, 下的包含子部门人才有权限

光从明面上来看2个部门id 范围并没有产生交集,但是实际上 “张三”是拥有该 “内容”的权限

允许联表如何查询 拥有该"内容"权限的员工呢?假设数据量很大 用的分库分表在不考虑联表的情况下又如何实现?如果没有其他思路就看下面的注意点。欢迎大家把自己的更好想法提出来。大家一起讨论


注意点1
     :需要一张 部门员工平铺表来实现部门下的下级和该员工的关系储存。
注意点2
     :需要给部门ID 设定一个 增长规则比如一个员工在多个部门。 AA/AABB/AABBCC,  AA/EE,   
   这种情况每个部门下的部门数量和深度就有了很大的局限性。

注意点
     :需要给部门添加一个层级的字段, 比如 根部门为 0,  一级部门为 1 以此类推。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值