设计一个高效的库存管理系统表结构,关键在于理清业务逻辑、保证数据一致性,并支持后续扩展。以下是基于常见业务场景的MySQL表结构设计方案。
1. 商品信息表(products)
存储商品的基本信息,是库存管理的基础。
product_id:主键,自增ID product_code:唯一商品编码(便于扫码和查询) name:商品名称 category_id:外键,关联商品分类 unit:单位(如:件、箱、千克) specification:规格(可选,如颜色、尺寸) created_at:创建时间 updated_at:更新时间2. 商品分类表(categories)
用于对商品进行分类管理,支持多级分类可额外加字段。
category_id:主键 name:分类名称 parent_id:父分类ID(为0表示一级分类)3. 仓库信息表(warehouses)
如果系统支持多个仓库,需要单独建表管理。
warehouse_id:主键 name:仓库名称 location:位置描述 contact:联系人4. 库存明细表(inventory)
记录每个商品在各个仓库中的实际库存数量。
inventory_id:主键 product_id:外键,关联商品 warehouse_id:外键,关联仓库 quantity:当前库存数量 min_stock:最低库存警戒线 max_stock:最高库存上限 updated_at:最后更新时间 设置唯一索引:(product_id, warehouse_id)5. 库存操作流水表(inventory_logs)
记录每一次库存变动(入库、出库、调拨等),用于追踪和审计。
log_id:主键 product_id:商品ID from_warehouse_id:来源仓库(调拨或出库时使用) to_warehouse_id:目标仓库(入库或调拨时使用) change_type:操作类型(in=入库,out=出库,transfer=调拨) quantity:变动数量 operator:操作人 remark:备注 created_at:操作时间6. 入库单与出库单(可合并为单据表)
如果需要管理完整的出入库流程,建议拆分单据主表和明细表。
stock_orders(单据主表) order_id:主键 order_type:in / out warehouse_id:仓库ID total_amount:总数量 status:状态(pending, done, canceled) operator:操作人 created_at:创建时间 updated_at:更新时间 stock_order_items(单据明细) item_id:主键 order_id:外键,关联单据 product_id:商品ID quantity:数量 remark:备注关键设计建议
使用外键约束确保数据完整性,但在高并发场景下可适当放宽外键,改用应用层控制。
库存变更必须通过事务处理,防止超卖或负库存。
给常用查询字段建立索引,如 product_code、warehouse_id、created_at 等。
日志表数据量会快速增长,可考虑按月归档或使用分区表。
基本上就这些。结构清晰、扩展性强,能满足大多数中小企业的库存管理需求。