Advertisement

闭包表树形设计

阅读量:

闭包表设计树型

背景(文章篇幅较长,如有需要请耐心阅读,终于完成撰写关于三种树形结构设计方案的博文)
在软件开发过程中,树状结构的应用场景十分常见,本文将通过部门表作为案例,对多种设计方案进行比较分析,探讨其各自的优劣;
问题
需求背景:根据所属部门信息查询相关人员;
问题:在选定一个顶级部门的前提下,如何实现跨层级展示该部门及其下属子部门中的所有人员?数据库表结构应如何设计更为合理?
是否采用递归方式?虽然递归方法能够解决问题,但会对系统性能造成一定影响;Oracle数据库内置了递归函数,而Mysql则不支持该功能。目前大型企业通常具备充足的预算,因此更倾向于选用Oracle数据库。然而大多数企业仍然使用Mysql数据库,在这种情况下又该如何应对呢?

复制代码
    语法:
    select * from tableName
    start with  条件A   -- 开始递归的根节点,可多个条件
    connect  by prior  条件B  -- prior  决定查询的索引顺序
    where 条件 C
    
    
      
      
      
      
      
    

方案一:邻接表结构
说明:(典型父节点标识设计)

复制代码
    CREATE TA

全部评论 (0)

还没有任何评论哟~