如自己编算法,你的问题就大了
用现成的吧,oracle,domino都行,微软的那个Index server差不多也行,用什麽就研究什麽的接口吧
用现成的吧,oracle,domino都行,微软的那个Index server差不多也行,用什麽就研究什麽的接口吧
解决方案 »
- 关于VC++的
- 100分求解SQL 2K服务器停止之谜
- select * into #EtamShopIniStock from EtamShopIniStock where 1=2
- [求助] 如果一张表里每个字段里的记录分别来自于不同的结果集怎么做?
- 一个很诡异的问题
- 高分请教数据导入高难度存储过程
- 一个简单的vf问题,请大家帮?
- SQL SERVER6.5与SQL SERVER7.0比较,哪一个快?(相同配置)
- ****高分求助!! 表里面有一列的类型是uniqueidentifier,我想向这个表插入一条记录,类型是uniqueidentifier的那列怎么赋值啊?(不是
- 从数据平台只能一个月一个月导出的数据有什么好的办法一次导出一年或多年每月的呢
- SQLSERVER2000的数据库,一个字段设为种子ID,自加1,那么到了0XFFFFFFFF后,系统会怎么样?
- 数据库log文件太大,如何清空,SQL 7.0 OR SQL 2000
现在要将每一个具体的类似以上的信息,即:A区b小区c大街d路c巷于一个其他的东东对应起来,即这个东东要对应到一个具体的地址(不要求到某一条路的具体号).
请问应该设计一个怎样的数据库才能达到性能上的最大优化(以上例子可能只是一种情况,其他的情况我一时我还没想出,或者以这个例子的内容但表述方式换一下)
qq 31360500
mail [email protected]
输入:客户的详细地址信息
输出:客户所属区域我看一个表就可以了,(地址id,地名,上级地址id,所属区域id)
每条记录加上区域ID是为了最快得到所属区域。然后
select 区域id,count(*) as count
from table
where charindex(地名,@详细地址) > 0
group by 区域id取count值最大的区域id,就是最匹配的区域。至于效率,我想一个区域应该有1000个地址差不多了吧,10个区域才10000条记录,即使进行全表扫描也不会超过3秒,这个时间查询的用户应该也能接受。
但实际是,用户填写的"给定的地址"有许多可变性,"A区b小区c大街d路e巷f号"可能写成"A区c大街d路c巷f号","c大街d路c巷f号","d路c巷f号"等等.
我的意思是,好多工作计算机不容易做的,应该交给人做,比如你给用户的表就可以设计好一些,来避免好多不规范,表里分清区,小区,大街,路,巷,号的填写范围,没有的填空.这样表设计时就有区,小区,大街,路,巷,号这些字段,填空的放NULL,查询时速度不会慢.计算机是死的,人是活的!
我觉得这个问题应该把"区域" ,"投递员" 和 "用户"这三个对象,在设计时分开考虑一下比较好.首先,设"区域"为"投递员"管理的区域的范围.即A区b小区c大街d路c巷 或 就是A区.
其次,"区域" ,"投递员" 和 "用户"这三都关系.
"投递员" 与 "区域" 为一对一关系 (即一个"区域"只有一个"投递员"管理)
"区域" 与 "用户"是一对多关系.(即一个"区域"可以有多个"用户", "用户是最小单位)
"投递员" 与 "用户" 是一对多关系.(即一个"投递员"管理多个"用户")
从以上关系中, 我们可看出这个系统的数据库结构设计方法.
关键是"投递员"管理"地域"范围, 这是关键.
如果你想把"投递员"管理"地域"范围设计成灵活的, 那我说的不可行.
如果按照你的方法做,表里只有地址名,及区域名。以后万一要对当前数据库进行扩展的话,那岂不是要新增很多数据,万一要修改的话,工作量好像也有点大把(毕竟一条大街下可能会包括很多路或巷的)
第二。就是觉得地址的级别怎么确定下来。一个是怎么规范,比如A区B小区C路,就不能出现A区C路。我觉得这种规范应当在录入时确定。比如投递员负责到路级。你应当要求操作员必须带上“区”,“路”什么的进行标志。
地址表分成几个表
区级表 小区表 路表
区名 代码 区名 代码 区名 代码
投递员表
投递员名 负责地点的代码
订单表
地址名 地址代码
录入一个地址,先把’区‘的字符取出来到区表里匹配,转换成代码,小区的、路的也分别到小区表、路标里转换成代码,然后把代码连接起来保存到定单表的地址代码里。当然路以下的考不考虑都无所谓了。如果操作员漏了小区,当然就匹配不到了。不允许录入。
然后匹配操作员时,只要根据订单表里的地址代码到投递员表里进行匹配就行了。
最主要的问题是一个投递员必须负责相同的级别。负责到路级,就全是路级。还有操作员录入必须要有地址分隔标志。这样处理起来就方便多了。
剩下的问题就是如果像农村的地址考虑起来可能会更加麻烦一些。至于地址表建立的范围,你可以根据已有的投递员负责范围录入。到时候出现新地址时,再录入。否则全国各地都录进去就麻烦了。呵呵