最近在做一个仓库管理程序,在数据库设计时遇到了问题,想请教各位,欢迎大家发表自己的意见。
  我的仓库管理分为入库,出库,库存查询,还有每天的明细报表及月报表和年报表,现在我在做数据库设计,打算建一个入库表,一个出库表,一个库存表。入库时添加入库表中的数据同时更新库存表,出库时添加出库表同时更新库存表,请问这样设计有没有问题?
  如果同时操用入库表和库存表,用事务能不能保证数据的一致性?
  如果采用三个表的形式来设计数据库,请问每个月以及每年的数据汇总要不要保存下来? 

解决方案 »

  1.   

    1.一个入库表,一个出库表,一个库存表
    没问题,我之前做的一个系统就是这样建表.功能区分很清楚,以后查询方便.
    有一个问题,楼主需要考虑,就是如果修改入库表或者出库表的数据,库存如何计算.  2.如果同时操用入库表和库存表,用事务能不能保证数据的一致性?
    当然可以. VB中用connection对象的BeginTrans,CommitTrans,RollbackTrans可以很简单的解决这个问题.3.如果采用三个表的形式来设计数据库,请问每个月以及每年的数据汇总要不要保存下来? 
    要不要保存下来,这个是客户需求问题,他说要就要,不要就不要. 当然如果数据量是巨大的,另外建几个历史表,保存历史数据, 这样能够提高查询性能
      

  2.   

    3.如果采用三个表的形式来设计数据库,请问每个月以及每年的数据汇总要不要保存下来?
    如果查询速度没问题,没必要,每个月的数据都保存, 它想查询哪个月,直接用SQL返回查询结果就行. 如果数据量是巨大的,为了更好的查询速度,另建一个表保存月报表,年报表的数据 是好的选择. 总之保存报表数据的目的就是为了提高查询速度. 如果你认为速度没问题,没必要建
      

  3.   

    m:
    1.我的仓库管理分为入库,出库,库存查询,还有每天的明细报表及月报表和年报表,现在我在做数据库设计,打算建一个入库表,一个出库表,一个库存表。入库时添加入库表中的数据同时更新库存表,出库时添加出库表同时更新库存表,请问这样设计有没有问题?
      f:这样设计是老土的单机模式思想,网络版库存不错才怪;
      123:应该没有问题。数据库应该保留最基本的信息。只有在确实可以提供效率的情况下,才保留冗余数据。
      f:Ok,冗不冗余就要靠设计经验才把握的好!2.如果同时操用入库表和库存表,用事务能不能保证数据的一致性?
      f:写库逻辑是一致的,但多用户并发逻辑就很难保证;3.如果采用三个表的形式来设计数据库,请问每个月以及每年的数据汇总要不要保存下来?
      c:一定需要有个结存表,就是要将这个月的库存保存起来,因为你做月报表的时候需要:
         上月库存 本月收入 本月发出 本月结存
      L:要不要保存下来,这个是客户需求问题,他说要就要,不要就不要. 当然如果数据量是巨大的,另外建几个历史表,保存历史数据, 这样能够提高查询性能;如果查询速度没问题,没必要,每个月的数据都保存, 它想查询哪个月,直接用SQL返回查询结果就行. 如果数据量是巨大的,为了更好的查询速度,另建一个表保存月报表,年报表的数据 是好的选择. 总之保存报表数据的目的就是为了提高查询速度. 如果你认为速度没问题,没必要建;如果查询速度没问题,没必要,每个月的数据都保存, 它想查询哪个月,直接用SQL返回查询结果就行. 如果数据量是巨大的,为了更好的查询速度,另建一个表保存月报表,年报表的数据 是好的选择. 总之保存报表数据的目的就是为了提高查询速度. 如果你认为速度没问题,没必要建.
      f:拍案同意c,没有这个就不成完成的库存程序了,它是对业务单据的归集,提供财务汇总入帐依据;4.请问要不要用到触发器? 还是在VB代码中直接用事务就行了?
      L:可以. 用触发器的话,可以减少你写代码的时间.
      f:我个人从来不用触发器,因为明显因求快而将程序逻辑生硬地分开了不同的存方点,当维护时要看代码之余又得查服务器过程,烦死人,不知节省了什么时间呢;5.l:有一个问题,楼主需要考虑,就是如果修改入库表或者出库表的数据,库存如何计算.
    -----------------------------------------
    这种问题会在什么情况下发生?你是说退货等? 按正常的流程是不能修改的,如果是退货会有其它的模块来处理
      f:我个人觉得不能修改那将导至用户超级反感,因为未月结前的一切东西对于有权人士来说都应该可以修改!要知道你的设计太理想化了,用户不是机器,会录入错误,如果每每请示上级退货操作,那你得亲身去体会一下其中的味道了!6.如果采用两个表来做呢,一个入库,一个出库,所有的报表和库存查询都临时查出来,用这种方式怎么样? 就是增加服务器的负担和每次的查询时间吧
      f:如果是单一张表,我觉得查询起来简单点且快些!这种方法可行,一般2秒可查5000条存货库存数!