gpt4 book ai didi

mysql - 数据库设计 : product and product combo

转载 作者:可可西里 更新时间:2023-11-01 07:33:30 26 4
gpt4 key购买 nike

假设我销售多个产品。有时,product 实际上是其他product 的组合。例如,假设我正在销售:

  • 热狗
  • 苏打水
  • 热狗+汽水组合

我应该如何建模这样的东西?我是否应该有一个 product 表来列出单个产品,然后是一个描述组合的 product_combo 表,以及另一个与 product 关联的表和 product_combo 来逐项列出组合中的产品?这对我来说似乎很简单。

但是,如果我想在一张表中记录所有的销售额怎么办?意思是,我不想要 product_sales 表和 product_combo_sales 表。我希望所有销售都在一张表中。我有点不确定如何以这样一种方式对产品和产品组合建模,以便以后可以在一张表中记录所有销售额。

建议?

注意:我想知道是否可以使用父子关系将产品和产品组合放在一个表中。有了一张 table ,记录销售额就不难了。我只需要实现一个业务规则,即当已经针对该组合记录了销售时编辑该产品组合,该编辑实际上会产生一个新条目。不过,可能会变得困惑。

最佳答案

这取决于您实际需要对系统执行的操作。需要跟踪库存的系统将需要了解“组合餐”需要从库存中扣除一个热狗和 32 盎司苏打水(或其他)。然而,一个只跟踪订单和美元的系统并不真正关心“进入”组合餐的内容——只关心你卖了一份并得到了报酬。

也就是说,假设您需要库存系统。您可以通过稍微更改定义来降低复杂性。考虑 (1) 库存项目和 (2) 菜单项目。您的 inventory_items 表包含您购买并作为库存跟踪的项目(热狗、苏打水等)。您的 menu_items 表包含您出售的商品(大狗套餐、热狗(仅限三明治)等)。

您可以有一些菜单项,巧合的是,它们与库存项具有相同的名称,但是对于这些菜单项,对待它们的方式与处理组合项的方式相同,并将一条记录粘贴到链接表:

 inventory_items            menu_items       recipes (menu_item, inventory, qty)
--------------- ------------ ----------
hot dog Hot Dog Hot Dog, hot dog, 1
hot dog bun Hamburger Hot Dog, hot dog bun, 1
hamburger patty (4oz) Big Dog Combo Hamburger, hamburger patty (4oz), 1
hamburger bun Soda (32oz) Hamburger, hamburger bun, 1
cola Big Dog Combo, hot dog, 1
ginger ale Big Dog Combo, hot dog bun, 1
Big Dog Combo, *soda, 32
Soda (32oz), *soda, 32

只是构建这个例子,事实证明即使是低等的热狗也有两个成分(你必须数面包),而不仅仅是一个。为了提出最简单的情况(具有单个组件的菜单项),我将 Soda 添加到菜单中。但是,考虑一下,如果您要清点非食品元素(杯子),那么即使是简单的苏打水也会有两个成分(如果您要清点吸管,则为三个)。

请注意,在这种设计中,将没有用于处理组合项和非组合项的特殊代码路径。所有与菜单相关的功能将仅使用menu_items 表,所有库存和食品准备相关功能将JOIN menu_itemsrecipes 和(如果需要其他字段)到 inventory_items

您需要对可选组件(酸菜、调味品、辣椒等)和可从不同库存项目中选择的组件(在此模型中表示为 *soda)进行特殊处理,但这应该可以帮助您入门。

关于mysql - 数据库设计 : product and product combo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com