当前位置: 代码迷 >> Sql Server >> 这样的表该怎么设计
  详细解决方案

这样的表该怎么设计

热度:62   发布时间:2016-04-27 14:12:05.0
这样的表该如何设计?
SQL code
现在设计一个收费系统,需要保存一些收费标准,1、从城市到城市的收费2、是省份到省份的收费3、从城市到省份的收费4、从省份到城市的收费城市和省份是从属关系,如果你要 查询从广州到成都的收费标准,即使数据表没有广州到成都的标准,但是只要存在广东到四川,或广东到成都的数据,那么这些数据都是有效的。然而在设计这个收费表service_charge的时候,出现了一些问题,表结构设计如下编号  源id          目标Id             收费标准id    source_ref_id destination_ref_id charge_ratesource_ref_id destination_ref_id列引用自city表或province表的id值设想界面查询时提供源和目的地的city_id或province_id,则查询语句为select * from service_chargewhere (source_ref_id = @source_city_id  or source_ref_id = @source_province_id)and  (destination_ref_id = @destination_city_id  or destination_ref_id = @destination_province_id)但是现在觉得使用 or 效率很低,请问这个表怎么设计能够让效率最高?如果一张表不行,可否设计为多张表


------解决方案--------------------
我觉得charge表里应该只放city到city的记录。
省份到城市的价格,这个有意义吗...
然后加一个city-province的mapping table,如果用户查询是province到city的话,应该把所有这个province内的所有city结果显示出来。比如查询是四川到上海,那么结果应该是所有四川省内的city到上海的记录才有意义不是吗?


------解决方案--------------------
那不要分province_id和city_id呢?只用一个loc_id.
比如四川的loc_id是1000,成都的loc_id是1001.不需要or
------解决方案--------------------
想想基表的定义。
  相关解决方案