小弟尝试一个小的程序,处理的业务是物流,要求是若干个存货的地点的商品都能被统计、查询得到,我现在所想的是为每个存货地点设计一个商品数量表格,但这样的话若是要统计总量就得"查询表1"+"查询表2"+"查询表3"....,总觉得这样设计是不正解的。然后我又想到可不可以只设立一个商品数量表格,然后对每商品每存货地点建立一条记录,这样的话统计就方便了,只是当存货地点多和商品多的时候,这个表格的记录就会很大,因为它的记录数是 (商品数*存货地点数)

解决方案 »

  1.   

    你需要设计三个表来解决这个问题:
    (1)商品:标识,商品名称(,其它与商相关的列)
    (2)仓库:标识,仓库名称(,其它与仓库相关的列)
    (3)数量:商品.标识,仓库.标识,数量 (注:在这个表中把商品.标识+仓库.标识作为主键,这样可以保证某种商品在某仓库中只能有一条记录,不会保证出现多条记录,引起混乱)相关的查询如下:
    (1)查询所有仓库所有商品的数量
         SELECT SUM(数量) FROM 数量
    (2)查询在某仓库(假设标识=IDc)中某商品(假设标识=IDs)的数量
         Select SUM(数量) FROM 数量 WHERE 商品.标识=IDs AND 仓库.标识=IDc
    (3)查询在某仓库(假设标识=IDc)中的所有商品
         Select * FROM 数量 WHERE 仓库.标识=IDc
    (4)查询在某商品(假设标识=IDs)所分布的仓库
         Select * FROM 数量 WHERE 商品.标识=IDs以上有关字段的名称仅供参考,请根据实际调整。     
         
      

  2.   

    货物ID、存货地点ID、数量仅这张表就可以满足了