2015-01-02 40 views
0

的數據是這樣的:存儲無序對在SQL數據庫更好的辦法

無序對(x,y)(兩處)+值(這兩個位置之間的距離)

A B 4 
A C 13 
B C 1 

我的問題是什麼把這個保存在SQL數據庫中的最好方法是什麼?我可以保持原樣(未排序)。然後,如果我想確定距離數據庫的每個其他位置的B點有多遠(換句話說,每個包含B的對的值),我需要查看兩列(讓我們假設他們的名字是xy)。

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 

那麼我的查詢是簡單

select * 
from table 
where x = B 

,但數據的大小的兩倍。任何其他想法?任何其他技術(mongodb)?

+0

第一個查詢有什麼問題?你打算使用哪些DBMS? Postgres的?甲骨文? –

+0

你可能想試試用英語問這個問題。第一個和第二個樣本有什麼區別?我沒看到一個。我看到沒有指定爲「X」或「Y」的任何屬性的「X」和「Y」的引用。我還看到一個理論性的例子,讓人們很難理解你面臨的實際問題。在經驗中,很少有人提出一個真正代表他們面臨的真正問題的理論示例。因此他們得到錯誤的解決方案。 –

+1

這兩個樣本沒有區別。兩個樣本代表相同的數據,但方式不同。 – bartektartanus

回答

2

如果這實際上是關於位置和距離,而不僅僅是一個假設的例子,我覺得存儲第二個場景中提到的數據是有意義的,因爲在現實世界中,從A到B的距離確實如果您考慮單向道路或其他類似原因,則不一定必須與從B到A的距離相同。另一方面,如果您認爲距離爲"as the crow flies",則可能需要考慮空間數據類型,可用空間數據類型爲natively in SQL Server。我對Postgres不太好,但發現通過this extender可以得到相同的結果。

相關問題