繁体   English   中英

产品库存库存的数据库设计(SuperMarket)

[英]Database Design for Product Inventory Stock (SuperMarket)

在过去的几年中,我制作了简单的商店应用程序,在其中制作了这样的简单产品表:

ID,Name,IDCategory,Size,Qty,buyprice,sellprice

数量字段位于产品表中,在进行交易时,我只需在该表上添加或减去它即可。

现在,在我的新超市应用程序中,我知道我需要设计一个更复杂的表格来跟踪库存商品数量,因为该产品现在具有到期日期,不同的购买价格(也许还有售价)。 这是确保财务报告准确的唯一方法,在此我们可以获取每笔交易的实际利润。

我的新产品表就像

ID,Name,IDCategory,Size,ExpirationDate,SellPrice    '(I remove qty and keep sell price to simplified and sell my item at 1 price only )

设计的问题在于,它在数据库和程序设计中也变得越来越复杂,我认为我需要应用FIFO系统,而当我想到编辑事务/返回项目等时,它也变得更加复杂。

我现在可以想象的是要使表像这样:

tblProductQty = BuyInvoiceID,Date,IDProduct,Qty

但是后来我在tblBuyTransactionDetail(*保持我的购买交易的表(如invoiceNo,SupplierID,Date,Total)和(InvoiceNo,IDProduct,Qty,BuyPrice,ExpirationDate)这样的明细表中已经意识到了这一信息)

现在我真的很困惑,我真的需要stockTable吗? 但是,如果不是这样,则意味着我需要在事务查询之间进行加减运算以获得一定数量的一种产品。

你们实际上是如何做到的? 那里所有大型超市的通用设计是什么?

注意:我目前使用access和vbnet

我知道,对于大多数erp系统,以下每个表都有单独的表格;

购买(注意购买不一定是产品)

产品交易(您将需要此来计算fifo股票价值)

销售(通常但并非总是产品)

产品详细信息(描述等)

您提到有效期。 理想情况下,应针对个人购买记录这些。

还要注意,购买和销售通常分为表头表和明细表(发票和发票行)。

两种方法都可以做到这一点,有些使用单独的归一化库存表,有些使用报告时进行计算。 两者都是正确的方法,但是下面是使用单独的“库存表”的利弊,请根据需要使用。

优点:

  1. 报告会很快。
  2. 报告逻辑将很容易。
  3. 如果您在一段时间后提供股票平仓功能,则可以通过在该表中添加一些其他列来使用同一股票表。

缺点:

  1. 单独的库存表处理更容易出错,因为与库存相关的每笔交易也都需要更新此新库存表。
  2. 如果您的应用程序中有非常频繁的库存上升和下降,那么它将影响系统的性能,因为在每次库存增加或减少时,此表都将锁定在事务中并进行更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM