2009-06-30 55 views
2

人们在网上商店买东西。如何在网上商店中保存订购商品的副本?

我把他们的订单,并将它们保存到数据库。对于每个订购的商品,我需要数量和有关该商品的信息。至少,我需要保存每个项目的当前价格和名称,但我更愿意保存所有内容。

问题出在这里... 什么是最好的方式来保存每个订购商品的所有信息,因为它是在购买时?

  1. 复制到一个单独的表具有相同的列产品表
  2. 使产品的副本在同一个表,标记为不可编辑的,不可见的副本
  3. 某种副本上写模式可以节省一些空间,直到“实时”产品信息实际发生改变?
  4. ?????

为简单起见,我们假设所有的产品信息保存在一个表。

回答

7

如果是产品在你的店铺要经常改变,那么这听起来像你需要的是一个产品版本历史记录。

基本上,您应该尝试识别要频繁更改的所有商品项目的所有属性/字段,并将它们放入单独的product_properties(或其他)表格中,并为该特定版本的这些属性设置时间戳。也许所有的属性都会改变,在这种情况下,你可能会得到一张表。无论如何,您可以假设最新的时间戳是该产品的最新版本。

当店主更新了产品,你在product_properties创建一个新的纪录,所有更改的属性,并更新主要产品表记录指向这个新的记录(或只是简单地拔出,在显示时间的最新时间戳)。

当有人购买,您记录产品ID和购买表格中的产品的历史/版本ID。

对于这种类型的历史记录设置的,你已经标准化的产品数据,所以它不是每次购买记录存储一遍又一遍,你仍然可以得到每次购买的具体细节。

0

通常的ECOM商店有以下表格:

accounts 
products 
order 
orderdetails 

通常有更多的这种很多。但这是基础。

Account = the user shopping in the store 
Product = the product description, price, etc. 
Order = the high level order details such as purchase date, shipping/billing address 
OrderDetails = the low level order details such as price at time of purchase, quantity, etc. 

看一看诸如DashCommerce这样的开源购物车,以了解如何设置工作购物车系统。我喜欢这个特殊的一个,因为它实现了许多必需的和更复杂的电子商务!

+0

“如购买时的价格” - 这正是我的问题的重点。如果我想存储关于每个购买产品的所有信息(如购买时的快照),该怎么办? 我已经建立了电子商务网站之前,让我有种知道的选项,但我要问这个问题,因为我很好奇,如果有一个常用的首选解决方案。 – 2009-06-30 23:44:17

2

这是一个好主意,存储“在采购信息的时间”只能链接到一个SKU ---但在产品表的所有信息实际上复制(包括价格,描述,SKU等)的时。如果将来这些产品说明和价格发生变化,您拥有的订单不会中断。

我通常会将产品按产品ID链接,然后再将所有产品数据复制到订单明细中。

同样,您将希望在帐户< - >订单之间执行同样的操作。链接一个以帐户ID,但存储所有的实际客户信息(姓名,地址等),因此它可以,如果它被改变以后无法争议等

你会不会担心这这个SKU的版本被设置为 - 无论它当时是什么,它都是,这就是结算的。这样,客户的所有历史记录都会保持有效。

如果您想要另一个层,您可能需要对帐户和产品表进行跟踪更改,以便知道什么时候更改过。

以上是我在像SAP B1和设计模式,系统看到有意义。对于存储你在其他地方获得摆脱复杂的一些额外的信息。

0

Jas Panesar的SKU理念是相当不错的。但是,如果您正在寻找更简单的方法,则可以将信息存储在数组中,将其序列化,然后将序列化结果存储在数据库中的单个字段中。

虽然这不是一样强大的解决方案,但它给你快速,方便地抓取信息而不需要重新设计你的整个数据库结构的能力。

+0

如果可以的话,通常要避免DB中的任何类型的序列化数据。它成为维护头痛,并阻止了大量有用的SQL查询到串行化数据中。 – 2009-07-01 00:15:36