几乎每次构建应用程序时,我都会创建一个“地址”表来包含系统的地址。
您在“地址”表格中创建了哪些列(或者如果您将地址规范化为多个表格,那么这些表格)以及您背后的理由是什么?
答案 0 :(得分:4)
不包括国家/地区,所有这些字段都是text(varchar)。
这假设收件人存储在其他地方。
例如,丢失其中一行并将其替换为:
也是合适的因为这可以帮助验证,通过Web服务查找地址等等。
答案 1 :(得分:2)
我要折腾“依赖”答案。如果您的应用程序只关注正确打印的地址标签的布局,则一组行(line1,line2,line3等)就足够了。文本blob也可以正常工作,具体取决于数据的输入方式。给用户一个盒子并让他们输入?让它们适合3,4,5线?不管。
但是,如果您希望能够对数据进行“填充”,例如按邮政编码排序,则按城市,州和/或国家/地区分析分布,或跟踪街道地址中的位数(10) Main St.与54321 Main St.),然后您需要为每个重要信息单独列。
似乎可能要求“包含地址空间”,并且关于地址实际完成的决定将在稍后出现......此时他们希望能够对数据进行排序/计数/取幂/无论如何,即使他们永远不会真的这样做。根据其他帖子中引用的链接,一旦你走向国际,它确实会变得非常复杂。我会说尝试并保持尽可能简单,“合理”取决于背后要求的业务推理。
答案 2 :(得分:1)
在理想的世界中,每个应用程序都会以规范格式存储地址,例如UPU或BS7666。将结构化地址合并为单个字符串进行打印比将后续从单个文本块中提取地址元素要容易得多。因为迟早有人,也许不是你,会想要用地址信息“做事”。数据仓库现在很流行。
不幸的是,实现像BS7666之类的东西通常需要地址验证软件。要求普通用户将地址设置为procrustean格式是不合理的:我们不能指望他们会理解locality
,town
和post town
之间的区别。如果没有经过验证,将某些东西称为标准格式是错误的。
但是要采用某种形式的结构。此外,至少使用正则表达式验证邮政编码/邮箱,以确保其格式正确。