为什么我的表里如一打一字ID只对应2棵刚比树

由一棵已知树来设计对应的数据表格结构
最近,看了mootools ( )的一个开源tree实现 && mif.tree ( ). 这棵树结构很好,因此决定使用。但是由于他没有基于db的实现,只得根据他的数据结构自己设计DB表格。
一、问题:
现在,树mif.tree,采用如下的JSON结构布局:
&&&&&&&& {
&&&&&&&&&&&&&&&&&& "property": {
&&&&&&&&&&&&&&&&&&&&&&&&&&& "id": 1,
&&&&&&&&&&&&&&&&&&&&&&&&&&& "name": "a"
&&&&&&&&&&&&&&&&&& },
&&&&&&&&&&&&&&&&&& "children":[
&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "property": {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "id": 2,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "name": "b"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& },
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "children":[
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "property": {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "id": 4,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "name": "d"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& },
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "property": {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "id": 5,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "name": "e"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& },
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "property": {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "id": 6,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "name": "f"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ]
&&&&&&&&&&&&&&&&&&&&&&&&&&& },
&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "property": {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "id": 3,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "name": "c"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& },
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "children":[
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "property": {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "id": 7,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "name": "g"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& },
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ]
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&& ]
&&&&&&&& },
现在,请设计一个数据表格,来通过DB保存这棵树。
表格结构要求尽量的设计为遵循&以查询优先、增删改为次&的原则。
有没有比较好的思路?要求循环少,逻辑好的算法。
二、解决方案讨论:
1、初始方案:
由上面的JSON结构,可想到如下的结构:
TableName:Tree
但是。如果采用这个结构,那么在查询表格的数据时,必须要根据fatherid来确定父子关系,因此,在获取到tree的列表list之后,就需要递归循环该list从而组合出上面的JSON结构。
此方法已经完全可以解决问题。
但是,由于使用了多层递归循环,因此,如果树的层级越多,则循环的次数越多。
那么,如何能够减少循环次数呢?
2、修改方案:
首先修改表格结构,增加一个编码字段:
TableName:Tree
这样,在增加了code字段之后,每次查询时,我们只需要按着code来排序得到tree的列表list,然后在循环list的每条记录时(这次只需要循环一次list,不再有递归循环存在),根据code的长度来判断树的父子关系即可。
当然,采用这种方式,增加了增删改的处理复杂程度,增删改时,必须要同时处理code的数据,保证其正确性。
1&一般来说,tree查询的次数并不多,也即平时tree的数据相对稳定,不会经常修改,那么则应该考虑将数据静态化,例如生成静态js或者json数据。
因此,这种情况,可以选择上面的初始方案。毕竟,增删改的编码量太大或者逻辑太复杂,做程序也麻烦。
2&二般来说,tree变动很频繁,查询次数很多,就要按着&以查询优先、增删改为次&的原则来设计了。这种情况,则优选上面的修改方案。
还有更好的方案吗?
根据上面的抛砖,希望能够引玉现身。。。。。 ^_^
@forandever
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:279500次
积分:3395
积分:3395
排名:第3384名
原创:100篇
转载:32篇
评论:65条
(1)(1)(3)(4)(1)(1)(2)(1)(5)(3)(2)(1)(3)(7)(3)(16)(13)(5)(1)(4)(11)(5)(3)(8)(7)(10)(2)(2)(1)(3)(1)(1)(3)(1)现在只知道数据库名和某个表里某个字段里的值,求mssql 查询语句是多少?_百度知道
现在只知道数据库名和某个表里某个字段里的值,求mssql 查询语句是多少?
现在只知道数据库名和某个表里某个字段里的值,想得到该值多对应的字段和表是多少。 求mssql 查询语句是多少?
我有更好的答案
按默认排序
给你个思路吧,写起来太费劲了1.确定你要查的值的类型2.select * from
sys.all_objects
where type ='U' 会查出所有用户表3.select * from sys.all_columns where object_id=2151103 可以查出表中所有字段4.select * from sys.types
系统中的字段类型5。做关联查询就可以了。
其他类似问题
mssql的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁(2012o梧州)小明同学在做“测量定值电阻”实验时,其实物电路连接如图甲所示.
(1)连接电路时,应将开关断开.
(2)当小明准备闭合开关开始实验时,同伴小红提醒她还有一处不妥当,其不妥当之处是滑动变阻器滑片没有移到阻值最大处.
(3)小明更正后,闭合开关,发现电流表、电压表都没有示数.小明确定电路的接线良好,且电表和电源都完好,为了尽快查出故障原因,小明将连接在开关A端的导线拆下,把它改接在B端,结果电压表和电流表都有示数,则电路故障是开关断路.
(4)排除故障后,调节滑动变阻器,把测量的几组数据描成如图乙所示的图象,则该电阻的阻值R=3Ω.
(5)完成上述实验后,小明还想测量一段电炉丝的电阻R7,可是在连接电路时,发现电压表和滑动变阻器都已损坏.经过思考,小明利用刚才已测得的定值电阻R及原来剩下的器材,再向老师要一个开关S1,重新设计电路进行实验(电源电压未知且恒定不变,电流表量程足够大).
电路设计:在丙图中把小明设计末完成的实验电路图补充完整(测量时电路元件接线不能更改).
实验步骤:把下列实验步骤补充完整.
①只闭合开关S,读出电流表的示数Id;②再闭合开关S1,读出电流表示数I2.
电阻表达式:Rx=1×3Ω

我要回帖

更多关于 表里如一打一字 的文章

 

随机推荐