数据库结构:客户购买不同的商品

时间:2011-11-04 10:12:30

标签: sql database relational-database

我有一个存储所有商品信息及其ID的表。现在我想创建一个包含所有客户的表并记录购买的项目。什么是最好的解决方案?我想如果将它存储起来效率不高:

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

你会怎么做?

4 个答案:

答案 0 :(得分:3)

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

表客户: customer_id |用户名|密码

表产品: product_id | productName | ...

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

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

我希望这能回答你的问题

答案 1 :(得分: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

答案 2 :(得分:1)

网上有很多这种模式的例子。

但总的来说,你的数据库可能采取......的形式。

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

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

OrderLine表:一个订单行与一个订单相关......

Product表。 (一个Product将与may OrderLine s)

相关联

因此OrderLine将包含ProductIDQuantity。然后,您可以JOIN表格并制作完整的Order

答案 3 :(得分:1)

我实际上会再增加两张桌子。一个用于客户,然后一个用于他们购买的产品,如此:

客户

客户ID |用户名|密码

购买:

客户id |的ProductID |日期|等