可能的重复问题:
是否有适用于世界所有地址的通用街道地址数据库设计?
在数据库中存储国际地址的“最佳”方法是什么?
在数据库中进行一致和全面的地址存储的最佳实践
我目前有四个表,客户、联系人、设施和客户端。
这些表中每个都有以下字段: AddressLine1、AddressLine2、City、StateOrProvince、PostalCode。
我想把地址移到一个单独的表中,并能够指定地址类型(账单、发货、主要等)。
我的解决方案如下:
- 从Customers、contacts、Facilities和Clients中删除AddressLine1、AddressLine2、City、StateOrProvince和PostalCode。
- 创建Addresses表,包括字段AddressID(PK)、AddressLine1、AddressLine2、City、StateOrProvince、PostalCode、LastUpdateUser和LastUpdateTime。
- 创建AddressTypes表,包括字段AddressTypeID、AddressTypeName、AddressTypeDescription、AddressTypeActive、LastUpdateUser和LastUpdateTime。
- 创建CustomerAddresses表,包括字段CustomerID、AddressID、AddressTypeID、CustomerAddressActive、LastUpdateUser和LastUpdateTime。
- 创建ClientAddresses表,包括字段ClientID、AddressID、AddressTypeID、ClientAddressActive、LastUpdateUser和LastUpdateTime。
- 创建ContactAddresses表,包括字段ContactID、AddressID、AddressTypeID、ContactAddressActive、LastUpdateUser和LastUpdateTime。
- 创建FacilityAddresses表,包括字段FacilityID、AddressID、AddressTypeID、FacilityAddressActive、LastUpdateUser和LastUpdateTime。
我正在寻求指导,确定是否有比我设计的更好的解决方案。大家怎么看?
编辑:目前我不关心美国以外的任何事情,也不关心如何存储街道地址,即街道号码与整个街道地址的区别。我关心的是从数据库设计和表结构的角度考虑。