逻辑问题
https://class.imooc.com/course/qadetail/346946
我觉得课程的编码方式对当前情形没什么问题,即使有多个模块组也不成问题。
而且必须按node_code排序,就算按照父子节点进行处理,判断父节点id值,也必须按node_code排序吧?唯一小缺点是node_code前三位100,后四位000x, 模块组如果超过10个,位数会溢出,或者100是第1组,101是第2组,也不怎么好看
关键问题是课程设计太理想化了,如果一级模块组没有子项,那么一级节点的Map的children就是空的,如果有3级子项,有的2级又没有3级,有的2级有3级,这些判断才比较麻烦,即使按父子关系处理也不好处理,示例如下:
这个parent_id也只适用于2层深度,按parent_id去判断,还不如您课程按node_type判断更快,而且前提是要按node_code排序的,循环判断为空,则加List加children,不空再append给children,如上图所示。
node_type是树的深度,parent_id其实是根据node_code的第1位来写的,
我想请教的是,如果存在3级节点,按目前表的结构根本撑不住,有没有什么好的方案?
正在回答
同学你好,同学的理解是正确的。
1.课程中的数据库设计本身是有一点问题的,实际开发的时候并不会这么处理。这里只是为了演示一种特殊情况的处理方式,即在数据库设计时没有按照层级进行设计,而是后期通过主键进行处理。实际上,多数情况下数据库会在设计时考虑到这点,会在字段上加上例如父节点id这样的字段来进行处理。
2.上一条中父节点的案例在学习MySql的时候处理过,只不过当时只关注sql语句而不是业务逻辑,例如工资值和工资等级。
如果这里也是按照父子节点进行处理,就不需要使用这种方式了,可以通过表关联查询,然后在代码中判断父节点id值,然后生成集合就可以了。当生成集合后,前端根据集合中内容,就可以展示任何模块及其子节点了。
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 2024 人
- 提交作业 1318 份
- 解答问题 1228 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星