**这里使用 PHP/MySQL **
设想:
某快递公司在全国有多个仓库/仓库,每个仓库只覆盖选定的城市/城镇。当用户访问他们的站点时,他们可以搜索最近/本地的仓库。
我研究了两个选项,每个选项解释如下:
选项一(无效):
我用纬度和经度存储每个站点并进行简单的半径搜索,因此当用户进入他们的城市/城镇时,我使用谷歌地图进行地理编码并运行半径查询以获取 25 英里内的所有站点,这确实有效。
但它有一个很大的缺点,一些仓库不覆盖选定的城镇/城市,并且半径搜索没有考虑到这一点,导致即使它们不覆盖该区域,它也会在结果中显示仓库/仓库。
选项二:
将城镇/城市列表存储在一个数据库表中,并将站点存储在另一个表中。然后有一个关系表,将站点链接到它们所覆盖的城镇/城市。用户必须输入确切的城市(LIKE
此处使用 mySQL)名称才能返回结果,这将搜索城市表,然后执行一个LEFT JOIN
to depots 表。
这里的缺点是关系表会快速增长,最多可以有 500 万条记录,这可能会在后期出现性能问题。
选项二的数据库设计:
仓库表
- ID
- D_NAME
- D_ADDRESS
- D_POSTCODE
- D_TEL
- AND SO ON…
城市表
- ID
- NAME
关系表
- ID
- CITY_ID
- DEPOT_ID
问题:
我还有其他选择吗?
选项二是正确的方法吗?就性能而言是否可以?
谢谢。