我需要在我的數據庫中表示地理對象的層次結構。每個對象都有一個名稱和地理座標(緯度/經度)。如何在SQL數據庫中表示層次結構
的第一級層次的可能有兩種可能值之一:海洋 | Terrastiaral。
第2級(對於海洋)可能是Seas |裏弗斯。 第三級(對於海洋)包括所有可能的海名(例如波羅的海)。
此外,在3級我可能要鏈路的每個海/河與大海它涉及到所有裏弗斯應該與一些海它涉及到額外的聯繫。 還有第四,第五和第六級別的對象是較小的類型。
重要提示: [3,4,5,6]級別的任意組合可以跳過這種類型的層次結構,也就是說我們可以有層次(1,2,3,4,5)或(1, 2,3)或(1,2,3,5)。
此外,我將在我的應用程序中使用sqlalchemy ORM作爲對象表示。
我應該爲父節點使用不同層次結構的外鍵使用不同的表嗎? 對於跳過的層次,我們可以爲每個層次結構路徑使用虛擬節點。
我應該爲所有節點製作一個統一的表格,並將其級別存儲爲整數值,父級的FK(即鄰接列表結構)?
每種方法的優缺點是什麼?
誰有其他想法(考慮到所有約束)?
您是否希望在層次結構中存儲關於每個級別的不同內容,或者只是名稱和lat/long? –