关于一个设计思路 本帖最后由 top8843 于 2013-07-17 20:17:39 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实你这个节目的,可以这样定义。父为三位从100-999.子的每一个子众1-99如100的子为10001-10099这样就很容易了。关键是可以用到Like 1、你这个同样是要动态计算IsParent吧,输出的数据,IsParent是必须的,程序中使用的是zTree插件,并且采用分批异步加载的方式,每个节点都需要IsParent来判断当前节点是否能够展开。2、如果按位数来区分父子关系,那么层数多了怎么办,估计字段类型只能设计成字符型了,性能并不高。 方法一:知道树型目录最多有多少层,直接建立父子表关系,最简单,最容易理解。方法二:当你不知道树型目录最多有多少层?显然用IsParent来标识是行不通的。那什么处理?把IsParent改为ParentID或ParentKey ,是父节点的关键字,能够唯一识别的 我觉得我们说的是两码事,你说的什么ParentID,我都是有的如果是一次性加载,和分批加载,需要的数据是不一样的,他们分别是:分批 [{id:1001,name:"南津路街道",isParent:true},{id:1002,name:"凯旋路街道",isParent:true}……]一次性 [{id:110,name:"查看服务器信息",pId:10},{id:111,name:"查看客户端信息",pId:10}……]其中pId就是ParentID我现在关注的是,分批加载的isParent是保存在数据表中好,还是每次查询动态计算好。 你不用关心isParent是否行得通,这是zTree要求的数据格式,推荐一下著名的树形插件zTreehttp://www.ztree.me下面地址,唯一的精华及置顶帖子,就是我的http://tieba.baidu.com/f?kw=zTree 分批 [{id:1001,name:"南津路街道",isParent:true},{id:1002,name:"凯旋路街道",isParent:true}……] 我解释一下分批加载,isParent表示该节点有子节点,前面会有 +好 显示,否则就显示 -号,用户点击这个节点(+号),就会通过AJAX去请求ParentID为当前节点id的数据。比如用户点了 南津路街道,这是个有子节点的节点(isParent:true),就会加载父节点为1001的数据 是否是父节点,可以通过计算它是否有子节点来确定的。如果你标识为true ,子节点意外被删除了,而父节点又没有被改成false, 这样的父节点就变成了子节点 我在一楼的第二种方法就是动态计算的SELECT ID,Title,(select count(*) FROM tbDept b WHERE b.ParentID = a.id) FROM tbDept a第一种方案就是在表中设字段做标识的SELECT ID,Title,IsParent FROM tbDept其实,我发本帖的意思,是想征求一下那种方式更好,做标识?还是计算? IsParent其实是冗余字段了查询时,方便高效了维护时,麻烦了一点,需要多维护一个属性 SQL 根据规律查找数据 请问用Sql 语法? SQL SERVER 2000 求函數 查询数据库表中的字段是否存在。。 天啊,我的分用完了,还是请帮忙看看存储过程里循环调用存储过程的问题,谢谢!!! 数据去重复的问题 sql server2000表中出现重复主键!! 数据库问题,一个sql数据库原来只有一张表,现在想分为多表。主要是数据库量太大。怎么效率才会高呢? 修改状态的复杂触发器(操作1张表中的3种状态) 如何取出一定字段的重复记录。 union效率问题 硬盘挂了,数据恢复中,SQLServer2005作业里的代码在哪里?
2、如果按位数来区分父子关系,那么层数多了怎么办,估计字段类型只能设计成字符型了,性能并不高。
知道树型目录最多有多少层,直接建立父子表关系,最简单,最容易理解。方法二:
当你不知道树型目录最多有多少层?显然用IsParent来标识是行不通的。那什么处理?把IsParent改为ParentID或ParentKey ,是父节点的关键字,能够唯一识别的
如果是一次性加载,和分批加载,需要的数据是不一样的,他们分别是:分批 [{id:1001,name:"南津路街道",isParent:true},{id:1002,name:"凯旋路街道",isParent:true}……]一次性 [{id:110,name:"查看服务器信息",pId:10},{id:111,name:"查看客户端信息",pId:10}……]
其中pId就是ParentID我现在关注的是,分批加载的isParent是保存在数据表中好,还是每次查询动态计算好。
http://www.ztree.me
下面地址,唯一的精华及置顶帖子,就是我的
http://tieba.baidu.com/f?kw=zTree
我解释一下分批加载,isParent表示该节点有子节点,前面会有 +好 显示,否则就显示 -号,用户点击这个节点(+号),就会通过AJAX去请求ParentID为当前节点id的数据。
比如用户点了 南津路街道,这是个有子节点的节点(isParent:true),就会加载父节点为1001的数据
如果你标识为true ,子节点意外被删除了,而父节点又没有被改成false, 这样的父节点就变成了子节点
其实,我发本帖的意思,是想征求一下那种方式更好,做标识?还是计算?
查询时,方便高效了
维护时,麻烦了一点,需要多维护一个属性