我正在設計一個MySQL數據庫和一個相應的RoR應用程序,它將持有各種業務,每個業務都會有一個地址。按地區搜索數據庫(企業)
此應用程序的一個要求是按城市/國家(這將持有企業跨歐洲/英國)搜索數據庫。搜索結果將由該國最近的城市返回。
這是一個粗略的ERD:
什麼是組織數據庫的最佳方式?我應該將城市場地移到自己的桌子上嗎?我應該爲每個企業存儲GPS座標嗎?
謝謝!
我正在設計一個MySQL數據庫和一個相應的RoR應用程序,它將持有各種業務,每個業務都會有一個地址。按地區搜索數據庫(企業)
此應用程序的一個要求是按城市/國家(這將持有企業跨歐洲/英國)搜索數據庫。搜索結果將由該國最近的城市返回。
這是一個粗略的ERD:
什麼是組織數據庫的最佳方式?我應該將城市場地移到自己的桌子上嗎?我應該爲每個企業存儲GPS座標嗎?
謝謝!
我會將城市存儲在一個單獨的表格中,其中包含市政廳(或市中心)的緯度/經度。然後,我將存儲每個商店的緯度/經度。
這將允許您計算從商店到市中心等級按距離的距離,並且,這樣就可以顯示前N.
如果以後你存儲用戶的位置,那麼很容易頂mo動您的查詢以顯示距用戶位置的距離。
您不需要鏈接到Businesses
表中的countryID
,因爲PostalCodes
表已經有一個FK到Countries
表。
好趕,謝謝! – christo16 2010-11-03 18:17:49
我認爲有國家和PostalCodes是矯枉過正,不會打擾。在你的國家/地區表中,有地址,城市,州,郵政編碼,國家,經緯度和lng。
然後如果您的地址更新before_save,則使用GeoKit將您的地址地理編碼爲Lat/Lng。
然後你就可以真棒,說喜歡的東西(搜尋到10英里,地址內的所有企業)
Business.within.find(:all, :origin=>'100 Spear st, San Francisco, CA', :within=>10)
資源:
什麼你似乎已經夠正常了。如果您想根據距離查找商戶,則需要座標。 – Stephen 2010-11-03 18:12:51
是限於用戶自己的國家的搜索,例如我住在倫敦,尋找一家奶酪公司,你的系統建議一家只有30英里外的公司,但它在法國的渠道對面!對我來說真的沒什麼好處,因爲我討厭旅行 - 或者會在你的系統中成爲有效的HIT? – 2010-11-03 18:31:19
@ f00感謝您的洞察力,我們計劃將其限制在國家/地區。所以如果你在英國搜索,它只會返回附近的結果。 – christo16 2010-11-04 04:00:39