发表于: 2017-09-25 23:31:56
1 772
今日完成:
写前台方案设计
后台方案评审
搭开发环境
明日计划:
开始写职员模块、部门模块
问题:
后台部门列表查询
如果不是父节点,则将其加入到列表中。 由此可以将所有部门取出,并按部门级别分类排序好发给前端。
使用这种方法,一级两级的分类还可以,如果子类超过3个查询起来就很耗性能了。
网上找了另外一种方法:预排序遍历树算法
这种方法不使用递归查询
数据库结构:
采用左右值编码的保存该树的数据记录如下(设表名为tree):
c_id | name | left_node | right_node
1 |商品 | 1 | 18
2 | 食品 | 2 | 11
3 | 肉类 | 3 | 6
4 | 猪肉 | 4 | 5
5 | 菜类 | 7 | 10
6 | 白菜 | 8 | 9
7 | 电器 | 2 | 17
8 | 电视 | 13 | 14
9 | 电棒 | 15 | 16
第一次看见上面的数据记录,相信大部分人都不清楚左值(left_node)和右值(right_node)是根据什么规则计算出来的,而且,这种表设计似乎没有保存父节点的信息。下面把左右值和树结合起来,请看:
1商品18
+---------------------------------------+
2食品11 12电器17
+-----------------+ +---------------------+
3肉类6 7菜类10 13电视14 15电棒16
4猪肉5 8白菜9
请用手指指着上图中的数字,从1数到18,学习过数据结构的朋友肯定会发现什么吧?对,你手指移动的顺序就是对这棵树的进行先序遍历的顺序。接下来,让我讲述一下如何利用节点的左右值,得到该节点的父节点,子孙节点数量,及自己在树中的层数。
采用左右值编码的设计方案,在进行类别树的遍历时,由于只需进行2次查询,消除了递归,再加上查询条件都为数字比较,效率极高,类别树的记录条目越多,执行效率越高
还没看明白,明天接着研究下
进度:
还有3天后台要demo
评论