我想模擬哪些國家在MySQL中彼此相鄰。我有三個表:在SQL中建模國家鄰接關係
nodes
-----
node_id MEDIUMINT
countries
---------
country_id MEDIUMINT (used as a foreign key for nodes.node_id)
country CHAR(64)
iso_code CHAR(2)
node_adjacency
--------------
node_id_1 MEDIUMINT (used as a foreign key for nodes.node_id)
node_id_2 MEDIUMINT (used as a foreign key for nodes.node_id)
我欣賞的節點表是在這個例子中多餘的,但是這是一個更大的架構,節點可以代表許多其他項目以外的其他國家的一部分。
這裏的一些數據(IDS(這出現在所有三個表中)和國家)
59 Bosnia and Herzegovina
86 Croatia
130 Hungary
178 Montenegro
227 Serbia
232 Slovenia
克羅地亞被所有其他國家接壤,這是在node_adjacency表表示爲:
59 86
86 130
86 178
86 227
86 232
因此塞爾維亞的身份證可能會顯示爲node_id_1
或node_id_2
。該表中的數據基本上是非有向圖數據。
問題:
定名爲「克羅地亞」,哪些SQL我應該使用檢索它的鄰居?
Bosnia and Herzegovina
Hungary
Montenegro
Serbia
Slovenia
將鄰接信息存儲爲有向圖數據會有任何檢索效率增益嗎?例如。克羅地亞接壤匈牙利,匈牙利和克羅地亞接壤,基本上是複製關係的存儲:
86 130
130 86
已經得到了Smarties和Trees和Hierarchies的SQL,但不幸的是,很多Celko的寫作都在我的頭上。感謝您的解決方案! – jetboy 2009-11-11 23:31:28