我有一个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
当用户填写个人资料时,我会输入一个输入地址。
我想使用谷歌地理编码API将输入的地址转换为其字段,并将其保存到包括纬度和经度在内的数据库中。
https://developers.google.com/maps/documentation/geocoding/start https://developers.google.com/maps/documentation/javascript/geocoding
我有几个问题:
我的地址表方案是否适合此?
我计划使用谷歌地理编码API,那么我应该存储PlaceId,然后谷歌返回到我的数据库中吗?
我的主要目标是:
将用户输入的地址转换为地址字段并保存到数据库;
通过在我的数据库中拥有用户地址类型的纬度和经度,我将能够按位置搜索它们。 示例:获取伦敦地址半径 20 公里范围内的应用程序的用户。
你有没有想过把门牌号分开?某些外部服务或 API 需要这样做。如果需要,可以更轻松地连接此字段。
地理位置有一个地理数据类型:https://learn.microsoft.com/en-us/sql/t-sql/spatial-geography/spatial-types-geography?view=sql-server-2017 使用此类型,您可以使用一些地理函数(例如两点之间的距离(高效地查询数据库。
我不会直接保存Google-API结果。使用您自己的所需架构。
如果使用地理类型,则可以使用长/拉特和按半径的距离进行查询。