日期:2014-05-18  浏览次数:20682 次

一个树形结构的数据库设计问题
unit表:   ID(自动编号),cityID,unitname,city,province   其他字段..

unit表中的记录是通过WEB页面提交的
比如我提交的内容到数据库中是这样的
ID cityID     unitname     city       province           provinceID
1 410500     xxx单位0     周口市       河南省               410000
2 421600     xxx单位1     安阳市       河北省 420000
3 421600     xxx单位2     安阳市       河北省 420000

现在又要在WEB页面中以树形结构显示出来

请教各位这样设计表有没有错,请指正,树形结构在JSP中如何实现

我在树形结构中要显示的是如下效果
比如:
--河北省
--------安阳市
--------------xxx单位1
--------------xxx单位2
--------XXX区
--河南省
--------周口市
-------------xxx单位0



------解决方案--------------------
一般是一行。作成联动方式。
------解决方案--------------------
----创建测试数据
declare @t table(ID int,cityID varchar(10),unitname varchar(15),city varchar(15), province varchar(15),provinceID int)
insert @t
select 1, '410500 ', 'xxx单位0 ', '周口市 ', '河南省 ', '410000 ' union all
select 2, '421600 ', 'xxx单位1 ', '安阳市 ', '河北省 ', '420000 ' union all
select 3, '421600 ', 'xxx单位2 ', '安阳市 ', '河北省 ', '420000 '

----查询
SELECT province FROM (
select top 100 percent * from(
select distinct province,provinceID,cityID,1 as OrderID from @t as a
union all
select distinct replicate( ' ',10) + city,provinceID,cityID,2 from @t
union all
select replicate( ' ',20) + unitname,provinceID,cityID,3 from @t) as a
order by provinceID,cityID,OrderID
) AS t


/*结果
province
-----------------------------------
河南省
周口市
xxx单位0
河北省
安阳市
xxx单位1
xxx单位2
*/
------解决方案--------------------
感覺你這樣不太好。你可以參考MRP中BOM表設計。。。
------解决方案--------------------
其实设计成树形结构的方法很多
似乎SQL版也提过类似的问题,楼主可以找下
------解决方案--------------------
可以看作bom展開問題,寫個函數就可以
------解决方案--------------------
楼主的表设计是不合理的,这样维护很麻烦。
我给出下面的表设计,供参考。
Tb_province
provinceID province parentID
410000 河南省 0
420000 河北省 0

Tb_city
cityID city parentID
1410500 周口市 410000
2421600 安阳 420000

Tb_unit
unitID unitname parentID
1 xxx单位0 1410500
2 xxx单位1 2421600
3 xxx单位2 2421600


------解决方案--------------------
ID号按树型结构来编码,
------解决方案--------------------
up
------解决方案--------------------
就用身份证的编码就可以啦吧,省为两位,市为四位,县为六位,
单位为前六位地区编码加单位的个数,三位一般就可以啦