客户多地址和默认地址的Mysql数据库设计

Man*_*uel 4 mysql database database-design e-commerce

我正在使用 Mysql 和 INNODB 引擎创建电子商务的数据库结构。

第 1 点:要为客户创建多个地址,我有这个表

我是否以正确的方式做这件事?我应该如何存储默认地址(在哪个表中)?

第 2 点:我有另一个名为“Suppliers”的表,我应该将它连接到带有“supplier_address”表的地址还是有更好的方法?

第 3 点:表格城市和国家怎么样?我应该添加一些东西还是可以?也许是两者之间的另一个表中的字段“区”?

O. *_*nes 7

在我看来,你把这弄得太复杂了。没有必要让您的地址架构如此过度规范化。我见过的大多数处理多个客户地址的系统都有一个像你这样的客户表,然后有一个地址表,如下所示:

 customer_id
 address_ordinal  (small number for each customer: 0,1,2,3 etc).
 primary    (boolean)
 address_1
 address_2
 locality   (city, village, etc)
 province   (state, etc)
 postcode   (zip, postcode etc)
 country
Run Code Online (Sandbox Code Playgroud)

customer_idcustomer表的外键。主键是 ( customer_id, address_ordinal)的组合。该primary列是true地址是否为主要地址。

关于您关于供应商的问题,您可能希望创建一个名为“contacts”的公共表,并为您的客户和供应商提供 contact_ids。

如果您的系统包含一个包含(邮政编码、地区、省)行的参考表(可能是您从数据供应商处购买的东西),您可以使用它来帮助填充您的地址表。但是您应该避免强制您的地址只包含硬编码的邮政编码:这些参考表很快就会过时。