一个DISTINCT解决一个重复问题

20190604
记录一个简单方法解决一个看似很复杂的问题

本人在项目中遇到一个问题,就是一个用户允许有多个角色,而角色和资源是多堆多关系,这就出现了一个情况就是,如果我选择角色A,B,C,而A对应的资源是{1,3,4,5}, B对应的是{2,3,4}, C对应的是{1,2,3,4},这样就会出现如果我一个用户有A,B,C三种角色,那么菜单就会出现下面这中情况,也就是,会出现{1,1,2,2,3,3,3,4,4,4,5}

Jietu20190604-003349@2x.jpg

原先的思路是对于所有资源取集合,在后端做一个set,但是由于角色和资源是多对多,本身就有个中间表,如果你取资源的集合,那么如何管理其角色和资源那张表?,比如上面的情况,我取集合,那么对我用户L,有角色A,B,C, 取集合是{1, 2, 3, 4, 5},那么这个资源对应的是哪个角色,不知道,没有这个角色,难道还要创建新的角色?这样如果我删掉A角色,那么就会变成{1,2,3,4},又要新建一个角色?

这样下去需要判断的复杂度就会越来越高。
没有必要,我最后发现在SQL的语句中插入DISTINCT这样就解决了,当你在取菜单的时候,肯定会执行SQL语句,那么对结果取DINSTINCT,那么出现的资源一定是没有重复的,而且,我们不必去关心是哪个角色决定哪个资源,即便是角色A删除了,也对结果没有影响,一个单词,解决了一个貌似复杂的问题,而且呢,避免其后续维护带来的问题。

下面是结果:


Jietu20190604-004749@2x.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,055评论 0 13
  • 数据结构与算法 1.算法的有穷性是指( )。答案:A A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是...
    织梦学生阅读 3,463评论 1 15
  • 1.埋点是做什么的 2.如何进行埋点 3.埋点方案的设计 近期常被问到这个问题,我担心我的答案会将一些天真烂漫的孩...
    lxg阅读 2,029评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,141评论 1 32
  • 选择题部分 1.()部门负责日常监督检查工作,安全巡视的同时进行消防检查,推动消防安全制度的贯彻落实。 A: 消防...
    skystarwuwei阅读 15,571评论 0 3