请问一个关于数据库表设计的问题,急死人啦!!!(200分)

  • 主题发起人 主题发起人 wishme6
  • 开始时间 开始时间
W

wishme6

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在MSSQL中设计一个二维表,类似火车时刻表,就是上面一排比如
说有福州、上海、北京、南京,左边一列也福州、上海、北京、南京,
交叉对应值就是相距的公里数,表设计好后怎样查询呢?比如我起点
是福州,我输入目标地点,就查出相应公里数
 

事先生成无穷列举,一查即可。
 
表一:城市代码、城市名称
表二:起点城市代码、终点城市代码、里程
 
比如是一个单线,然后每个站点一个ID号,一个顺序号,一个离起始点的公里数三个字段就行.
ID 序号 距离
福州 1 0
...
北京      10 1200
这样,你要算北京离福州的距离不是可以直接就算出来了,若你不是单线,而是多条线就要
麻烦些了,不过你看看地图册上的公路,铁路里程图,思路应该就已经出来了.
查询不是就更简单了,找到两个地名,直接相减就行了. 
 
二维表不是数据库存储的物理类型表,而应该是一种逻辑上的统计表.
所以如果用最终要通过存储过程或复杂的查询统计出你所需要的二维表形式.

1.一张城市代码表
ID Name
------------
01 福州
02 北京
-------------

2. 城市间里程表
From To Meters
----------------------
01 01 0
01 02 1700
----------------------

3.查询的时候
建一个临时表生成你说需要的二维表(写这样一个存储过程应该不难吧)

4.至于具体查询从某地到某地,里程数是多少,从里程表里select出来不就行了.
 
同意楼上的。
此时对数据表的更新、维护也比较方便。
 
同意bluerain的,思路很清晰。
 
agree with GOHKI and bluerain,[:D]
 
用两个表吧,这是最好的解决办法了
 
按bluerain说的应该没错。
 
你可以用两个表:一个为主表,一个为从表。用一个ID 来连接。
这样通过主从表就能反映出来。
 
不要听楼上的,主从表在这用不起来。
还是bluerain说的对!
 
我觉得用zhangkan的办法较简单
 
后退
顶部