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

时间:2018-03-19 09:48:03

标签: mysql database database-design

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

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

数量字段在产品表中,在交易中,我只是在该表上添加或减去它。

现在,在我的新超市应用程序中,我知道我需要设计更复杂的表来跟踪库存项目数量,因为产品现在有一个到期日,不同的buyprice(也可能是卖价)。这是确保财务报告准确的唯一方法,我们可以从中获得每笔交易的实际利润。

我的新产品表就像

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

设计的问题是它在数据库和编程设计中变得更加复杂,我认为我需要应用FIFO系统,当我考虑编辑事务/返回项目等时,它变得更加复杂。 / p>

我现在能想象的是让桌子像这样:

tblProductQty = BuyInvoiceID,Date,IDProduct,Qty

然后我在tblBuyTransactionDetail中已经意识到这些信息( *表格保留我的购买交易(如invoiceNo,SupplierID,Date,Total)和详细信息表格(InvoiceNo,IDProduct,Qty,BuyPrice,ExpirationDate))

现在我真的很困惑,我真的需要stockTable吗?但如果没有,那就意味着我需要在交易查询之间进行求和,以获得一个产品的数量。

你们真的这样做了吗?所有大型超市的常用设计是什么?

注意:我目前使用access和vbnet

2 个答案:

答案 0 :(得分:1)

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

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

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

销售(通常但不总是产品)

产品详情(说明等)

你提到了有效期。这些应该理想地针对个人购买进行记录。

另请注意,购买和销售通常分为标题表和详细信息表(发票和发票行)。

答案 1 :(得分:1)

两种方法都用于执行此操作,一些方法使用单独的De标准化库存表,一些使用报告时计算它。 两者都是正确的方法,但以下是使用单独的Stock表的利弊,请根据您的需要使用。

<强>优点:

  1. 报道速度很快。
  2. 报告逻辑很简单。
  3. 如果您在一段时间后提供库存结算功能,那么相同 可以通过在该表中添加一些其他列来使用stock表。
  4. <强>缺点:

    1. 单独的股票表处理更容易出错,因为每次交易都是如此 与股票上涨和下跌有关的还需要更新这个新股票 表也​​是如此。
    2. 如果你的股票上涨和下跌非常频繁 应用程序,然后它会影响性能 系统如每个股票加或减这个表将被锁定 交易和更新。