一个树形结构的数据库设计问题
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
------解决方案--------------------就用身份证的编码就可以啦吧,省为两位,市为四位,县为六位,
单位为前六位地区编码加单位的个数,三位一般就可以啦