代码之家  ›  专栏  ›  技术社区  ›  Tomas Andrle

如何在网上商店保存订购物品的副本?

  •  2
  • Tomas Andrle  · 技术社区  · 15 年前

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

    保持每个订购商品的所有信息与购买时相同的最佳方式是什么?

    1. 复制到与产品表列相同的单独表中
    2. 在同一表格中复制产品,标记为不可编辑、不可查看的副本
    3. 某种类型的写时复制模式,在“实时”产品信息实际更改之前可以节省一些空间?
    4. ????

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

    4 回复  |  直到 15 年前
        1
  •  8
  •   zombat    15 年前

    如果您商店中的产品将频繁更改,那么听起来您需要的是产品版本历史记录。

    product_properties (或某事)表,带有这些属性的特定版本的时间戳。也许您的所有属性都会一直更改,在这种情况下,您可能只需要一张表就可以了。在任何情况下,您都可以假定最新的时间戳是产品的最新版本。

    当店主更新产品时,您将在中创建新记录 产品特性

    当有人进行购买时,您会在购买表中记录产品id和产品的历史/版本id。

    使用这种类型的历史记录设置,您已经规范化了产品数据,因此它不会与每个购买记录一起反复存储,并且您仍然可以获得每次购买的具体细节。

        2
  •  3
  •   Jas Panesar    15 年前

    在存储“购买时信息”时,最好只链接到sku,但实际上复制产品表的所有信息(包括定价、说明、sku等)。万一将来这些产品说明和价格发生变化,你的订单不会中断。

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

    同样,您也希望在帐户之间执行相同的操作<--&燃气轮机;命令。将订单链接到帐户ID,但存储所有实际客户信息(姓名、地址等),以便在以后更改时不会引起争议。

    您不必担心该sku的安装版本——无论当时是什么,它都是,这就是账单上的内容。这样,客户过去的所有历史记录都将保持有效。

    以上是我在SAP B1等系统中看到的,设计模式很有意义。。为了存储一些额外的信息,您可以在其他地方消除复杂性。

        3
  •  0
  •   Andrew Siemer    15 年前

    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之类的开源购物车,了解如何设置工作购物车系统。我喜欢这个特别的一个,因为它实现了许多必要的和更复杂的电子商务!

        4
  •  0
  •   EvilChookie    15 年前