日期:2014-05-17  浏览次数:20493 次

做进销存库存表怎么设计合理,求教!

--目前库存表这样设计的
/*
ID 商品编号 商品名称 库存数量 占用数量 库位 备注
1 DC182         导轨          3           0         K01
2 DC187         AK          1           0         K05  */

--出库明细表
/*
ID 出库日期 出库单号 商品编号 商品名称 订单数量 出库数量 是否已出库
1 2013/1/17 KM1301170001 DC182         导轨          1
2 2013/1/17 KM1301170001 DC187         AK          1
3 2013/1/17 KM1301170001 DC187         AK          1
*/    

/*
有以下几点不明白,谁能答疑一下,谢谢
1.库存表这样设计合理吗?
2.根据出库明细表的"商品编号"与"订单数量"去库存表占用数量,判断库存是否足够回写到出库明细表,这样合理吗?
3.要根据出库明细表生成一出库明细,怎么样生成
*/

------解决方案--------------------
个人建议:
1、不要用ID,而改成一些复合主键,如商品编号+一些字段。
2、如果你觉得编写一些功能的时候发现有难度,那要考虑一下是否有不合理的地方了。我建议主表存放一些共用信息,和一些常用的信息,这样不用每次都关联表。子表尽量存放一些历史信息和变动情况。
------解决方案--------------------
庫存表:ID,商品編號,商品名稱,庫存總數量。
庫存明細表:ID,庫存表ID,庫存數量,庫位。
進出庫明細表:ID,庫存明細表ID,進出類型(1:進,2:出),進出數量,日期時間,操作員。
訂單:ID,...。
訂單明細表:ID,...。
訂單出庫明細表:ID,訂單明細表ID,進出庫明細表ID(類型為出的)。
....
採購單:ID,...。
採購單明細表:ID,...。
採購單進庫明細表:ID,採購明細表ID,進出庫明細表ID(類型為進的)。
------解决方案--------------------
引用:
个人建议:
1、不要用ID,而改成一些复合主键,如商品编号+一些字段。
2、如果你觉得编写一些功能的时候发现有难度,那要考虑一下是否有不合理的地方了。我建议主表存放一些共用信息,和一些常用的信息,这样不用每次都关联表。子表尽量存放一些历史信息和变动情况。


用于关联,内部id要好于用户可见的编号吧
只有多系统合并时,自动递增字段才有点问题了
------解决方案--------------------
UPDATE t2
        SET 出库数量=CASE WHEN t1.库存数量-ISNULL(o.订单数量,0)<t2.订单数量 THEN t1.库存数量-ISNULL(o.订单数量,0) ELSE t2.订单数量 END
    from  
        t1
        ,t2
OUTER APPLY(SELECT 
SUM(订单数量) AS 订单数量
FROM t2 AS x
WHERE x.商品编号=t2.商品编号
AND x.ID<t2.ID
) AS o 
     Where t1.商品编号=t2.商品编号
And t2.是否已完成出库='否'