Sql server 地理定位服务的地址表方案
我有一个SQL数据库,其中包含存储、用户等表 存储和用户以及其他实体都有一个地址 我正在考虑为所有地址创建一个地址表:Sql server 地理定位服务的地址表方案,sql-server,google-maps,database-design,geolocation,google-geocoder,Sql Server,Google Maps,Database Design,Geolocation,Google Geocoder,我有一个SQL数据库,其中包含存储、用户等表 存储和用户以及其他实体都有一个地址 我正在考虑为所有地址创建一个地址表: Users -------- UserId (PK) AddressId (FK) Name Addresses -------- AddressID (PK) CountryID (FK) -> I have a table Countries with all Countries Street PostalCode Locality Region Latitud
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将键入的地址转换为其字段,并将其保存到包括纬度和经度在内的数据库中
我有几个问题:
你有没有想过把门牌号码分开?一些外部服务或API需要这样做。如果需要,可以更容易地对该字段进行编码 地理位置有一个地理数据类型: 使用此类型,您可以使用一些地理功能(例如两点之间的距离)执行数据库查询 我不会直接保存GoogleAPI结果。使用您自己所需的模式
如果使用地理类型,则可以使用Long/Lat和Distance by radius进行查询。因此,建议使用我的模式在数据库中保存地址。创建新地址时,请调用Google API获取纬度和经度,并将这两个值保存为我的数据库中的地理位置。现在我可以使用自己的数据库按位置进行筛选。如果这是你的意思,这也是我的想法,也许我没有解释清楚。当用户在一个输入中键入某个地址时,我将使用谷歌地图自动完成,它将捕捉到例如“英国伦敦牛津街20号”,然后我将从谷歌获得地址字段和该地址的纬度/经度,并将其存储在我自己的模式中。是的,为门牌号设置字段可能是个好主意。我没有添加它,因为它是一个变化很大的字段,所以我不知道是否可以将其规范化。我正在寻找其中一些服务使用的模式以及ISO模式(如果有的话)。您走的路是对的。我只需要更改模式:经纬度->位置地理