当前位置:编程学习 > JAVA >>

关于“树型结构数据库”的设计与显示问题,大家帮帮我把。。。

我需要设计一个树型结构的表,用来显示各个目录层次之间的关系。
大致的结构如下图:

我分别设计project,study,staff这3张表,但是及联起来很困难,而且数据显示
非常麻烦,根本无法按上图显示。
所以想问大家,这个数据库怎么设计?
数据显示怎么弄?
非常感谢。。。

--------------------编程问答--------------------

这是数据库表,里面的数据是这样的


id     name    parent_id
1      河北省    0
2      河南省    0
3      邯郸市    1
4      郑州市    2


显示的时候 select * from tree where parent_id = 0 ; 这条语句是获取所有根目录,直接显示就可以了。

当你点击河北省的时候肯定可以获取河北省的ID是1,然后用ajax去查询 
select * from tree where parent_id = 1 ;

就可以了,不知道你的意思是不是这种。 --------------------编程问答-------------------- 考虑下下面的方案看可行不

node_id parant_id node_name node_descript node_track
1 0 A         A/B/C   0,1
2 0 B         A/B/C   0,2
3 1 aa        project 0,1,3
4 1 bb        project 0,1,4
5 1 cc        project 0,1,5
6 1 dd        project 0,1,6
7 3 study A   study   0,1,3,7
8 3 study b   study   0,1,3,8
9 7 sta1 b    staff   0,1,3,7,9
10 8 sta2 b    staff   0,1,3,8,10
--------------------编程问答--------------------
引用 1 楼 strivehard 的回复:
这是数据库表,里面的数据是这样的


Java code

id     name    parent_id
1      河北省    0
2      河南省    0
3      邯郸市    1
4      郑州市    2



显示的时候 select * from tree where parent_id = 0 ; 这条语句是获取所有根目录,直接显示就……
+1 --------------------编程问答-------------------- 可以用start with  。。。connect by 。。。查询语句实现查询 --------------------编程问答--------------------
引用 1 楼 strivehard 的回复:
这是数据库表,里面的数据是这样的


Java code


id     name    parent_id
1      河北省    0
2      河南省    0
3      邯郸市    1
4      郑州市    2



显示的时候 select * from tree where parent_id = 0 ; 这条语句是获取所有根目录,直接显……

谢谢你的回复。。
你说的对,但现在树的深度为3层,也就是project,study,staff 的数目都不是固定的,都是动态增删的。按照你这样设计数据库,好像无法确定parent_id 的值啊。
希望你继续提出建议,谢谢啦 --------------------编程问答--------------------
引用 5 楼 zerepxan 的回复:
引用 1 楼 strivehard 的回复:
这是数据库表,里面的数据是这样的


Java code


id     name    parent_id
1      河北省    0
2      河南省    0
3      邯郸市    1
4      郑州市    2



显示的时候 select * from tree where parent_……


哦 才看到 可以是无限层的啊

id name parent_id
1 河北省 0
2 河南省 0
3 邯郸市 1
4 郑州市 2
5 邯郸县 3

这不就可以了么 是这意思吧? --------------------编程问答--------------------

数据实例:
这是一个树结构设计。。
在一个表中的数据如下
最上层
编号 机构号 岗位编码 上级岗位编码 是否有子序列(是否已经是树最末端) 
1 20057 G0114 G 1 
2 20058 G0119 G 1 
3 20059 G0084 G 1
依次:
1 20054 G0110 G0084 1
2 20056 G0113 G0084 1
3 20048 G0102 G0084 1
依次:
1 20053 G0103 G0102 0
这些数据在一张表中,最上层G,下面包括G0084,再下面包括G0102,根据后面1和0判断是否还有下层。。即最下层。。
每次根据点击传递上层树状代码,查询下级代码。。。、


根据这个数据结构 。。只需要将你的省市县。。。放进到这个数据结构中就行了。。查询的时候,第一次查出最上层节点“上级岗位编码”,点击下一个节点“岗位编码”,然后将此岗位编码传入同一个查询语句中,只不过上一次的“岗位编码”变成“上级岗位编码”就行了。。

只需要写一条sql,根据参数变化,递归就能得到树。。递归时,根据最后一个字段【是否有子序列(是否已经是树最末端)】来结束单个树根的递归
--------------------编程问答--------------------
引用 3 楼 hzc565835435 的回复:
引用 1 楼 strivehard 的回复:
这是数据库表,里面的数据是这样的


Java code

id name parent_id
1 河北省 0
2 河南省 0
3 邯郸市 1
4 郑州市 2



显示的时候 select * from tree where parent_id = 0 ; 这条语句是获取所有根目录,直接显示就……
+1

+1
这张表全搞定,无限级 --------------------编程问答--------------------
引用 8 楼 cgret 的回复:
引用 3 楼 hzc565835435 的回复:
引用 1 楼 strivehard 的回复:
这是数据库表,里面的数据是这样的


Java code

id name parent_id
1 河北省 0
2 河南省 0
3 邯郸市 1
4 郑州市 2



显示的时候 select * from tree where parent_id = 0 ; 这条语句是获取……

不太懂啊。。怎么可能啊?
比如我加入一个新的study,那怎么获取他所属于的project呢?staff也一样存在这样的问题啊。。。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,