Поиск БД (предприятий) по местоположению - PullRequest
0 голосов
/ 03 ноября 2010

Я разрабатываю базу данных MySQL и соответствующее приложение RoR, которое будет содержать различные предприятия, у каждого бизнеса будет свой адрес.

Требование этого приложения заключается в поиске в базе данных по городу / стране (это будет охватывать предприятия по всей Европе / Великобритании). Результаты поиска будут возвращены ближайшим городом в этой стране.

Вот грубая ERD: alt text

Как лучше организовать БД? Должен ли я переместить поле города в свой собственный стол? Должен ли я хранить GPS-координаты для каждого предприятия?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 03 ноября 2010

Я бы сохранил Город в отдельной таблице с широтой / долготой мэрии (или центра города).Затем для каждого магазина я буду хранить широту / долготу.

Это позволит вам рассчитать расстояние от магазина до центра города и ранжировать по расстоянию, чтобы вы могли показать верхнюю точку N.

Если позже вы сохраните местоположения пользователей, то легко изменить свой запрос, чтобы показать расстояние от местоположения пользователя.

1 голос
/ 03 ноября 2010

Я думаю, что наличие стран и почтовых индексов является излишним, не мешало бы. В вашей таблице стран есть адрес, город, штат, почтовый индекс, страна, лат и lng.

Затем используйте GeoKit для геокодирования вашего адреса в лат / лнг, если ваш адрес обновлен до сохранения.

Тогда вы можете быть удивительным и говорить что-то вроде (найдите все предприятия в пределах 10 миль от этого адреса)

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

Ресурсы:

1 голос
/ 03 ноября 2010

Вам не нужно связываться с countryID из таблицы Businesses, поскольку таблица PostalCodes уже имеет FK для таблицы Countries.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...