【发布时间】:2015-01-07 16:44:21
【问题描述】:
在美国,每个可投递的邮件地址(无论如何我都知道)都有一个邮政编码。对于适用于美国的架构,我提供了以下表格:
国家
country_id (PK)
iso3166_1_alpha2
iso3166_1_alpha3
姓名 (NN,UQ)
地铁
metro_id (PK)
姓名 (NN,UQ)
城市
city_id (PK)
country_id (FK,NN)
metro_id (FK)
名称 (NN)
液化石油气
纬度
邮政
postal_id (PK)
country_id (FK, NN)
名称 (NN, UQ)
液化石油气
纬度
city_postal
city_id (FK)
postal_id (FK)
这里的逻辑如下:
- 每个城市都属于一个国家(例如,波特兰 -> 美国)。
- 有些国家有地区(例如阿拉斯加、美国),但没有 都可以。
- 地区无关紧要,因为邮政编码是唯一的 标识符(例如,97267 邮政仅识别一个波特兰 代码)。
- 没有邮政编码的国家(例如爱尔兰)具有唯一的 城市名称(我的假设:爱尔兰不存在两个戈尔韦)。
我想确定的是,这种结构适用于世界各地的城市。我认为唯一重要的是城市和国家的假设是错误的吗?我应该使用区域吗?例如,是否有地区不使用邮政编码,并且由于城市位于不同的地区而城市名称重复?
编辑
以防万一,我正在使用带有 PostGIS 扩展的 PostgreSQL 9.3。此外,city 表、country_id 列和 name 列有一个 UNIQUE 约束(邮政表也是如此)。所以,美国只有一个波特兰;不过,这很好,因为对于美国,我将使用邮政编码。
【问题讨论】: