Mysql 数据库设计:库存和销售系统?

Mysql 数据库设计:库存和销售系统?,mysql,database,database-design,Mysql,Database,Database Design,我需要开发一个库存和销售系统 对于库存,我需要能够跟踪理想库存水平、当前库存水平、再订购点、成本、销售价格等 库存中并非每件商品都是“可销售的”。例如,我可能想保留用于苏打水的塑料杯的库存。也就是说,每次我卖汽水时,我都需要从塑料杯的库存中减去一杯。因此,“中号可乐”实际上是塑料杯、一些餐巾纸和液体,每一种都有自己当前的库存水平、成本等 然后是“组合”的概念。也许一个1美元的中号可乐和一个3美元的汉堡包作为组合一起出售,只需3.50美元(节省0.50美元)。有人提到可乐中包括一些餐巾纸。比如说汉

我需要开发一个库存和销售系统

对于库存,我需要能够跟踪理想库存水平、当前库存水平、再订购点、成本、销售价格等

库存中并非每件商品都是“可销售的”。例如,我可能想保留用于苏打水的塑料杯的库存。也就是说,每次我卖汽水时,我都需要从塑料杯的库存中减去一杯。因此,“中号可乐”实际上是塑料杯、一些餐巾纸和液体,每一种都有自己当前的库存水平、成本等

然后是“组合”的概念。也许一个1美元的中号可乐和一个3美元的汉堡包作为组合一起出售,只需3.50美元(节省0.50美元)。有人提到可乐中包括一些餐巾纸。比如说汉堡包本身也包括餐巾纸。然而,作为一个组合,买家没有得到可口可乐和汉堡包的餐巾;相反,购买者只会得到与他/她只购买可乐一样数量的餐巾纸

对于销售系统,我需要跟踪每一笔销售,并可能保持与库存记录的关系(这意味着一旦进行了销售,我就永远无法真正删除库存中的项目——出于历史目的)。当我以1美元的价格出售一瓶“中号可乐”时,也许我应该将其细分为0.90美元的液体和0.10美元的塑料杯

当我出售一个“组合”时,也许我需要能够指定汉堡包实际售价为3美元,中号可乐仅为0.50美元(只有苏打打折以使组合更具吸引力)


这不可能是个新问题有人有什么想法(或例子)可以帮助我解决这个问题吗?我不知道如何对库存、可销售商品(尤其是组合)进行建模,以及如何记录销售额

我建议将库存表与货币核算表完全分开。例如,你给我举的例子“我知道”是荒谬的:对于你的普通快餐店来说,一杯0.90美元的可乐大约要0.05美元到0.07美元,而一杯饮料的价格不到一便士,因此可以获得0.83美元的可观利润。为什么成本加起来要0.90美元

表:

InventoryItems
字段:InventoryItemId、名称、CurrentInventoryLevel、IdealInventoryLevel

InventoryChangeRecords
字段:InventoryChangeId、InventoryItemId、Change(int)

RetailItems
字段:RetailItemId、名称、价格

RetailItemComponent
字段:RetailItemId、InventoryItemId、数量

SaleTransactions
字段:SaleTransactionId、DateTime、TotalSale

SaleTransactionItems
字段:SaleTransactionId、RetailItemId、数量

对于每次销售,应使用存储过程(或触发器)更新CurrentInventoryLevel,并将记录插入InventoryChangeRecords。通过从SaleTransal到SaleTransactionItems再到RetailItemComponent的连接,您可以轻松了解任何销售如何影响库存


如果您想以一种更强大(但我认为这是无关的)的方式进行此操作,您可以在SaleTransactionItems和InventoryChangeRecords之间创建另一个多对多表。

您正在寻找的解决方案将依赖于会计样式模型和两个BOM表。您的主要实体类型包括:

  • SKU这是您销售的物品列表。它的属性将包括产品描述和当前零售价格等内容。您可以获得花式的价格,并将其分解到一个子表中,该子表随时间给出价格。让我们假设你现在要把皱纹去掉。有些SKU可以是您所说的那种“组合”

  • 组件这是构成SKU的物品列表,例如餐巾纸、杯子、面包、馅饼、可乐糖浆等。正如SKU有描述和价格一样,组件也有描述和单位成本。(也可以在子表中进行历史记录。)此表通常也是存储ROP的位置

  • 组合这是一个BOM表,它将SKU和组件相交,并说明每个组件的多少个单元进入SKU的一个单元。您还需要其中一个将两个SKU相交(对于组合)。您可以使用一个表或两个表进行此操作。两张桌子会让纯粹主义者高兴,一张桌子从程序员的角度来说是权宜之计

  • 销售这是一个交易表,提供用于记录一个或多个SKU销售的标题。此表包含事务日期、出纳ID和其他标题项

  • SALE\u ITEM这是一个交易明细表,其中包括销售的SKU(以及数量)和价格。多少是销售时SKU价格的非规范化,但也可能包括对价格的任何特殊覆盖。对SKU实际收取的价格进行非规范化是一件好事,因为有人可能会编辑SKU中的标价,然后您将无法了解当时该商品实际收取了多少费用

  • 库存\u HDR这是一个交易表,在概念上与销售类似,但它是库存交易的标题,例如接收新库存、用完库存(如在销售中)和库存调整。同样,这将是日期/描述的内容,但如果您愿意,它可以包括一个直接链接到销售商品的库存变动。你不必这样做,但有些人喜欢在逐笔交易的基础上建立收入和成本之间的联系

  • 库存\u DTL这是库存交易的详细信息。这表示哪个组件要进出,进出的数量,以及要进行的库存交易