数据如下所示:
未排序的对(x,y)
(两个位置)+值(这两个位置之间的距离)
A B 4
A C 13
B C 1
我的问题是将它保存在SQL数据库中的最佳方法是什么?我可以保持原样(未分类)。然后,如果我想确定B点与数据库中每个其他位置的距离(换句话说,每个包含B的对的值),我需要查看两列(让我们假设它们的名称是x
和{ {1}})。
y
另一方面,如果我保持这样:
select *
from table
where x = B or y = B
然后我的查询很简单
A B 4
A C 13
B A 4
B C 1
C A 13
C B 1
但数据的大小是其两倍。还有其他想法吗?任何其他技术(mongodb)?
答案 0 :(得分:2)
如果这真的是关于位置和距离,而不只是一个假设的例子,我觉得按照第二种情况中提到的方式存储数据是有意义的,因为在现实世界中,从A到B的距离不是如果考虑单向道路或其他原因,必须与从B到A的距离相同。
另一方面,如果您将距离视为"as the crow flies",则可能需要将空间数据类型视为可用natively in SQL Server。我对Postgres并不擅长,但发现this extender可以获得同样的效果。