遇到这样问题,你如何设计数据库?
最近遇到一很烦的问题,想了好久都没想出来,请各位高手指点一下。
一个类似于进销存的系统,进货的时候应该是在库存表里更新相应商品的数量吧,那么如果这个商品是以前仓库里没有的东西呢?或者说仓库内有跟这个商品相同的物品,但是进价不同,这样肯定不能把它当做原有商品去更新数量了,但是如果所有信息都跟某个商品的信息一样,如果是进了这样的货,应该就要更新原有记录的数量了,那么每次进货用户输入进货信息的时间,怎么判断是insert一条记录还是update一条原有记录呢?
这两天想这个都想烦死了,希望各位朋友指点一下啊,先谢过~~~
------解决方案--------------------每条记录都有一个唯一索引键,可以使用自增加列,再有就是商品编号和商品名称,当客户对一个商品进行操作时,那么把这个商品的编号传到一个方法里,根据编号把去数据库查询,如果能查到,说明以前有过添加,那么把查询到的记录的各个列和新添加的值进行比对,如果是相同的,那么调用update方法用添加的新值更新原有值,如果没有查询到记录,那么调用insert,这个判断可以使用datareader,if (dr.read())的方法
------解决方案--------------------也可以直接用新商品的信息作为查询条件,去数据库查询,如果查到,就进行update操作,查不到就进行insert操作.只是查询条件多了点.用存储过程可能好做点.也快.
------解决方案--------------------真的很烦。
------解决方案--------------------很简单,就多了几个sql的判断步骤。
做成存储过程自动判断处理。
------解决方案--------------------其实是先有业务后有程序的,你可以问问客户是怎么处理这样的事情的。
你遇到的这个问题,客户早就遇到了。看看客户是怎么处理的。
另外你做的程序要和客户的“兼容”,有的客户会要求你的程序和他们原来的处理方式是一样的,而不是按照你的理解的方式。
多了解业务逻辑,而不是坐在电脑前遐想。
其实是很复杂的,
比如同一个产品,
第一批进了 10个红色的,20个蓝色的。单价是10元。
第二批进了 20个红色的,30个蓝色的。单价是10.5元。
这时有人要买 15个红色的,你怎么出货,单价怎么计算?呵呵。
不知道你是为客户开发,还是要做一个进销存的软件?
------解决方案--------------------一个类似于进销存的系统,进货的时候应该是在库存表里更新相应商品的数量吧,那么如果这个商品是以前仓库里没有的东西呢?或者说仓库内有跟这个商品相同的物品,但是进价不同,这样肯定不能把它当做原有商品去更新数量了,但是如果所有信息都跟某个商品的信息一样,如果是进了这样的货,应该就要更新原有记录的数量了,那么每次进货用户输入进货信息的时间,怎么判断是insert一条记录还是update一条原有记录呢?
************************
创建3张数据表可以解决你的需求,这3张表中的字段简单的罗列如下:
1.物品表:保存物品信息,(物品编号、物品名称、物品类别、……)
2.库存表:保存仓库中可用物品信息,(库存编号、物品编号、可用数量、……)
3.入库表(进货表):物品入库(进货)信息,(入库单编号、入库物品编号、物品批号、入库数量、入库价格、入库时间、操作员工编号、……)
1.进货的时候应该是在库存表里更新相应商品的数量吧,那么如果这个商品是以前仓库里没有的东西呢?
答:只要先在物品表中创建这种新物品,在库存表和入库表中增加该物品的相应记录
2.或者说仓库内有跟这个商品相同的物品,但是进价不同,这样肯定不能把它当做原有商品去更新数量了,
答:更新库存表中的物品的当前数量,在入库表中增加物品入库信息
3.但是如果所有信息都跟某个商品的信息一样,如果是进了这样的货,应该就要更新原有记录的数量了
答:与第2种情况进行一样的操作,使得业务简单,不需要去判断价格是否一样
4.那么每次进货用户输入进货信息的时间,怎么判断是insert一条记录还是update一条原有记录呢?
答:由第2和第3种情况可得,每次进货都进行这样的操作:update库存表中的物品的当前数量,在入库表中insert物品入库信息
当然如果是进销存系统还需要创建出库表,如果有了出库表那么库存表可以不要,由入库表和出库表中相应物品的进、出相减就可以算出物品的可用数量;当然也可以创建库存视图来完成这个相减操作。
接分!
------解决方案--------------------不知道自己应该是什么,这确实是很悲哀。不过,这与软件技术无关,你应该在asp.net以外其它论坛上问问。你可以参考:
http://www.google.com/search?q=%E4%BC%9A%E8%AE%A1%E5%87%86%E5%88%99%20%E5%BA%93%E5%AD%98%20%E6%88%90%E6%9C%AC%E6%A0%B8%E7%AE%97%E6%96%B9%E6%B3%95%20%E8%A1%8C%E4%B8%9A&hl=zh-CN&newwindow=1&rls=com.microsoft%3Aen-US&lr=&nxpt=20.897519315681585284460
------解决方案--------------------上面文章之前,要搜索一下关于商品编码等商品管理基本知识。