簡體   English   中英

如何為地理零售位置層次結構建模

[英]How to model geographical retail location hierarchy

我正在嘗試為零售公司的位置創建數據庫結構,該公司的基礎是商店,而一個地區是按地理位置分組的一組商店,依此類推。 從最大到最小(區域明智):

區域->地區->區域->商店

每個級別都有相同的基本列:

ID
Name
LeaderID
CreatedOn
UpdatedOn
Active

將這些級別中的每一個都放在自己的表中,或者將其壓縮為一個帶有“ ParentLocation”列的“ Locations”表,會更好嗎? 由於上級將需要多次連接到同一張表上,因此性能會受到明顯影響嗎?

最好有一個位置表並有一個父位置列。

至於遍歷樹,有許多方法可以處理不同的情況。 基本的答案將取決於表中有多少數據以及如何使用它們。

您可以使用以下一些不同的選項:

  1. 創建路徑索引(例如AreaId | RegionId | District)
  2. 遞歸遍歷樹
  3. 自我加入

我敢肯定還有其他人,因為這還不完整,但是您要做的就是創建一些測試指標,然后確定最適合您的問題的方法。

您需要一個具有父子關系級別的表,只要您為連接字段創建正確的索引,性能就不會受到影響。

Area: { area_id (pk), area }
Region: { region_id (pk), area_id (fk), region }
District: { district_id (pk), region_id (fk), district } 

然后,您的“ Store表”將具有對該區域更具體位置的引用。

Store: { store_id (pk), district_id (fk), <other store fields>}

如果要從某個特定區域中的商店,請加入所有表

 SELECT S.*
 FROM Stores S
 JOIN District D ON S.distric_id = D.distric_id
 JOIN Region R on D.region_id = R.region_id
 JOIN Area A on R.area_id = A.area_id
 WHERE A.area = 'some area'

編輯:也許我向后理解了地理。 在我的示例中,我假設Area是較大的幾何圖形,而District是較小的幾何圖形。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM