代码之家  ›  专栏  ›  技术社区  ›  christo16

按地点搜索数据库

  •  0
  • christo16  · 技术社区  · 14 年前

    我正在设计一个mysql数据库和一个相应的ror应用程序,它可以容纳不同的业务,每个业务都有一个地址。

    此应用程序的一个要求是按城市/国家搜索数据库(这将在欧洲/英国开展业务)。搜索结果将由该国最近的城市返回。

    下面是一个粗略的erd:

    组织数据库的最佳方法是什么?我应该把城市场地移到自己的桌子上吗?我应该为每个企业存储GPS坐标吗?

    谢谢!

    此应用程序的一个要求是按城市/国家搜索数据库(这将在欧洲/英国开展业务)。搜索结果将由该国最近的城市返回。

    下面是一个粗略的ERD: alt text

    组织数据库的最佳方法是什么?我应该把城市场地移到自己的桌子上吗?我应该为每个企业存储GPS坐标吗?

    谢谢!

    3 回复  |  直到 14 年前
        1
  •  2
  •   D'Arcy Rittich    14 年前

    我将把城市存储在一个单独的表格中,表格的纬度/经度为市政厅(或市中心)。然后,对于每个商店,我将存储纬度/经度。

    这将允许您计算从商店到市中心的距离,并按距离排列,以便显示顶部n。

    如果以后您存储用户的位置,那么很容易将您的查询顶部进行云化,以显示与用户位置的距离。

        2
  •  1
  •   dotariel    14 年前

    您不需要链接到 countryID 从你 Businesses 表,因为 PostalCodes 表已经有一个FK到 Countries 表。

        3
  •  1
  •   Jesse Wolgamott    14 年前

    我认为拥有国家和后壁龛是多余的,不会麻烦。在您的国家表中,有地址、城市、州、邮政编码、国家、拉丁美洲和液化天然气。

    如果您的地址在保存之前被更新,那么使用geokit将您的地址地理编码为lat/lng。

    然后你就可以表现得很出色,说一些类似的话(在这个地址10英里范围内找到所有的公司)

    Business.within.find(:all, :origin=>'100 Spear st, San Francisco, CA', :within=>10)
    

    资源: