将数据从网格移动到数据库中

时间:2009-06-11 19:03:47

标签: database

我有以下查找网格

x A B C D
A 0 2 1 1
B 2 0 1 1
C 1 1 0 1
D 1 1 1 0

尽管该算法与此问题无关,但请注意这与旅行推销员的点对点相似。它更像是来自A-> B的查找

什么是存储在数据库中的最佳方式,因为两个方向的时间都是相同的。 A至B为2,B至A为2

Start End Time
A      B     2
A      C     1
B      A     2  
etc

这样做似乎会复制所有不适合设计的数据。

任何想出最佳实现方式的想法都会实现吗?

2 个答案:

答案 0 :(得分:1)

不要存储重复的行。只需做一个这样的选择:

select *
from LookupTable
where (Start = 'A' and End = 'B')
    or (Start = 'B' and End = 'A')

答案 1 :(得分:1)

同意OrbMan。您可以采用约定来存储上三角形或下三角形。从数据库加载该三角形后,只需镜像它。在db streamer中执行此操作,并且加载器应该将行为封装/本地化在一个位置。

哦,另外一件事,你应该使用类似的矩阵实现,这样如果i> j,则[i,j]返回[j,i],如果i == j,则返回0。你明白了......然后只需保存并加载i<j的项目。