2011-11-04 73 views
0

我有一张储存所有商品信息及其ID的表格。现在我想与所有顾客一起创建一张桌子并记录购买的物品。什么是最好的解决方案?我想这是不是很高效,如果它像这样存储:数据库结构:客户购买不同的商品

|customer_id | username | password | boughtproducts | 
| 1   | herbert |123  |productid1,pid2...| 

你会怎么做呢?

+0

你显示的表看起来不是一个好的解决方案。例如,什么数据类型是“被收购的产品”? –

+1

@Droider,我建议看看数据库规范化(例如http://en.wikipedia.org/wiki/Database_normalization) - 这应该解释迄今为止提供的答案,以及为什么他们是一个好主意。 –

回答

3

更简单的方法来处理这种情况如下:

表的客户: CUSTOMER_ID |用户名|密码

表产品: product_id | productName | ...

表销售: sale_id | customer_id | product_id |销售时间

这样,使用表格'销售',您将存储每个客户和产品的所有销售额。 'Sales'中的customer_id是'Customer'表中的外键,'Sales'中的product_id是来自'Product'表的外键。

我希望这回答了你的问题

1
have one Customers Table // store details of the customers 

have once Products Table // store details of the products 

have one Customers_products Table 

|primary_key|customer_id | product_id | 
|   | 1   | 1   | 
|   | 1   | 2   | 

客户与产品之间存在多对多关系。一个客户可以购买许多产品,同样一个产品可以被许多客户购买。因此,实现多对多关系的标准方法是拥有多个表,并且这个新表将包含来自两个表的主键。

主键可以是自动增量,或两个外键的composite key

1

有在网站上提供这种类型的模式的例子不胜枚举。

但在总结你的数据库可能采取的形式...

Customer表:一个客户可以有很多..

Order表:一个订单可以有很多..

OrderLine表:一个命令行将涉及一个...

Product表。 (和一个Product会涉及到可能OrderLine S)

所以OrderLine将包含ProductIDQuantity。然后你可以JOIN表格,并作出完整的Order

1

我实际上会跟2个表。一个用于客户再进行第二次为他们买了,像这样的产品:

客户

客户ID |用户名|密码

采购:

客户ID |产品ID |日期| etc

相关问题