database - 在数据库 (RDBMS) 中存储邮政地址的最佳实践?

标签 database database-design rdbms street-address postal-code

对于在 RDBMS 中存储邮政地址的最佳实践,是否有任何好的引用资料?似乎可以做出很多权衡取舍,并且对每个权衡利弊进行评估 - 当然这已经一次又一次地完成了吗?也许有人至少在某处写下了一些经验教训?

我正在谈论的权衡示例是将邮政编码存储为整数而不是字符字段,门牌号是否应该存储为单独的字段或地址行 1 的一部分,套房/公寓/等号码是否应该标准化或只是作为一大块文本存储在地址行 2 中,您如何处理 zip +4(单独的字段或一个大字段,整数与文本)?等等

此时我主要关心美国地址,但我想还有一些最佳实践可以帮助您为走向全局的可能性做好准备(例如,适本地命名字段,例如区域而不是州或邮政编码而不是 zip 等

最佳答案

对于更多的国际用途,要考虑的一种模式是 Drupal Address Field 使用的模式。 .它基于 xNAL standard , 似乎涵盖了大多数国际案例。深入研究该模块将揭示一些用于解释和验证国际地址的好方法。它还有一套很好的行政区域(省、州、州等),带有 ISO 代码。

这是模式的要点,从模块页面复制:

country => Country (always required, 2 character ISO code)
name_line => Full name (default name entry)
first_name => First name
last_name => Last name
organisation_name => Company
administrative_area => State / Province / Region (ISO code when available)
sub_administrative_area => County / District (unused)
locality => City / Town
dependent_locality => Dependent locality (unused)
postal_code => Postal code / ZIP Code
thoroughfare => Street address
premise => Apartment, Suite, Box number, etc.
sub_premise => Sub premise (unused)

我的经验教训:

  • 不要存储任何数字。
  • 尽可能将国家和行政区域存储为 ISO 代码。
  • 当您不知道时,请不要要求填写字段。某些国家/地区可能不会使用您认为理所当然的字段,甚至是 localitythoroughfare 等基本内容。

关于database - 在数据库 (RDBMS) 中存储邮政地址的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/310540/

相关文章:

sql - 为什么 SQL 在删除具有约束的多个表时无法推断表依赖关系?

asp.net - 对于 ASP.NET 应用程序,什么是 SQL Server 的良好替代品?

php - 在php中比较mysql数据库表值

database-design - Core Data 比 SQLite 更适合服务器客户端数据库设计吗?

php - MYSQL表结构

mysql - MySQL 上传数据库列时出现多个错误

mysql - Mysql中具有相同列名的表之间的数据复制

android - Realm 迁移时获取过去的数据库数据

mysql - 将常规 SQL 结果数组保存为另一个表中的条目确实减少了查询次数,好主意与否?

java - 在 QueryDSL 分组转换器中计数