地区级联获取问题 数据库设计

 前段时间一个项目中有一个地区级联需要取出某个地区下的所有子孙区域。

  通常一般情况地区都会存放在一个表中

             

  像这种方式设计表的,如果我想取出成都下边所有的地区只能有循环递归的方式取出:

     1.先取出成都的记录,

     2.再查成都下一级的区域。上级编号(parentid)是成都(2)的记录,查询出编号(id)为5,6,7的记录

     3.再依次查出5,6,7下的一级区域 ,

     依次类推直到区域没有下一级区域为止。这样做事我想到的第一种方法也是能够满足需求的,但是从性能的角度想的话这个确实不怎么好。


     后边好好的想了下如果这样设计会好很多

          

    地区的编号有字符串表示

    每个地区的编号都等于他的上一级地区的编号+该地区自身的编号 ,这样就可以很直接的分辨出某个地区有哪些下级地区。

    比如: 四川编号为11 ,下级地区成都自身的编号为11,那么成都的编号就为1111,成都下边的地区都是以1111开头的,要查询成都下边的所有区域

                  select * from area where id like '1111%'

        此处虽用到了like 但是%匹配时匹配的后边的前面还是能够用到索引,这个的数据也就几千条    

         types 是地区的类型  省级,市级,县级   还可以分级别查询

        编号也可以用数值型表示 where  id<xx  and id>yy 比较

        

         个人理解还望多多给出建议

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值