规范化地址

swi*_*ese 3 database zipcode database-design normalization relational-database

我正在尝试规范化地址.

下图显示了我认为的这个问题的相关表格.我想知道如何将ZipCodes集成到模型中.这将是国际地址,所以我知道Zip/PostalCode并没有在任何地方使用.我认为City :: ZipCode是1 :: 0-n(我读过其他人说这并非总是如此,但他们从未提供过证据).如果他们是正确的,那么我想这将是一个多对多的关系.由于每个地址最多只能包含一个ZipCode,而ZipCode可以包含许多地址,因此我在如何规范化此模型时会丢失.

由于地址可能包含或不包含ZipCode,因此我需要避免在地址表中将其作为可空的FK.

编辑: 只是想强调所提供的实体和属性从实际数据库中大幅缩减.它仅用作参考并解决我对将zipcodes包含在模型中的问题的关注.

在此输入图像描述

Chr*_*ton 6

规范化你的模式; 添加一个表Address-ZipCode表,用外键地址ID和邮政编码; 和主键地址ID - 与地址表中的相同.然后使用地址和新表之间的左连接包含Zip代码.仅当地址具有邮政编码时才会填充新表.

但是,我建议如果您正在尝试容纳国际地址,那么您所拥有的架构可能不够 - 您需要多个地址线和更多级别的类别,而不是图中所示.错过的类别包括国家,次区域,城镇和其他可能的类别.

我的答案在这里(这是非常长)表示,需要应对国际地址(和其他东西)全面的东西.除非您在多个国家/地区处理数百万个地址,否则这将是一次大规模的过度杀伤.