请教一下进出库系统的数据库设计问题

ayun00 2020-07-16 12:08:05
数据库要保存每次入库的商品数量以及该批次商品的成本

出库的时候要按照先进先出的原则 ,记录每次出库的数量和对应的成本

如果出库的时候是多个批次的库存一起出库, 还计算综合成本

我目前是设计成 一个父子表, 主表记录剩余数量,

从表记录每次出入库的数量和改批次的成本

出库的时候 查询剩余数量不为0的入库记录, 然后循环取出合适数量的记录,计算成本, 然后在从表里插入一条出库的记录,并扣除已有的入库记录中的剩余数量.

总感觉这样计算不合理, 有大佬们来指点下吗 ?

...全文
941 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
跟商品相关的客户大类还有至少30个以上 --> 跟商品相关的企业管理核算科目大类还有至少30个以上
  • 打赏
  • 举报
回复
在实际企业中,由于各类生产经营活动中都需要快速获得一些时间相关的信息,所以通常要“日清月结”。例如库存要随时获得每一天的剩余数量和剩余金额,因为生产经营时随时要频繁查询指定日期的进货成本、销售成本、库存成本、优惠折扣成本、给销售员佣金成本、应付而未付的费用等等等等。你把一堆东西一股脑地扔在“库存表”里,这就成了集中的一个大垃圾。你需要忘记“数据库”这种低级的计算机领域的东西,眼中有业务领域的事务作为隐喻,先把业务领域知识搞明白高透,按照业务领域的一千多年的习惯体系去理解流程、建你的表。尽量避免按照想当然的“数据库”去本末倒置地去处理业务。
  • 打赏
  • 举报
回复
这其实跟“数据库”没啥关系。这是 UML 或者是 Class 表达问题,更是一个领域模型问题。要去企业看看最基本的账本,要学管理学,要在实际的帐簿上几张。千万别拿着一点编程知识想当然。

至少帐簿分为两种。一种是总分类账,它记录剩余数量和剩余金额;另一种是明细账,它记录每一笔“独立事件”的发生数量、发生金额、过账剩余数量、过账剩余金额。实际上这两种之间也没有什么“主-从”关系,而是通过核算的 Key 关联的。比如说“库存-商品342423-......其它核算科目”跟“进货-商品342423-......其它核算科目”与“出货-商品342423-......其它核算科目”的 Key 是存在关联的,但是你不能说后两者跟前者是“主-从”关系。实际上跟商品相关的客户大类还有至少30个以上,而你只知道3个,对企业商品管理流程的知识所知到的还只有不到十分之一。

数据库不过是存数据的地方。在数据库表上面有好几个层次,决定了不管你用不用关系数据库(或者是 NoSql 数据库),用内存,文本文件,或者别的什么,你都要懂得同样的领域模型。写出领域模型的 UML 图,Class 代码。而更关键地是去实际拿企业的帐簿实习一段时间
八爻老骥 2020-07-16
  • 打赏
  • 举报
回复
出入库肯定要分开的,入库数量肯定不能减的,这是原始记录,你减掉了事后怎么对账?减只能减库存,入库同步增加库存,出库同步减少库存,且要记好出库信息。这样即使库存不准,也可以通过出入库的记录来校准。其实可以参考具体出入库的纸质单据,分析一下哪些是原始数据,哪些是计算数据,原始数据都要单独建表保存。
wanghui0380 2020-07-16
  • 打赏
  • 举报
回复
合适不合适别问我们,请咨询专业会计他们如何计算成本的, 至于扣除数量,俺们是不扣的,俺们一般只是在批次记录子表增减修订。 只有实际盘存才真正转结数量
正怒月神 2020-07-16
  • 打赏
  • 举报
回复
我们之前还有锁定库存和预出库的概念。 锁定库存也就是,今天下了出库指令,但是实际还没有出库。 这个时候,你需要保证下次出库时,这个数量是够出库的。 而不是 2个出库指令同时出现,结果因为第一个出了,导致剩余数量不够第二次出库。 预出库是其实货还没入库。 但是预计可能过两天就货到了入库。 那么这个时候,他可以先下一个出库指令,预计在第三天或者之后出库。 所以这都是看业务逻辑的。
正怒月神 2020-07-16
  • 打赏
  • 举报
回复
这里只能说一下,为什么出库和入库要分开。 因为出库,可能需要关联入库的批次id。 你要体现出你从哪个入库批次出的。 并且有些erp还具有 无批次出库。也就是随便扫码出库,不关心先进先出的出库顺序。 所以光谈论怎么建表是很空洞的。 要结合具体业务
正怒月神 2020-07-16
  • 打赏
  • 举报
回复
分开存,出库,入库,库存。这个没什么问题。 其实具体要看你们业务。 比如你的先进先出,你的多批次出入库等等。都是业务上的规则。 根据业务产生模型和数据库表。
耗子哭死猫 2020-07-16
  • 打赏
  • 举报
回复
入库的时候写入入库表,属性就是那些供应商、商品名、数量、什么的。 ,同时写入库存表中,因为是有相同产品不同批次的,出库也一样,写入库存表,再写出库表; 库存表要有个状态是表示出库还是入库,盘点能找出来。
耗子哭死猫 2020-07-16
  • 打赏
  • 举报
回复
入库是一个表,库存是一个表,出库也是一个表。具体参考WMS系统。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧