某连锁超市需要设计实现一个仓库管理系统,要求每个仓库可以有多名仓库管理员,每个仓库管理员只负责管理一个仓库,同时每个仓库都配备了一名仓库主管;不同的仓库存放的是不同类型的货品,每种货品只存放在固定的仓库中;定期采购的货品会由当天值班的仓库管理员进行登记入库,若超市中某种货品短缺,去仓库提取货品时,也需由当天值班的仓库管理员进行登记出库。通过需求分析,设计该系统所需的仓库管理数据库共有 5 个基本表:
- 管理员信息表(ManagerInfo)
- 仓库信息表(WarehouseInfo)
- 货品信息表(ProductInfo)
- 入库清单表(InList)
- 出库清单表(OutList)
1、管理员信息表(ManagerInfo)用来保存仓库管理员的相关信息
序号 | 字段名 | 字段类型 | 字段长度 | 字段中文名 | 备注 |
1 | Mno | CHAR | 3 | 管理员编号 | 主键 |
2 | Mname | VARCHAR | 10 | 管理员姓名 | 非空 |
3 | Mgender | CHAR | 1 | 管理员性别 | 默认’男’ |
4 | Mbirhdate | DATE | 管理员出生日期 | ||
5 | Mtelephone | CHAR | 11 | 管理员电话 | 非空 |
6 | Mhiredate | DATE | 入职日期 | ||
7 | Wno | CHAR | 3 | 管理仓库编号 | 外键 |
CREATE TABLE IF NOT EXISTS ManagerInfo (Mno CHAR(3) PRIMARY KEY COMMENT '管理员编号',Mname VARCHAR(10) NOT NULL COMMENT '管理员姓名',Mgender CHAR(1) DEFAULT '男' COMMENT '管理员性别',Mbirthdate DATE COMMENT '管理员出生日期',Mtelephone CHAR(11) NOT NULL COMMENT '管理员电话',Mhiredate DATE COMMENT '入职日期',Wno CHAR(3) COMMENT '管理仓库编号'
);ALTER TABLE ManagerInfo
ADD CONSTRAINT fk_WarehouseInfo
FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno);
示例数据如下图所示:
INSERT INTO ManagerInfo (Mno, Mname, Mgender, Mbirthdate, Mtelephone, Mhiredate, Wno)
VALUES ('M01', '吴腾雨', '男', '1994-12-08', '15912345678', '2020-03-15', 'W01');INSERT INTO ManagerInfo (Mno, Mname, Mgender, Mbirthdate, Mtelephone, Mhiredate, Wno)
VALUES ('M02', '徐慧文', '女', '1997-02-18', '13623456789', '2020-03-15', 'W01');INSERT INTO ManagerInfo (Mno, Mname, Mgender, Mbirthdate, Mtelephone, Mhiredate, Wno)
VALUES ('M03', '唐康勇', '男', '1994-05-29', '13313579864', '2020-03-15', 'W02');
2、仓库信息表(WarehouseInfo)用来保存仓库的相关信息
序号 | 字段名 | 字段类型 | 字段长度 | 字段中文名 | 备注 |
1 | Wno | CHAR | 3 | 仓库编号 | 主键 |
2 | Wname | VARCHAR | 10 | 仓库名称 | 非空 |
3 | Wtype | VARCHAR | 7 | 仓库类别 | |
4 | Waddress | VARCHAR | 30 | 仓库地址 | |
5 | Wcharge | CHAR | 3 | 仓库主管 | 外键 |
CREATE TABLE IF NOT EXISTS WarehouseInfo (Wno CHAR(3) PRIMARY KEY COMMENT '仓库编号',Wname VARCHAR(10) NOT NULL COMMENT '仓库名称',Wtype VARCHAR(7) COMMENT '仓库类别',Waddress VARCHAR(30) COMMENT '仓库地址',Wcharge CHAR(3) COMMENT '仓库主管'
);ALTER TABLE WarehouseInfo
ADD CONSTRAINT FK_Warehouse_Manager
FOREIGN KEY (Wcharge) REFERENCES ManagerInfo (Mno);
示例数据如下图所示:
INSERT INTO WarehouseInfo (Wno, Wname, Wtype, Waddress, Wcharge)
VALUES ('W01', '仓库01', '食品类', '中南大街26号仓库', 'M01');INSERT INTO WarehouseInfo (Wno, Wname, Wtype, Waddress, Wcharge)
VALUES ('W02', '仓库02', '粮油类', '中南大街30号仓库', 'M03');INSERT INTO WarehouseInfo (Wno, Wname, Wtype, Waddress, Wcharge)
VALUES ('W03', '仓库03', '服装类', '三里屯12号仓库', 'M06');
3、货品信息表(ProductInfo)用来保存货品的相关信息
序号 | 字段名 | 字段类型 | 字段长度 | 字段中文名 | 备注 |
1 | Pno | CHAR | 8 | 货品编号 | 主键 |
2 | Pname | VARCHAR | 30 | 货品名称 | 非空 |
3 | Ptype | VARCHAR | 8 | 货品类别 | |
4 | Pprice | FLOAT | 货品售价 | ||
5 | Punit | VARCHAR | 10 | 货品单位 | |
6 | Pweight | VARCHAR | 10 | 货品重量 | |
7 | Pmanufacture | VARCHAR | 30 | 货品生产厂商 | |
8 | Pguaranteedate | VARCHAR | 8 | 货品保质期 | |
9 | Wno | CHAR | 3 | 存放仓库编号 | 外键 |
10 | Pstock | INT | 货品库存量 |
CREATE TABLE IF NOT EXISTS ProductInfo (Pno CHAR(8) PRIMARY KEY COMMENT '货品编号',Pname VARCHAR(30) NOT NULL COMMENT '货品名称',Ptype VARCHAR(8) COMMENT '货品类别',Pprice FLOAT COMMENT '货品售价',Punit VARCHAR(10) COMMENT '货品单位',Pweight VARCHAR(10) COMMENT '货品重量',Pmanufacture VARCHAR(30) COMMENT '货品生产厂商',Pguaranteedate VARCHAR(8) COMMENT '货品保质期',Wno CHAR(3) COMMENT '存放仓库编号',Pstock INT COMMENT '货品库存量'
);ALTER TABLE ProductInfo
ADD CONSTRAINT FK_Product_Warehouse
FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno);
INSERT INTO ProductInfo (Pno, Pname, Ptype, Pprice, Punit, Pweight, Pmanufacture, Pguaranteedate, Wno, Pstock)
VALUES ('10010001', '雀巢咖啡1+2原味三合一速溶咖啡粉', '饮品', 60.00, '盒(45+5)', '750g', '东莞雀巢有限公司', '18个月', 'W01', 24);INSERT INTO ProductInfo (Pno, Pname, Ptype, Pprice, Punit, Pweight, Pmanufacture, Pguaranteedate, Wno, Pstock)
VALUES ('10010002', '100%果汁苹果汁', '饮品', 5.20, '瓶', '200ml', '北京汇源生物科技有限公司', '6个月', 'W01', 46);INSERT INTO ProductInfo (Pno, Pname, Ptype, Pprice, Punit, Pweight, Pmanufacture, Pguaranteedate, Wno, Pstock)
VALUES ('10010003', '特正宗有机五常大米原粮稻花香2号', '粮油', 150.00, '袋', '5kg', '五常米磐达米业有限公司', '12个月', 'W02', 40);
4、入库清单表(InList)用来保存各个仓库货品入库的相关信息
序号 | 字段名 | 字段类型 | 字段长度 | 字段中文名 | 备注 |
1 | Iid | 自动编号 | 入库序号 | 主键 | |
2 | Pno | CHAR | 8 | 货品编号 | 外键 |
3 | Wno | CHAR | 3 | 仓库编号 | 外键 |
4 | Mno | CHAR | 3 | 管理员编号 | 外键 |
5 | Idate | DATE | 入库日期 | ||
6 | Isupplier | VARCHAR | 30 | 供应商名称 | |
7 | Iprice | FLOAT | 入库单价 | ||
8 | Inum | INT | 入库数量 |
CREATE TABLE IF NOT EXISTS InList (Iid INT AUTO_INCREMENT PRIMARY KEY COMMENT '入库序号',Pno CHAR(8) COMMENT '货品编号',Wno CHAR(3) COMMENT '仓库编号',Mno CHAR(3) COMMENT '管理员编号',Idate DATE COMMENT '入库日期',Isupplier VARCHAR(30) COMMENT '供应商名称',Iprice FLOAT COMMENT '入库单价',Inum INT COMMENT '入库数量'
);ALTER TABLE InList
ADD CONSTRAINT FK_InList_Product
FOREIGN KEY (Pno) REFERENCES ProductInfo(Pno);ALTER TABLE InList
ADD CONSTRAINT FK_InList_Warehouse
FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno);ALTER TABLE InList
ADD CONSTRAINT FK_InList_Manager
FOREIGN KEY (Mno) REFERENCES ManagerInfo(Mno);
示例数据如下图所示:
INSERT INTO WarehousingInfo (EntryNo, ProductNo, WarehouseNo, OperatorNo, EntryDate, SupplierName, EntryPrice, EntryQuantity)
VALUES (1, '10020001', 'W02', 'M03', '2020-03-17', '健康粮食生产基地字', 24.00, 100);INSERT INTO WarehousingInfo (EntryNo, ProductNo, WarehouseNo, OperatorNo, EntryDate, SupplierName, EntryPrice, EntryQuantity)
VALUES (2, '10010001', 'W01', 'M01', '2020-03-18', '字一饮料公司', 30.00, 80);INSERT INTO WarehousingInfo (EntryNo, ProductNo, WarehouseNo, OperatorNo, EntryDate, SupplierName, EntryPrice, EntryQuantity)
VALUES (3, '10010002', 'W01', 'M01', '2020-03-18', '字一饮料公司', 3.60, 150);
5、出库清单表(OutList)用来保存货品出库的相关信息
序号 | 字段名 | 字段类型 | 字段长度 | 字段中文名 | 备注 |
1 | Oid | 自动编号 | 出库序号 | 主键 | |
2 | Pno | CHAR | 8 | 货品编号 | 外键 |
3 | Wno | CHAR | 3 | 仓库编号 | 外键 |
4 | Mno | CHAR | 3 | 管理员编号 | 外键 |
5 | Odate | DATE | 出库日期 | ||
6 | Onum | INT | 出库数量 | ||
7 | Odest | VARCHAR | 30 | 出库去向 |
CREATE TABLE IF NOT EXISTS OutList (Oid INT PRIMARY KEY AUTO_INCREMENT COMMENT '出库序号',Pno CHAR(8) COMMENT '货品编号',Wno CHAR(3) COMMENT '仓库编号',Mno CHAR(3) COMMENT '管理员编号',Odate DATE COMMENT '出库日期',Onum INT COMMENT '出库数量',Odest VARCHAR(30) COMMENT '出库去向'
);ALTER TABLE OutList
ADD CONSTRAINT FK_OutList_Product
FOREIGN KEY (Pno) REFERENCES ProductInfo(Pno);ALTER TABLE OutList
ADD CONSTRAINT FK_OutList_Warehouse
FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno);ALTER TABLE OutList
ADD CONSTRAINT FK_OutList_Manager
FOREIGN KEY (Mno) REFERENCES ManagerInfo(Mno);
示例数据如下图所示:
INSERT INTO OutList (Oid, Pno, Wno, Mno, Odate, Onum, Odest)
VALUES (1, '10020001', 'W02', 'M03', '2020-03-20', 30, '超市1号店');INSERT INTO OutList (Oid, Pno, Wno, Mno, Odate, Onum, Odest)
VALUES (2, '10020001', 'W02', 'M03', '2020-03-20', 20, '超市2号店');INSERT INTO OutList (Oid, Pno, Wno, Mno, Odate, Onum, Odest)
VALUES (3, '10010001', 'W01', 'M02', '2020-03-20', 30, '超市1号店');