Схема адресной таблицы для геолокации - PullRequest
0 голосов
/ 29 июня 2018

У меня есть база данных SQL с таблицами, такими как магазины, пользователи и т. Д.

Адрес как у Магазина, так и у Пользователя, а также у других объектов есть.

Я рассматриваю возможность создания таблицы адресов для всех адресов:

Users
--------
UserId (PK)
AddressId (FK)
Name

Addresses
--------  
AddressID (PK)
CountryID (FK) -> I have a table Countries with all Countries
Street
PostalCode
Locality
Region
Latitude
Longitude

Когда пользователь заполняет профиль, у меня будет ввод для ввода адреса.

Я хотел бы использовать Google Geocoding API для преобразования набранного адреса в его поля и сохранения его в базе данных, включая Широту и Долготу.

https://developers.google.com/maps/documentation/geocoding/start
https://developers.google.com/maps/documentation/javascript/geocoding

У меня есть несколько вопросов:

  1. Подходит ли для этого схема таблицы адресов?

  2. Я планирую использовать Google Geocoding API, поэтому я должен сохранить PlaceId, после чего Google вернется в мою базу данных?

Мои основные цели:

  1. Преобразовать введенный пользователем адрес в поля адреса и сохранить в базе данных;

  2. Имея широту и долготу типа адреса пользователя в моей базе данных, я смогу искать их по местоположению. Пример: получить пользователей моего приложения в радиусе 20 км от лондонского адреса.

1 Ответ

0 голосов
/ 29 июня 2018

Вы думали об отделении HouseNumber? Некоторые внешние сервисы или API требуют этого. В случае необходимости проще заполнить эти поля.

Существует география Тип данных для геолокации: https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/spatial-types-geography?view=sql-server-2017 С этим типом вы можете эффективно выполнять запросы к базе данных с помощью некоторых гео-функций, например, расстояние между двумя точками.

Я не буду сохранять результаты Google-API напрямую. Используйте собственную необходимую схему.

Если вы используете тип географии, вы можете запросить с Long / Lat и Distance по радиусу.

...