[英]How to model geographical retail location hierarchy
我正在嘗試為零售公司的位置創建數據庫結構,該公司的基礎是商店,而一個地區是按地理位置分組的一組商店,依此類推。 從最大到最小(區域明智):
區域->地區->區域->商店
每個級別都有相同的基本列:
ID
Name
LeaderID
CreatedOn
UpdatedOn
Active
將這些級別中的每一個都放在自己的表中,或者將其壓縮為一個帶有“ ParentLocation”列的“ Locations”表,會更好嗎? 由於上級將需要多次連接到同一張表上,因此性能會受到明顯影響嗎?
最好有一個位置表並有一個父位置列。
至於遍歷樹,有許多方法可以處理不同的情況。 基本的答案將取決於表中有多少數據以及如何使用它們。
您可以使用以下一些不同的選項:
我敢肯定還有其他人,因為這還不完整,但是您要做的就是創建一些測試指標,然后確定最適合您的問題的方法。
您需要一個具有父子關系級別的表,只要您為連接字段創建正確的索引,性能就不會受到影響。
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.