土豆烤肉_仓库管理数据库

仓库管理数据库

某连锁超市需要设计实现一个仓库管理系统,要求每个仓库可以有多名仓库管理员,每个仓库管理员只负责管理一个仓库,同时每个仓库都配备了一名仓库主管;不同的仓库存放的是不同类型的货品,每种货品只存放在固定的仓库中;定期采购的货品会由当天值班的仓库管理员进行登记入库,若超市中某种货品短缺,去仓库提取货品时,也需由当天值班的仓库管理员进行登记出库。

通过需求分析,设计该系统所需的仓库管理数据库共有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

管理仓库编号

外键

示例数据如下图所示

b0bccf057aac4d5d83465c7aad13fcc4.png

(2)仓库信息表(WarehouseInfo),用来保存仓库的相关信息

序号

字段名

字段类型

字段长度

字段中文名

备注

1

Wno

CHAR

3

仓库编号

主键

2

Wname

VARCHAR

10

仓库名称

非空

3

Wtype

VARCHAR

7

仓库类别

4

Waddress

VARCHAR

30

仓库地址

5

Wcharge

CHAR

3

仓库主管

外键

示例数据如下图所示

a8ec9257d76a4504818ceb30a572ca6a.png

(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

货品库存量

示例数据如下图所示

4a140740aaae4d448c013582fd7c4044.png

(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

入库数量

示例数据如下图所示

09ca911126f342d08f36b4c88c5c3269.png

(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

出库去向

示例数据如下图所示

acecff43c65047108ba0f713193b6710.png

代创建码:

创建数据库的语句

CREATE DATABASE IF NOT EXISTS jxdb

CHARACTER SET UTF8MB4;

USE jxdb;

-- 创建管理员信息表  
CREATE TABLE IF NOT EXISTS ManagerInfo (  
    Mno CHAR(3) PRIMARY KEY COMMENT '管理员编号',  
    Mname VARCHAR(10) NOT NULL COMMENT '管理员姓名',  
    Mgender CHAR(1) DEFAULT '男' COMMENT '管理员性别',  
    Mbirhdate DATE COMMENT '管理员出生日期',  
    Mtelephone CHAR(11) NOT NULL COMMENT '管理员电话',  
    Mhiredate DATE COMMENT '入职日期',  
    Wno CHAR(3) COMMENT '管理仓库编号',  
    FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno)  
) COMMENT='管理员信息表';  

-- 创建仓库信息表

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 '仓库主管',

FOREIGN KEY (Wcharge) REFERENCES ManagerInfo(Mno)

-- 假设仓库主管是管理员表中的管理员

);

-- 创建货品信息表  
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 '货品库存量',  
    FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno)  
) COMMENT='货品信息表';  

-- 创建入库清单表  
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 '入库数量',  
    FOREIGN KEY (Pno) REFERENCES ProductInfo(Pno),  
    FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno),  
    FOREIGN KEY (Mno) REFERENCES ManagerInfo(Mno)  
);  
  
-- 创建出库清单表  
CREATE TABLE IF COMMENT ''NOT EXISTS OutList (  
    Oid INT AUTO_INCREMENT PRIMARY KEY COMMENT '出库序号',  
    Pno CHAR(8) COMMENT '货品编号',  
    Wno CHAR(3) COMMENT '仓库编号',  
    Mno CHAR(3) COMMENT '管理员编号',  
    Odate DATE COMMENT '出库日期',  
    Onum INT COMMENT '出库数量',  
    Odest VARCHAR(30) COMMENT '出库去向',  
    FOREIGN KEY (Pno) REFERENCES ProductInfo(Pno),  
    FOREIGN KEY (Wno) REFERENCES WarehouseInfo(Wno),  
    FOREIGN KEY (Mno) REFERENCES ManagerInfo(Mno)  
);  

更改,增加(学生表的例子):

(1)将“年龄”字段Sage改为“出生日期”,同时字段名改为Sbirth,数据类型为DATE;

(2)增加一个“生源地”字段,字段名为Snative,数据类型为VARCHAR(20),将该字段放在出生日期Sbirth的后面

ALTER TABLE Students

    CHANGE Sage Sbirth DATE COMMENT '出生日期';

ALTER TABLE Students

    ADD Snative VARCHAR(20) COMMENT '生源地' AFTER Sbirth;

(2)显示表的索引信息

SHOW INDEX FROM teachers;

(1)使用CREATE INDEX语句,在课程表的Cname列上按升序创建唯一索引,索引名为IDX_Cou_Cname

CREATE UNIQUE INDEX IDX_Cou_Cname ON Courses (Cname ASC);

(1)使用ALTER TABLE语句,在授课表的Tno列上按升序创建普通索引;

(2)使用ALTER TABLE语句,在授课表的Sclass列上按降序创建普通索引

1)创建索引的语句

ALTER TABLE Tutors

    ADD INDEX IDX_Tut_Tno(Tno ASC);         ASC可不写,在正常情况下,默认是升序

ALTER TABLE Tutors

    ADD INDEX IDX_Tut_Sclass(Sclass DESC);

(1)删除索引的语句

DROP INDEX IDX_Tea_Tprof ON Teachers;

使用SQL语句,用ALTER TABLE语句对各基本表的外键进行声明。

要求:(1)学院表Department,外键Dheader,参照Teachers表的Tno;

(2)专业表Major,外键Dno,参照Department表的Dno;

(3)学生表Students,外键Mno,参照Major表的Mno;

(1)ALTER TABLE Department

            ADD CONSTRAINT FK_Dep_Dheader FOREIGN KEY (Dheader) REFERENCES Teachers(Tno);

(2)ALTER TABLE Major

            ADD CONSTRAINT FK_Maj_Dno FOREIGN KEY (Dno) REFERENCES Department(Dno);

(3)ALTER TABLE Students

            ADD CONSTRAINT FK_Stu_Mno FOREIGN KEY (Mno) REFERENCES Major(Mno);

4af26fb2f26044d39919feef218a391a.png

  • 38
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值