真实的深度要更大
以前的设计
dept表:组织机构表
dept_id dept_name parent_id(父id)
user表
user_id dept_id(用户对应的部门) username
利用 dept_id,parent_id进行关联,形成一棵树。但有个问题比如找a-1机构下的所有用户,无法用一个sql表示,不方便分页,条件检索等
现在的想法是加一个表,将一个节点所有的子节点列出. 大家有什么意见?
high_dept(高级机构) low_dept(低级机构) distance(相差的度)
a-1 a-1-1 1
a-1 a-1-1-1 2
a-1-1 a-1-1-1 1
2 个解决方案
#1
很麻烦的做法。
简单的只需要在原表里加一列就行了:
组织机构简洁字段设计:
(ogran_code是组织机构唯一代码,真正的系统里都会有这东西的)
id,name,ogran_code,parent_id
快速查询字段设计:
id,name,ogran_code,parent_id,code_link
(code_link是从根到该机构的整个code链条,例如: "root_code"+"first_code"+"child_code")
分隔符自定义即可
添加编辑机构时只关注该机构的父机构,在父机构的link上添加本机构的部分: "pareat_code_link"+"local_code"
任何查询都可以通过这个字段快速完成。
1,某机构所有子机构,查询所有包含某机构CODE的CODE_LINK即可。可以使用like,超级简单。
2,查询Level,拆分该字段即可。
总之,很方便记录的一个链路LINK,可以做到任意需要递归才可以完成的查询。
简单的只需要在原表里加一列就行了:
组织机构简洁字段设计:
(ogran_code是组织机构唯一代码,真正的系统里都会有这东西的)
id,name,ogran_code,parent_id
快速查询字段设计:
id,name,ogran_code,parent_id,code_link
(code_link是从根到该机构的整个code链条,例如: "root_code"+"first_code"+"child_code")
分隔符自定义即可
添加编辑机构时只关注该机构的父机构,在父机构的link上添加本机构的部分: "pareat_code_link"+"local_code"
任何查询都可以通过这个字段快速完成。
1,某机构所有子机构,查询所有包含某机构CODE的CODE_LINK即可。可以使用like,超级简单。
2,查询Level,拆分该字段即可。
总之,很方便记录的一个链路LINK,可以做到任意需要递归才可以完成的查询。
#2
加link字段,学习了!!
#1
很麻烦的做法。
简单的只需要在原表里加一列就行了:
组织机构简洁字段设计:
(ogran_code是组织机构唯一代码,真正的系统里都会有这东西的)
id,name,ogran_code,parent_id
快速查询字段设计:
id,name,ogran_code,parent_id,code_link
(code_link是从根到该机构的整个code链条,例如: "root_code"+"first_code"+"child_code")
分隔符自定义即可
添加编辑机构时只关注该机构的父机构,在父机构的link上添加本机构的部分: "pareat_code_link"+"local_code"
任何查询都可以通过这个字段快速完成。
1,某机构所有子机构,查询所有包含某机构CODE的CODE_LINK即可。可以使用like,超级简单。
2,查询Level,拆分该字段即可。
总之,很方便记录的一个链路LINK,可以做到任意需要递归才可以完成的查询。
简单的只需要在原表里加一列就行了:
组织机构简洁字段设计:
(ogran_code是组织机构唯一代码,真正的系统里都会有这东西的)
id,name,ogran_code,parent_id
快速查询字段设计:
id,name,ogran_code,parent_id,code_link
(code_link是从根到该机构的整个code链条,例如: "root_code"+"first_code"+"child_code")
分隔符自定义即可
添加编辑机构时只关注该机构的父机构,在父机构的link上添加本机构的部分: "pareat_code_link"+"local_code"
任何查询都可以通过这个字段快速完成。
1,某机构所有子机构,查询所有包含某机构CODE的CODE_LINK即可。可以使用like,超级简单。
2,查询Level,拆分该字段即可。
总之,很方便记录的一个链路LINK,可以做到任意需要递归才可以完成的查询。
#2
加link字段,学习了!!