设计一个进销存的数据库。这样就会在入库时,同一商品会有不同供货商和供货时段,产生不同的入库价格。
比如:
第一次入库 10 个 A 商品, 入库时单价为 10 元,对应供应商 1 号。
第二次入库 20 个 A 商品, 入库单价为 20 元, 对应供应商 2 号。
这样就会有 30 个 A 商品。
目前我就用的笨办法。 即只用一个 merchandise
表。 第一次和第二次入库作为两个条目。分别对应不同的供应商的批次。 但这样势必会造成在查商品库存时需要额外的查询。同样在出库时,也会有重复的条目。即会出现 A(1)
商品和 A(2)
商品。 虽然都是 A
商品。但是会出现重复。
请问如何设计以回避这种情况呢?
1
Stoulla OP Emm,即使是将这个表拆成 3 个表。 即一个 merchandise 表;一个 price ; 另一个 merchan_price 表用于链接。 这样在出库的时候,就需要先查询库存,然后再进行出库,这样就要维护一个顺序,比如采用先进先出。以问题中的例子为例,假如出库 25 件 A 商品, 则需要修改 merchandise 表,删除其中第一个条目,再修改第二个条目。 这样感觉挺蠢的,有没有优美一些的实现方式呢?
|
2
kxboy 2020-02-15 20:56:41 +08:00 via Android
不懂数据库设计,但是经历过好几次次进销存 ERP 的项目实施上线,在生产制造业待过好几年,也算是进销存深度用户了。感觉问这个问题好像是业务逻辑没搞明白。
就个人在业务实操中遇到的情况,主要看你的商品需不需要启动批次管理吧? 有些商品要遵循有效期管理,或者先进先出原则,或者严格区分批次,不同批次产品不得混用等等原因,这种在查库存的时候就是要体现不同批号 A1 A2,然后对不同批次产品汇总查询。这种产品入库和出库都要十分注意批次区分的,批次跟规格属性同样重要,多个条目库存是对的,货位管理也要区分批次,不是一个批次,在仓库管理中都不是同一个产品,如果混到一块反而不对了。 如果是不需要批号管理的产品,那就更简单了,每个产品在库存里只有一条,是加到一起的。 另外一般管理批次价格都是在采购单据里控制的,批次管理是在入库单据中控制的,入库甚至都不需要体现价格。同一供应商不同批次不同价格,不同供应商不同价格,这个不要太常见。 说的不一定对,不知道有没有说到点上。 |
3
imn1 2020-02-15 21:16:26 +08:00
问题中所述,最主要是出库逻辑没定好
例如到期先出,例如生鲜等有保质期的 价低先出,例如保证盈利 量少先出,例如尽快完成一个供应商订单,尾款结算,资金回笼 …… 反正这些逻辑,理应由业务决定 另外不必删除啊,存量字段置零则可,定期批量移走存量为零的到历史数据库 |
4
Stoulla OP @kxboy 感谢回复!非常有帮助。确实我只考虑了统计库存和出库时的方便,没考虑业务逻辑的正确性。
但我还是有些好奇,是否有数据库的相关设计规范用于解决这一类问题呢?毕竟我自己想的解决方式实在是太过于丑陋了一些。 |
5
Stoulla OP @imn1 有道理。我是觉得,我这样设计数据库,会导致修改的地方太多了一些,而且要先查总量再修改多个条目,主要是觉得实现太丑了,想请教请教下有没有什么有趣的设计方式。
另外业务逻辑,可以采用最简单的先进先出,然后出库价格为入库价格*1.2 之类的简化版。 不过确实我这业务逻辑有点错到姥姥家的感觉- - |
6
lxk11153 2020-02-15 21:34:19 +08:00
如下可否:
1. 商品表 A 字段-name 字段-库存 2. 供应商表 C 字段-name 3. 出入库表 B 字段-数量(正负或者单独加字段区别出入库) 字段-单价 字段-商品 字段-供应商 /卖给谁 |
7
kxboy 2020-02-15 23:48:26 +08:00 via Android
@Stoulla 我在实际业务中,启用批次管理的项目和不启用批次管理的项目都做过。
关于价格和批次之间的关系,也是要根据实际业务来,这个应该也没有什么规范。 我看了你下面的一些回复,我猜测你是应该比较纠结如何计算库存成本的问题吧?我简单说下我们原来的方案吧! 如果是启用批次管理的产品,入库的时候,可以把采购的成本价格通过入库单和批次绑定,这样库存表里每个批次都有个固定的成本价,财务上比较清楚,无论采用什么出库原则,都是可以算的明明白白,这种对仓库实际业务操作比较麻烦,每次出入库都要注意批号。 如果不需要启用批次管理的业务逻辑,一般仓库价格成本不会算的特别准确,财务上可能只会通过一个“参考价格”来估算库存成本,这个参考价格可能是通过历史采购价,或者最近采购价,平均采购价,先进先出原则加权平均计算成本价等多种方式来定,看老板需求了。这种情况库存表一般只管理库存数量不管理价格,价格通过采购订单表管理,或者单独出一个价格表然后去单独计算参考成本价格。这个定价原则,多是财务或老板来定。 进销存很多时候,也是财务和业务部门较量的一个过程。有的公司重业务效率,实操怎么简便怎么来,有的公司重财务,财务数据一个数字都不能错。 无论是哪种处理方式,最终财务上都有方法去处理的,关键是这个活派给谁干的事情。还是应该从业务上出发考虑多些。 |
8
akira 2020-02-16 03:40:14 +08:00
入库是入库,库存是库存,出库是出库
|