Database design 软件设计:带有定制产品的购物车

Database design 软件设计:带有定制产品的购物车,database-design,architecture,shopping-cart,software-design,Database Design,Architecture,Shopping Cart,Software Design,我正在建立一个电子商务网站,目前,我需要设计购物车。我的要求包括有产品(如汉堡包),可能有也可能没有选择(不同种类的面包,额外的奶酪…)。 在购物车中储存产品的最佳方式是什么? 以数组形式存储感觉非常灵活,但会使计算每种类型的产品数量或按默认/自定义分类(2个汉堡,1个汉堡外加奶酪)等工作变得更加困难: 另一种选择是将它们存储为具有关联数量的对象(我在不同的购物车实现中看到了这一点): 我不知道是否有我不知道或依赖于域本身的标准方法。 非常感谢 这里有两种广泛的方法 一个是“有”。这在电子商务解

我正在建立一个电子商务网站,目前,我需要设计购物车。我的要求包括有产品(如汉堡包),可能有也可能没有选择(不同种类的面包,额外的奶酪…)。 在购物车中储存产品的最佳方式是什么? 以数组形式存储感觉非常灵活,但会使计算每种类型的产品数量或按默认/自定义分类(2个汉堡,1个汉堡外加奶酪)等工作变得更加困难:

另一种选择是将它们存储为具有关联数量的对象(我在不同的购物车实现中看到了这一点):

我不知道是否有我不知道或依赖于域本身的标准方法。
非常感谢

这里有两种广泛的方法

一个是“有”。这在电子商务解决方案中很常见,在电子商务解决方案中,商品有不同的尺寸、颜色等。如果您事先知道选项是什么(例如,没有定制选项),这种方法是合适的,并且通常与库存单位相关联-服装店会跟踪他们库存的t恤衫的S/M/L版本数量。 如果你能有效地拥有无限多的选项,或者这些选项可以定制,那么这就不是一个好的选择

在您的模型中,这将是

ProductList: [
  {
    name: "Hamburger",
    quantity: 1
  },
  {
    name: "Hamburger with cheese",
    quantity: 1
  },
]
另一个模型是“”方法,您可以将项目分组在一起,以指定订单中的每个项目。如果没有预定义的选项集,或者如果所有选项都可以定制,例如“奶酪汉堡,但不要太多奶酪”,则此选项适用

在你的模型中

ProductList: [
  {
    name: "Hamburger",
    base_product: "Hamburger",
    quantity: 1
  },
  {
    name: "Hamburger with cheese",
    base_product: "Hamburger",
    extras: 
          {
           name: "Cheese",
           amount: "A little"
           },
    quantity: 1
  },
]
产品变体相对容易使用,但确实需要您提前设置所有选项。麦当劳非常适合“产品变体”选项——您可以选择小型/中型/大型、单人/双人等。只有有限数量的“套餐”选项

另一方面,一家点菜餐厅,允许无限的菜单组合,以及特殊要求,最好使用物料清单方法

ProductList: [
  {
    name: "Hamburger",
    quantity: 1
  },
  {
    name: "Hamburger with cheese",
    quantity: 1
  },
]
ProductList: [
  {
    name: "Hamburger",
    base_product: "Hamburger",
    quantity: 1
  },
  {
    name: "Hamburger with cheese",
    base_product: "Hamburger",
    extras: 
          {
           name: "Cheese",
           amount: "A little"
           },
    quantity: 1
  },
]