数据库一张表的数据多层返回

假如现在有一个表,有6个字段,彼此有如下联系:学校->学院->系->班级->学生->书籍,然后选择学校、学院、系、班级、学生(学号),对学生发放书籍。所以需要遍历一次表,将数据分成五层返回给前端。现在我有一些想法:

  • 法一:将表能分成多个映射表肯定是最方便的,但是现在条件不允许(ps: 我只是小小实习生,动不了表,😭)。
  • 法二:一次读取所有数据, 遍历一次,用Map<学校,Map<学院,Map<系, Map<班级, Set<学生> >进行统计,然后封装成为5层的对象。时间复杂度是O(n)
  • 法三:数据库查询的时候 order by 学校, 学院, 系, 班级, 学生, 书籍 , 然后遍历的时候根据和上一个数据的变动的位置来分层。这样我写着最方便,但是却要排序5次。虽然我知道数据库的多趟扫描算法会会优化排序,不是 O( (nlgn)**5 ) , 但是是否也过于耗时?

各位大佬可以谈一谈想法,有更好的方法也可以提出了。多谢赐教!!!

阅读 2.4k
2 个回答

目测方法二最方便,遍历一边数据,组装好然后返回,简单直接
除非用文档数据库,否则这种层级关系基本逃不掉手动拼装数据

方法一:即使拆分了表,最后也是要查出所有这样的行,没有区别
方法三:感觉和方法二没什么区别,或者说最后返回的可以不是一个Map结构?

并不一定非得用map,封装成对象可能对以后方便点。学校,系,等等。如果只是单向传递,就是一对多的关系,也还算好。维护起来也方便一些。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题