如自己编算法,你的问题就大了
用现成的吧,oracle,domino都行,微软的那个Index server差不多也行,用什麽就研究什麽的接口吧

解决方案 »

  1.   

    比方说一个城市有A区,A区中有b小区,b小区中有c大街,c大街中有d路,d路中有c巷;
    现在要将每一个具体的类似以上的信息,即:A区b小区c大街d路c巷于一个其他的东东对应起来,即这个东东要对应到一个具体的地址(不要求到某一条路的具体号).
    请问应该设计一个怎样的数据库才能达到性能上的最大优化(以上例子可能只是一种情况,其他的情况我一时我还没想出,或者以这个例子的内容但表述方式换一下)
      

  2.   

    三千大哥,也加我一个把
    qq 31360500
    mail [email protected]
      

  3.   

    我不太懂各种各样的算法,这个问题我也想不那么深,我觉得这个问题应该就是根据给定的地址来确定所属区域。
    输入:客户的详细地址信息
    输出:客户所属区域我看一个表就可以了,(地址id,地名,上级地址id,所属区域id)
    每条记录加上区域ID是为了最快得到所属区域。然后
    select 区域id,count(*) as count
    from table 
    where charindex(地名,@详细地址) > 0
    group by 区域id取count值最大的区域id,就是最匹配的区域。至于效率,我想一个区域应该有1000个地址差不多了吧,10个区域才10000条记录,即使进行全表扫描也不会超过3秒,这个时间查询的用户应该也能接受。
      

  4.   

    这个问题,好象都在讨论"根据给定的地址来确定所属区域",而且要计算机做.
    但实际是,用户填写的"给定的地址"有许多可变性,"A区b小区c大街d路e巷f号"可能写成"A区c大街d路c巷f号","c大街d路c巷f号","d路c巷f号"等等.
    我的意思是,好多工作计算机不容易做的,应该交给人做,比如你给用户的表就可以设计好一些,来避免好多不规范,表里分清区,小区,大街,路,巷,号的填写范围,没有的填空.这样表设计时就有区,小区,大街,路,巷,号这些字段,填空的放NULL,查询时速度不会慢.计算机是死的,人是活的!
      

  5.   

    我也来支持一下.
    我觉得这个问题应该把"区域" ,"投递员" 和 "用户"这三个对象,在设计时分开考虑一下比较好.首先,设"区域"为"投递员"管理的区域的范围.即A区b小区c大街d路c巷 或 就是A区.
    其次,"区域" ,"投递员" 和 "用户"这三都关系.
          "投递员" 与 "区域" 为一对一关系 (即一个"区域"只有一个"投递员"管理)
          "区域"   与 "用户"是一对多关系.(即一个"区域"可以有多个"用户", "用户是最小单位)
          "投递员" 与 "用户" 是一对多关系.(即一个"投递员"管理多个"用户")
    从以上关系中, 我们可看出这个系统的数据库结构设计方法.
    关键是"投递员"管理"地域"范围, 这是关键.      
    如果你想把"投递员"管理"地域"范围设计成灵活的,  那我说的不可行.  
      

  6.   

    to:bluepower2008(蓝色力量) 
    如果按照你的方法做,表里只有地址名,及区域名。以后万一要对当前数据库进行扩展的话,那岂不是要新增很多数据,万一要修改的话,工作量好像也有点大把(毕竟一条大街下可能会包括很多路或巷的)
      

  7.   

       第一,我觉得投递员的分工应当明确。管到哪一级。比如管到路。那么这个路下面的范围都归他管。而不能有些投递员管到路,有些投递员管到区。
       第二。就是觉得地址的级别怎么确定下来。一个是怎么规范,比如A区B小区C路,就不能出现A区C路。我觉得这种规范应当在录入时确定。比如投递员负责到路级。你应当要求操作员必须带上“区”,“路”什么的进行标志。
       地址表分成几个表
       区级表         小区表             路表
       区名  代码     区名  代码        区名   代码
        
          投递员表
       投递员名  负责地点的代码
                   订单表
       地址名       地址代码
      
       录入一个地址,先把’区‘的字符取出来到区表里匹配,转换成代码,小区的、路的也分别到小区表、路标里转换成代码,然后把代码连接起来保存到定单表的地址代码里。当然路以下的考不考虑都无所谓了。如果操作员漏了小区,当然就匹配不到了。不允许录入。
       然后匹配操作员时,只要根据订单表里的地址代码到投递员表里进行匹配就行了。
       最主要的问题是一个投递员必须负责相同的级别。负责到路级,就全是路级。还有操作员录入必须要有地址分隔标志。这样处理起来就方便多了。
       剩下的问题就是如果像农村的地址考虑起来可能会更加麻烦一些。至于地址表建立的范围,你可以根据已有的投递员负责范围录入。到时候出现新地址时,再录入。否则全国各地都录进去就麻烦了。呵呵
         
      

  8.   

    操作员肯定砍死你。:)上面我考虑的是负责到路级的。如果是街就再增加一个表。我说的’区‘,’路‘标志不知你明白没有。就是说A区C路。就不能输成AC。这样虽然出错了。检查起来比较容易。AC就难了。不知道他是一个区,还是一个区一个小区。