我是一名程序员,需要一种实用的方法来将世界上的街道地址 struct 存储在数据库中.那么,存储街道地址的最佳通用数据库设计是什么呢?它应该使用简单,快速查询和动态存储世界上所有的街道地址.

推荐答案

可以在一组标准字段中表示来自许多不同国家的地址.命名或编号建筑所在的命名通道(通道)的基本概念相当标准,但有时在中国除外.其他近乎普遍的概念包括:命名聚落(城市/城镇/村庄),通常可以称为一个地方;命名地区并指定字母数字邮政编码.请注意,邮政编码(也称为邮政编码)仅在某些国家是纯数字的.如果你真的想成为泛型,你需要很多字段.

万国邮政联盟(UPU)提供standard format个国家的地址数据.请注意,UPU格式保存整个国家的所有地址(精确到可用字段),因此是关系型的.如果存储客户地址(所有可能的地址中只有一小部分将被存储),最好使用一个包含所有字段和每行一个地址的表(或平面格式).

存储地址的合理格式如下:

  • 地址行1-4
  • 地点
  • 区域
  • 邮政编码(或zipcode)

地址行1-4可以容纳以下组件:

  • 建筑物
  • Sub-建筑物
  • 房屋号(门牌号)
  • 前提范围
  • 大街
  • Sub-大街
  • Double-Dependent 地点
  • Sub-地点

通常只使用3个地址行,但这通常是不够的.当然,在正式格式中,可能需要更多的行来表示所有地址,但逗号始终可以用作行分隔符,这意味着信息仍然可以被捕获.

通常情况下,数据分析将按地区、地区、邮政编码和国家进行,用户在输入数据时很容易理解这些元素.这就是为什么这些元素应该存储为单独的字段.但是,不要强迫用户提供邮政编码或地区,它们可能不会在本地使用.

位置可能不清楚,尤其是 map 位置和邮政位置之间的区别.邮政地点是邮政当局认为的地点,有时可能是附近的一个大城镇.然而,邮政编码通常会解决那里的任何问题或差异,以便在不使用官方邮政地址的情况下正确送达.

Sql相关问答推荐

如何在case语句中使用条件来计算成对变量

Group By子句返回太多行

Postgres JSONB对象筛选

通过 Select 值的顺序进行排序ClickHouse

在多个柱上连接时,如何确定连接条件?

值对于类型字符来说太长

返回UPSERT中的旧行值

根据最大值为字母数字大小写分配数值

如何用QuestDB生成蜡烛图?

SQL递归.硬币兑换问题.-try 使用递归解决硬币找零问题

如何使用聚合连接两个表

用另一个表中的特定名称替换 SQL 查询中的 ID.但我的两个表都有多个列

如何为 ActiveRecord 联接应用附加条件

使用ALTER TABLE无法删除列

postgres按组消除分区中的NULLS

如何在 SQL Server 中将 -13422.8450 舍入到 -13422.84

使用 R 遍历 SQL 查询,每次替换一个变量

SQL日期比较用例;月初至今的报告

如何通过子 Select 在一次更新(并行数组)中多次更新相同的行

如何在一个存储过程中创建全局临时表,并在另一个存储过程中使用它