asp.net - 城市 zip 和州表的最佳数据库设计

标签 asp.net sql database oledb

我的应用程序需要引用地址。街道信息将与我的主要对象一起存储,但其余的需要单独存储以减少冗余。我应该如何存储/检索邮政编码、城市和州?这是我的一些想法。

单表解决方案(不能做关系)

[地点] 位置ID locationParent(FK 代表 locationID - 0 代表状态条目) 位置名称(城市,州) 位置ZIP


两个表(有关系、FK 约束、ref 完整性)

[状态] 状态ID 州名

[城市] 城市ID stateID(state.stateID 的 FK) 城市名 邮政编码


三个表

[状态] 状态ID 州名

[城市] 城市ID stateID(state.stateID 的 FK) 城市名

[压缩] 邮政编码 cityID(city.cityID 的 FK) zip 名称


然后我读入邮政编码及其分配方式。它们与城市没有特别的关系。有些城市有不止一个邮政编码(好吧仍然有效),但有些邮政编码在不止一个城市(哦,快点),还有一些其他邮政编码(很少)在多个州!此外,有些 ZIP 甚至与它们所属的地址根本不处于同一状态。似乎 ZIP 是为了识别运营商路线而制作的,一些偏远地区最好由邻近城市或州的邮局提供服务。

有没有人知道一个好的(不完美的)解决方案考虑到这一点,以尽量减少数据库增长时的差异?

最佳答案

USPS 每年都会发布一些数据库(只有一张表),其中包含邮政编码、州和县以及州/县代码。我会调查一下。我有一份(过时的)副本。架构非常简单:


ZIPCODE nvarchar(5) not null
CITY nvarchar(50) null
STATE nvarchar(2) null
STATECODE nvarchar(50) null
COUNTY nvarchar(50) null
COUNTYCODE nvarchar(50) null
(见下文)

编辑:此外,我允许您的用户添加新的邮政编码(城市和县等),因为邮政编码一直在添加..

http://www.usps.com/ncsc/addressinfo/addressinfomenu.htm

编辑: 其实我想我错了。我没有他们数据库的正式副本。我下载了他们的一个示例文件,他们的模式似乎很复杂。

关于asp.net - 城市 zip 和州表的最佳数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2007447/

相关文章:

c# - 不确定 linq to sql 查询的返回类型

asp.net - 无法访问 IIS 元数据库 ASP.Net

java - java 项目的动态数据存储以及搜索和映射

javascript - 使用动态字段将数据插入数据库

php - 如何存储敏感文件并只允许某些用户访问

c# - asp.net 项目符号列表控件 - 如何隐藏项目符号点?

c# - 我应该创建单元测试基地吗

sql - 帮助进行简单的 SQL 更新 + 加入

Select 命令中的 SqlDateTime 溢出异常

sql - 添加检查总和的约束