目录
数据库课程设计
课程名称: 数据库课程设计
设计题目: 超市信息管理系统
专业班级:
学 号:
学生姓名:
指导教师:
年 月 日
一、需求分析
1、系统需求分析描述
1.1.1系统需求说明:
随着技术的发展,超市的竞争进入了一个全新的时代,超市与超市之间的竞争不再是规模的竞争而是技术、人才与管理的竞争。技术与管理的提升是超市竞争的核心,所以市场对超市信息管理系统的需求还是比较大的。
超市信息管理系统是管理超市信息的一种系统其功能包括员工管理、库存管理、商品管理、仓库管理以及进货管理。
员工管理:对超市的员工信息进行管理,包括查询、更新等功能;
库存管理:对超市采购的商品进行编码入库,能够根据销售清单进行出货管理以及库存统计;
商品管理:对超市采购来的商品进行分类,标注需要注意的注意事项,能够更好的帮助超市管理者管理超市;
仓库管理:让超市管理者能够更好的清楚各个仓库的情况;
进货管理:对供应商信息进行管理,实施产品采购,并进行进货查询。
1.1.2系统可行性分析:
现在生活中的超市大型超市比较多,导致员工雇佣多、商品信息多、仓库管理麻烦等诸多情况,若这些情况均用纸面记录的方式,会花费超市管理人更多的精力与财力,而我的超市信息管理系统通过互联网查询和更新销售信息快捷、方便,仅用一两个人就能做到,可以减少不必要的开支,提高了查询效率。从经济与效率方面来说我的超市信息管理系统是可行的。
而这个系统也比较简单,开发者不需要投入过多的精力与时间,所以在开发者的角度来看这个超市信息管理系统是可行的。
1.1.3系统应用范围:
各种中小型超市皆可运用
2、系统功能结构图
3、业务流程图
二、概念结构设计
1.实体描述
该超市信息管理系统的抽象实体有六个
- 员工实体属性:员工编号,姓名,性别,年龄,职务,入职日期;
- 库存实体属性:库存编号,商品编号,商品名称,商品价格,库存商品数量,仓库编号,商品入库时间,商品出库时间,商品出库数量;
- 仓库实体属性:仓库编号,仓库姓名;
- 商品实体属性:商品编号,名称,价格,商品类型;
- 商品类型实体属性:商品类型编号,类型名称,商品注意事项;
- 供货商实体属性:供货商编号,姓名,电话,地址。
2.局部E-R图
2.2.1员工页面
2.2.2库存页面
2.2.3仓库界面
2.2.4商品界面
2.2.5商品类型界面
2.2.6供应商页面
3、全局E-R图
三、逻辑结构设计
1.E-R图转换到关系模式
供应商与库存之间是多对多的联系类型,因此,将供应商、库存以及供货联系分别设计成如下的关系模式:
供应商(供应商编号,姓名,电话,地址)
库存(库存编号,商品编号,商品名称,商品价格,库存数量,仓库编号,商品入库时间,商品出库时间,商品出库数量)
供货(供应商编号,库存编号,供货日期,供货价格)
库存与仓库也是多对多的联系类型,由于“库存”关系模式上方已经给出,所以只需要给出一个仓库的关系模式即可,它们间的联系则被放在该关系模式中:
仓库(仓库编号,仓库名称)
员工对商品也是多对多的联系类型,不同的员工可以销售并查询不同的商品,因此,将员工、商品以及销售联系分别设计成如下的关系模式:
员工(员工编号,员工姓名,性别,年龄,职务,入职日期)
商品(商品编号,名称,价格,商品类型)
销售(员工职务,商品名称,价格)
一个商品类型可以对应多个商品,所以说商品与商品类型之间是一对多的联系类型。也就可以用两个关系模式来进行表示。由于“商品”关系模式在上方已经给出,所以只需要给出商品类型的关系模式即可,它们间的联系则被放在该关系模式中:
商品类型(商品类型编号,类型名称,商品注意事项)
一个仓管可以管理多个仓库,所以说员工与仓库之间的管理是一对多的联系类型。
2.数据字典、表结构设计(表清单和各表字段信息列表)
3.2.1员工信息表
字段名 | 数据类型 | 长度 | 约束 | 备注 |
employee_id | int | 6 | 主键 | 员工编号 |
employee_name | varchar | 40 | 非空 | 员工姓名 |
employee_sex | varchar | 40 | 非空 | 员工性别 |
employee_age | varchar | 100 | 非空 | 员工年龄 |
employee_title | varchar | 40 | 非空 | 员工职务 |
entry_date | datetime | 入职日期 |
3.2.2库存信息表
字段名 | 数据类型 | 长度 | 约束 | 备注 |
id | int | 1 | 主键 | 库存编号 |
goods_id | varchar | 100 | 主键 | 商品编号 |
goods_name | varchar | 40 | 非空 | 商品名称 |
goods_price | decimal | (8,4) | 非空 | 商品价格 |
store_goods_num | varchar | 40 | 非空 | 库存商品数量 |
storehouse_id | varchar | 100 | 非空 | 仓库编号 |
storage_time | datetime | 进货时间 | ||
delivery_time | datetime | 出货时间 | ||
delivery_num | varchar | 40 | 出货数量 |
3.2.3仓库信息表
字段名 | 数据类型 | 长度 | 约束 | 备注 |
storehouse_id | int | 5 | 主键 | 仓库编号 |
storehouse_name | varchar | 40 | 非空 | 仓库名称 |
3.2.4商品信息表
字段名 | 数据类型 | 长度 | 约束 | 备注 |
goods_id | int | 1 | 主键 | 商品编号 |
goods_name | varchar | 20 | 非空 | 商品名称 |
goods_price | varchar | (6,2) | 非空 | 商品价格 |
goodtype | varchar | 外键 | 商品类别 |
3.2.5商品类别信息表
字段名 | 数据类型 | 长度 | 约束 | 备注 |
type_id | int | 1 | 主键 | 商品类型编号 |
type_name | varchar | 20 | 非空 | 商品类型名称 |
content | varchar | 50 | 商品类型注意事项 |
3.2.6供应商信息表
字段名 | 数据类型 | 长度 | 约束 | 备注 |
Supplier_id | int | 1 | 主键 | 供应商编号 |
Supplier_name | varchar | 40 | 非空 | 供应商姓名 |
Supplier_telephone | varchar | 20 | 非空 | 供应商电话号码 |
Supplier_address | varchar | 60 | 非空 | 供应商地址 |
四、数据库实施
1.使用SQL语句完成表的创建
4.1.1员工表的创建
CREATE TABLE s_employee(
employee_id int UNSIGNED auto_increment,
employee_name VARCHAR(40) NOT NULL,
employee_sex VARCHAR(40) NOT NULL,
employee_age VARCHAR(100) NOT NULL,
employee_title VARCHAR(40) NOT NULL,
entry_date DATE,
PRIMARY KEY(employee_id)
);
4.1.2库存信息表的创建
CREATE TABLE `s_stock`(
`id` INT UNSIGNED auto_increment,
`goods_id` VARCHAR(100) NOT NULL,
`goods_name` VARCHAR(40) NOT NULL,
`goods_price` DECIMAL(8,4),
`store_goods_num` VARCHAR(40) NOT NULL,
`storehouse_id` VARCHAR(100) NOT NULL,
`storage_time` date,
`delivery_time` date,
`delivery_num` VARCHAR(40),
PRIMARY KEY (`id`, `goods_id`)
);
4.1.3仓库信息表的创建
CREATE TABLE `s_storehouse`(
`storehouse_id` INT UNSIGNED auto_increment,
`storehouse_name` VARCHAR(40) NOT NULL,
PRIMARY KEY (`storehouse_id`)
)ENGINE=InnoDB DEFAULT charset=utf8;
4.1.4商品信息表的创建
CREATE TABLE s_goods(
goods_id INT PRIMARY KEY auto_increment,
goods_name VARCHAR (20) NOT NULL,
goods_price DECIMAL (6,2) NOT NULL,
goodstype INT,
CONSTRAINT id_fk FOREIGN KEY(goodstype) REFERENCES s_goodstype(type_id)
);
4.1.5商品类型信息表的创建
CREATE TABLE s_goodstype(
type_id INT PRIMARY KEY auto_increment,
type_name VARCHAR (20) NOT NULL,
content VARCHAR (50)
);
4.1.6供应商类型信息表的创建
CREATE TABLE s_supplier(
supplier_id int UNSIGNED auto_increment,
supplier_name VARCHAR(40) NOT NULL,
supplier_telephone VARCHAR (20) NOT NULL,
supplier_address VARCHAR(60) NOT NULL,
PRIMARY KEY(supplier_id)
);
2.使用SQL语句完成表数据的添加
4.2.1员工表数据的添加
insert into s_employee VALUES (629001,'张三','男',28,'登记员','2022-06-20');
insert into s_employee VALUES (629002,'李四','男',34,'仓管','2021-07-10');
insert into s_employee VALUES (629003,'王五','男',45,'财务','2020-04-20');
insert into s_employee VALUES (629004,'李牛','男',24,'货运','2022-09-21');
insert into s_employee VALUES (629005,'马丁','男',28,'搬运','2022-06-20');
insert into s_employee VALUES (629006,'牛七','男',29,'收银员','2021-07-20');
4.2.2库存表数据的添加
INSERT INTO s_stock VALUES (1, 11000,'海飞丝洗发水',65.00,87,22000,'2022-04-07','2022-04-27',20);
INSERT INTO s_stock VALUES (2, 11000,'海飞丝洗发水',65.00,52,22001,'2022-04-07','2022-04-19',10);
INSERT INTO s_stock VALUES (3, 11001,'黑人牙膏',18.00,20,22003,'2021-12-12','2022-01-17',20);
INSERT INTO s_stock VALUES (4, 11002,'丹姿护发素',29.00,103,22003,'2020-11-07','2020-11-11',88);
INSERT INTO s_stock VALUES (5, 11003,'蓝月亮洗衣液',49.00,64,22002,'2021-05-01','2021-06-18',50);
INSERT INTO s_stock VALUES (6, 11004,'洁柔抽纸',69.00,200,22004,'2022-01-01','2022-04-03',180);
INSERT INTO s_stock VALUES (7, 11005,'洗面奶',38.00,370,22005,'2022-02-16','2022-05-27',108);
INSERT INTO s_stock VALUES (8, 11006,'护手霜',25.00,123,22002,'2021-10-01','2021-11-11',108);
INSERT INTO s_stock VALUES (9, 11006,'太谷饼',15.00,103,22004,'2021-11-01','2021-12-11',18);
INSERT INTO s_stock VALUES (10, 11006,'可口可乐',4.00,223,22000,'2022-10-01','2022-11-11',208);
INSERT INTO s_stock VALUES (11, 11006,'电动牙刷',125.00,323,22001,'2021-09-01','2021-09-11',128);
INSERT INTO s_stock VALUES (12, 11006,'香蕉',5.00,456,22000,'2022-09-01','2022-10-11',356);
INSERT INTO s_stock VALUES (13, 11006,'草莓',25.00,234,22003,'2022-02-01','2022-02-11',134);
4.2.3仓库表数据的添加
insert into s_storehouse VALUES (22000,'华中仓库1号');
insert into s_storehouse VALUES (22001,'华东仓库2号');
insert into s_storehouse VALUES (22002,'华南仓库3号');
insert into s_storehouse VALUES (22003,'华西仓库4号');
insert into s_storehouse VALUES (22004,'华北仓库5号');
4.2.4商品表数据的添加
INSERT INTO s_goods VALUES (1,'海飞丝洗发水',65.00,3);
INSERT INTO s_goods VALUES (2,'黑人牙膏',18.00,3);
INSERT INTO s_goods VALUES (3,'丹姿护发素',65.00,3);
INSERT INTO s_goods VALUES (4,'蓝月亮洗衣液',49.00,2);
INSERT INTO s_goods VALUES (5,'洁柔抽纸',69.00,2);
INSERT INTO s_goods VALUES (6,'洗面奶',38.00,3);
INSERT INTO s_goods VALUES (7,'护手霜',25.00,4);
INSERT INTO s_goods VALUES (8,'太谷饼',15.00,6);
INSERT INTO s_goods VALUES (9,'可口可乐',4.00,6);
INSERT INTO s_goods VALUES (10,'电动牙刷',125.00,1);
INSERT INTO s_goods VALUES (11,'香蕉',5.00,5);
INSERT INTO s_goods VALUES (12,'草莓',25.00,5);
4.2.5商品类型表数据的添加
INSERT INTO s_goodstype VALUES (1,'家用电器','电器类商品为高价值商品应重点维护');
INSERT INTO s_goodstype VALUES (2,'日常生活用品','日常生活用品种类复杂注意分类');
INSERT INTO s_goodstype VALUES (3,'洗漱用品','洗头的与洗脸的不要混乱摆放,给顾客造成不便');
INSERT INTO s_goodstype VALUES (4,'护肤品','各品牌护肤品摆放整齐');
INSERT INTO s_goodstype VALUES (5,'生鲜水果','保质期较短货架上的生鲜水果必须要是新鲜的');
INSERT INTO s_goodstype VALUES (6,'食品饮料','注意食品饮料的保质期,过期食品不要出现在货架上');
4.2.6供应商表数据的添加
INSERT INTO s_supplier VALUES (1,'赵六',13456727896,'杭州');
INSERT INTO s_supplier VALUES (2,'孙琪',13678765678,'西安');
INSERT INTO s_supplier VALUES (3,'牛八',13994987689,'福建');
INSERT INTO s_supplier VALUES (4,'李九',13245678967,'郑州');
INSERT INTO s_supplier VALUES (5,'张十',13776789567,'昆明');
INSERT INTO s_supplier VALUES (6,'钱九',13843567779,'重庆');
INSERT INTO s_supplier VALUES (7,'胡七',13564565656,'黑龙江');
3.使用SQL语句自定义创建视图
4.3.1员工表的视图
CREATE VIEW s_employee_view AS SELECT employee_name,employee_age from s_employee;
SELECT * FROM s_employee_view;
4.3.2库存表的视图
CREATE VIEW s_stock_view AS SELECT delivery_time,store_goods_num FROM s_stock;
SELECT * FROM s_stock_view;
4.3.3仓库表的视图
CREATE VIEW s_storehouse_view AS SELECT storehouse_id,storehouse_name FROM s_storehouse;
SELECT * FROM s_storehouse_view;
4.3.4商品表的视图
CREATE VIEW s_goods_view AS SELECT goods_name,goods_price FROM s_goods;
SELECT * FROM s_goods_view;
4.3.5商品类型的视图
CREATE VIEW s_goodstype_view AS SELECT type_name,content FROM s_goodstype;
SELECT * FROM s_goodstype_view;
4.3.6供应商表的视图
CREATE VIEW s_supplier_view AS SELECT supplier_name,supplier_address FROM s_supplier;
SELECT * FROM s_supplier_view;
4.使用SQL语句自定义完成增删改查操作
4.4.1进行表内容的增加
#在员工表员工id后面再添加一列任职仓库
ALTER TABLE s_employee ADD COLUMN storehouse_id VARCHAR(100)
NULL
AFTER employee_id;
4.4.2进行表内容的删除
#删除id=1的商品
DELETE FROM s_goods
WHERE goods_id = 1;
4.4.3进行表内容的修改
#将洁柔抽纸的价格修改为九折后的价格
UPDATE s_stock SET goods_price=ROUND(goods_price*0.9,4)WHERE goods_name='洁柔抽纸';
#把丹姿护发素的出库数量修改为3
UPDATE s_stock SET delivery_num=3 WHERE goods_name='丹姿护发素';
4.4.4进行表的查找
#显示各商品的出库数量,按出库数量有多到少排列
#ORDER BY
SELECT s.goods_name,SUM(s.delivery_num) AS num
FROM s_stock AS s
GROUP BY s.goods_name
ORDER BY num DESC;
五、总结
略