【问题标题】:Design: How to account for a custom product in a transaction item table设计:如何在交易项目表中说明定制产品
【发布时间】:2016-06-22 12:39:18
【问题描述】:

此问题与Database Design: inventory and sales system?有关

例如一个汉堡是一个Product,它由Component面包、肉、奶酪、泡菜等组成。当这个汉堡出售时,可以通过添加/删除/修改组件来定制。

如何将此自定义项记为订单项?是否会有另一个表ProductCustomization 引用ProductComponent 以及指示定制类型的列?如果你想在Product 中修改ComponentComposition 怎么办(例如每个汉堡3 个泡菜)。

定制的一个例子是订购不含泡菜的汉堡,或者添加额外的奶酪。

【问题讨论】:

  • 也许我遗漏了一些东西,但为什么 Product 和 Component 还不够呢?可定制的产品仍然是产品。在您的示例中,您有一个带有额外奶酪的产品汉堡。
  • 是的,但是对于每个组件,都需要添加许多产品来考虑每个可能的定制。此外,例如,为了改变泡菜的数量而在产品中列出三个汉堡似乎也不切实际。
  • 好的,您的汉堡产品将由 Product 表中的多行组成。每行包含一个产品 ID、组件 ID 和数量。您的组件表将包含组件 ID、组件名称(pickle)和构成组件的其他字段。
  • 这会在订单项上作为全新产品出现吗?我还会考虑任何微小的定制吗?很容易错过一个,然后客户就无法按照他们想要的方式订购汉堡。

标签: database-design


【解决方案1】:

如果您按照最初问题中链接的 ERD 进行操作。 我会制作 SKU 来移除或添加组件。根据您选择的内容,特定成分的数量可能为负数或正数。

即。

SKU:无泡菜价格 -0.50

SKU:XTRA 泡菜价格 +0.50

您可以将其添加到任何 SALE 中,您的库存应该是正确的,并且您的销售价格也应该是正确的。

【讨论】:

    【解决方案2】:

    我的解决方案如下:

    会有一个产品表。

    产品(pid,描述)

    所以汉堡将进入产品表。 它的数据为 (Burger , "Bun burger")

    组件将有不同的表,它将保存每个组件的所有可能变化。

    组件(TypeId、描述)

    所以每个组件都将保存其所有可能的类型和描述。像 CHEESE 的值为 (CHEESE_EX, ExtraCheese) (CHEESE_N, Normal Cheese) 等

    我将多一张桌子用于定制产品

    Custom_product(Custom_prod_Name, pid, typeId, component_quantity)

    我们可以使用 Custom_product 表来组合我们想要的产品。 假设我们想要创建 custom_burg_1,那么对于要添加到此汉堡中的每个组件,Custom_product 表中将有一行与 custom_burg_1 具有相同的 custom_prod_name。

    所以 Custom_product 表看起来像:

    (custom_burg_1, burger , BUN_N,1 )
    
    (custom_burg_1, burger , MEAT_N,1 )
    
    (custom_burg_1, burger , CHEESE_EX,1 )
    
    (custom_burg_1, burger , PICKLES_N,2 )
    
    (custom_burg_2, burger , BUN_N,1 )
    
    (custom_burg_2, burger , MEAT_SP,1 )
    
    (custom_burg_2, burger , CHEESE_N,1 )
    
    (custom_burg_2, burger , PICKLES_N,3 )
    

    因此,您可以使用此值检查 custom_burg_1 和 custom_burg_1 的组成。我们还可以修改汉堡中的每个组件及其数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      相关资源
      最近更新 更多