`

数据表TreeCode设计及使用技巧

 
阅读更多
一、涉及用户表,角色表
用户表: usertype=2 群众
         usertype=4 党员(后台添加或导入)
         usertype=8 注册党员
角色表: (userid, treeid, relation)
         relation=1 党组织党务工作者
         relation=2 党组织书记
relation=4 片区党务工作者
relation=8 片区书记
2. 前端js处理规定
usertype=16 表示用户为党员且某党组织党务工作者
usertype=32 表示用户为党员且某党组织书记
usertype=64 表示用户为党员且片区党务工作者
usertype=128 表示用户为党员且片区书记

二、TreeCode设计及使用技巧
1. 应用场景
   项目中,数据存在树型结构,且ID存在一定的生成规则
   如:根节点ID为01, 下级ID为0101,0102....(两位一个层级)

2. 使用技巧
原始实现与treecode实现的区别

原始实现
表结构存在:id, parentid
新增下级:id可能是使用guid
treecode实现
表结构只存在:id
新增下级:使用生成treecode的方法。保存id的唯一性。
-----------------------------------------------------
----新增----
ALTER PROC [dbo].[sp_DJAreas_insert]
@Id  varchar(50) output,
@ParentId varchar(50),
@Name  varchar(255),
@AreaType  int,
@PQType  int,
@Summary  varchar(500),
@LastUserId  varchar(32),
@Status  int,
@Flags  int,
--@IsDelete  bit,
@CreateUserId varchar(32)
AS

IF @PQType IS NULL
SELECT @PQType=0

EXEC sp_DJAreas_newId @id output,@ParentId


IF EXISTS(SELECT Id FROM tblDJAreas WHERE Name=LTRIM(RTRIM(@Name)) AND Id<>@Id AND IsDelete=0)
RETURN 10014;

INSERT INTO tblDJAreas(Id,Name,AreaType,PQType,Summary,LastModify,LastUserId,Status,Flags,IsDelete,CreateUserId,CreateDate)VALUES(@Id,@Name,@AreaType,@PQType,@Summary,GETDATE(),@LastUserId,@Status,@Flags,0,@CreateUserId,GETDATE())


-----------------------------------------------------

生成treecode的存储过程-----------------
ALTER PROC [dbo].[sp_DJAreas_newId]
@Id varchar(50) output,
@ParentID varchar(50)=NULL
AS
DECLARE @l INT
SELECT @ParentID = ISNULL(@ParentID,'')
SELECT @l=LEN(@ParentID)
SELECT TOP 1 @ID = @ParentID + t.ID FROM tblDJTreeCode t
LEFT JOIN (
SELECT SUBSTRING(ID,@l+1,2) AS ID FROM tblDJAreas WHERE ID LIKE ISNULL(@ParentID,'')+'__'
) o
ON t.ID=o.ID
WHERE o.ID IS NULL

理解:WHERE o.ID IS NULL 除去tblDJAreas表中已存在的数据,再取tblDJTreeCode中的第一条数据。并返回ID


数据表结构 tblDJTreeCode(id)
id 为0-9 a-z 共36个字符的两位排列组合,36*36 共有1295种情况
若为三位排列组合,则36*36*36种情况。
-------------------------------------------------
原始实现
表结构存在:id, parentid
查询:对同一张表,需要使用两次,S型连接。
按条件查询:不能灵活的查询本级,下级或所有下级等。

treecode实现
表结构只存在:id
查询:只操作一张表
按条件查询:能灵活的查询本级,下级或所有下级等。
如:where id like '01__' 查询01的下级。
where id like '01____' 查询01的下下级。
where id like '01%' 查询01的所有下级。
说明:_ 是指占位符
  
         
三、用户来源(三个入口)
1. 同步党统系统 userType=4
2. 前台用户注册(注册党员,群众) userType=2
3. 区域化组织管理--》用户清单--》新增(注册党员) userType=8
4. 党组织&党员--》管理党员--》新增(注册党员)userType=8


------------------------UI--------------
一、积累UI组件库
二、如何封装成UI组件
------------------------DB--------------
1、多状态值
   操作符: |, ^, &
分享到:
评论

相关推荐

    treecode.tar

    总结起来,“treecode.tar”提供的程序实现了Josh Barnes的树码算法,用于高效计算大量粒子的相互作用,其中涉及到数据加载、参数获取、引力计算以及并行处理等多个关键环节。这个压缩包中的源代码为我们揭示了这一...

    Nbody问题采用treecode算法在GPU上的并行实现

    6. **CUDA编程**:使用CUDA(Compute Unified Device Architecture)编程模型,编写GPU上的Treecode算法,包括kernel函数和数据传输。 7. **并行化策略**:比如,可以并行化粒子的分组,或者并行化树的遍历过程。 ...

    treecode-website

    "TreeCode 网站" 是一个以 SCSS 为主要技术构建的项目,SCSS(Sassy CSS)是 CSS 的一种预处理器,它允许我们使用变量、嵌套规则、混合、函数等特性来编写更优雅、更易于维护的 CSS 代码。在 "treecode-website-main...

    大数据-算法-星系的数值模拟PeterRobertWilli.pdf

    这个代码设计用于并行计算机,采用Treecode和SPH技术解决了气体、恒星和暗物质的动力学方程,并包含了一个跟踪气体转化为恒星的算法。为了使学生能自我学习如何使用这个复杂的代码,Willi博士编写了详尽的文档。 综...

    基于springboot结合mybatis和thymeleaf的宿舍管理系统宿舍管理系统.7z

    - **模型层**:实体类,对应数据库中的表结构,用于数据传输。 - **视图层**:Thymeleaf模板文件,根据后台传递的数据生成动态HTML页面。 5. **关键功能实现** - **用户管理**:包括用户注册、登录、权限控制等...

    VC++三维树的生成代码

    在计算机图形学领域,生成树是一种常见的数据结构和算法应用,尤其在三维场景构建中扮演着重要角色。本文将深入探讨如何使用VC++在Visual Studio环境下实现基于L系统的三维生成树算法。 首先,我们需要理解什么是L...

Global site tag (gtag.js) - Google Analytics