按位置搜索(企业)数据库

发布于 2024-09-30 11:34:22 字数 275 浏览 5 评论 0原文

我正在设计一个 MySQL 数据库和一个相应的 RoR 应用程序,它将容纳各种企业,每个企业都有一个地址。

此应用程序的要求是按城市/国家搜索数据库(这将包含欧洲/英国的企业)。搜索结果将由该国家/地区最近的城市返回。

这是一个粗略的 ERD: alt text

组织数据库的最佳方式是什么?我应该将城市字段移到自己的表中吗?我应该存储每个企业的 GPS 坐标吗?

谢谢!

I'm designing a MySQL database and a corresponding RoR app that will hold various businesses, each business will have an address.

A requirement of this application is to search the database by City/Country (this will hold businesses across Europe/UK). The search results will be returned by the nearest city in that country.

Here is a rough ERD: alt text

What is the best way to organize the DB? Should I move the city field into its own table? Should I store GPS coordinates for each business?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瞳孔里扚悲伤 2024-10-07 11:34:22

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

这将允许您计算从商店到市中心的距离,并按距离排名,以便您可以显示前 N 个。

如果以后您存储用户的位置,那么很容易修改您的查询以显示距商店的距离用户的位置。

I would store the City in a separate table with latitude/longitude of city hall (or city center). Then for each store I would store latitude/longitude.

This will allow you to calculate the distance from the store to city centre, and rank by distance, so that you can show the top N.

If later you store users' locations, then it is easy top moify your query to show distance from the user's location.

爱已欠费 2024-10-07 11:34:22

您无需从 Businesses 表链接到 countryID,因为 PostalCodes 表已经具有到 Countries< 的 FK /代码>表。

You don't need to link to countryID from your Businesses table, since the PostalCodes table already has a FK to the Countries table.

往昔成烟 2024-10-07 11:34:22

我认为拥有国家和邮政编码是多余的,不会打扰。在“国家/地区”表中,包含地址、城市、州、邮政编码、国家/地区、纬度和经度。

如果您的地址在 before_save 之前更新,则使用 GeoKit 将您的地址地理编码为纬度/经度。

然后你就可以表现得很棒,比如(查找该地址 10 英里范围内的所有企业)

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

资源:

I think having Countries and PostalCodes is overkill, would not bother. In your Countries table, have address, city, state, postalcode, country, lat, and lng.

Then use GeoKit to geocode your Address into Lat/Lng if your address is updated before_save.

Then you can be awesome and say things like (find all businesses within 10 miles of this address)

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

Resources:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文