Ars*_*yan 116 sql database-design postal-code street-address
我是一名程序员,说实话,不知道世界的街道地址结构,我的国家是如何构建的:)所以哪个是存储街道地址的最佳和常见的数据库设计?它应该是如此简单易用,快速查询和动态存储世界上所有街道地址,只需一个ID识别非常
感谢
Edw*_*oss 116
可以在一组标准字段中表示来自许多不同国家的地址.命名或编号建筑所在的指定通道(通道)的基本概念是相当标准的,有时除了中国.其他近乎普遍的概念包括:命名定居点(城市/城镇/村庄),一般可称为地区; 命名区域并分配字母数字邮政编码.请注意,邮政编码(也称为邮政编码)仅在某些国家/地区仅为纯数字.如果你真的想要通用,你将需要很多字段.
万国邮联万国邮政联盟以标准格式提供许多国家的地址数据.请注意,UPU格式包含整个国家/地区的所有地址(低至可用字段精度),因此它是关系型的.如果存储客户地址,其中只存储所有可能地址的一小部分,则最好使用包含所有字段和每行一个地址的单个表(或平面格式).
存储地址的合理格式如下:
地址线1-4可以保存组件,例如:
通常只使用3个地址线,但这通常是不够的.当然可以要求更多行代表官方格式的所有地址,但逗号总是可以用作行分隔符,这意味着仍然可以捕获信息.
通常,数据分析将按地点,区域,邮政编码和国家/地区进行,这些元素在输入数据时非常容易让用户理解.这就是为什么这些元素应该存储为单独的字段.但是,不要强制用户提供邮政编码或区域,它们可能不会在本地使用.
地点可能不清楚,特别是地图地点和邮政地点之间的区别.邮政当局是邮政当局认为的邮局,有时可能是附近的大城镇.但是,邮政编码通常会解决那里的任何问题或差异,即使没有使用官方的后地方也允许正确的交付.
Mit*_*eat 46
看看数据库答案.具体来说,这涵盖了许多情况:
(所有可变长度字符数据类型)
AddressId
Line1
Line2
Line3
City
ZipOrPostcode
StateProvinceCounty
CountryId
OtherAddressDetails
Run Code Online (Sandbox Code Playgroud)
and*_*ora 25
问问自己存储这些数据的主要目的是什么?您是否打算实际向该地址的人发送邮件?跟踪人口统计,人口?作为一些基本认证/验证的一部分,能够向呼叫者询问他们的正确地址吗?上述所有的?以上都不是?
根据您的实际需要,您将确定a)它并不重要,您可以采用自由文本方法,或b)所有国家/地区的结构化/特定字段,或c)特定国家/地区的架构.
Emi*_*ily 12
有时距离街道地址最近的是城市.
我曾经有一个项目将印度的所有中学都放在谷歌地图上.我使用Google API编写了一个精巧的程序,并认为这很容易.
然后我从客户端获取数据.一些学校的地址是"从市场旁边,理发师旁边"或"近老巴士站".
它让我的任务变得更加艰难,因为不幸的是,Google API不支持这种格式.
对于国际地址,如果将信息分解为字段,则很难找到格式化信息的方法.例如,意大利地址使用:
<street address>
<zip> <town> <region>
<country>
Run Code Online (Sandbox Code Playgroud)
如
Via Eroi della Repubblica
89861 Tropea VV
Italy
Run Code Online (Sandbox Code Playgroud)
这与美国地址的顺序有很大不同 - 在第二行.
另见SO问题:
另请查看标签' 邮政编码 '.
编辑:地区和城镇的逆序 - 每UPU
也许这很有用:https: //gist.github.com/259744 对于一个项目,我收集了一份关于世界上所有国家的信息表,包括ISO代码,顶级域名,电话代码,汽车标志,长度和正则表达式压缩.不幸的是,国家名称和评论仅限于德语...