数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码)

03-29 5701阅读 0评论

一、前言

        该项目非常适合MySQL入门学习的小伙伴,博主提供了源码、数据和一些查询语句,供大家学习和参考,代码和表设计有什么不恰当还请各位大佬多多指点。

所需环境

  1.  MySQL可视化工具:navicat;
  2.  数据库:MySql 5.7/8.0等版本均可;

需求: 

        1:每个书店有多家供应商,每家供应商给多个书店供货。

        2:每个书店聘用多名员工,每个员工只属于一个书店每个书店存放多本图书,多本图书存放在一家书店。

        4: 每本图书可以被任何会员购买,一名会员可以购买任意一本图书。

 备注:

        书店包含下列属性: 编号,地址,书店名字,老板电话;

        员工包含下列属性: 身份证,名字,性别,年龄;

        图书包含下列属性: 编号,书名,价格,库存量;

        会员包含下列属性: 编号,姓名,电话,积分;

        关于某供应商给书店供货要描述供货日期;

        关于书店聘用员工要描述聘用日期:

        关于会员购买图书需要描述购买数量;

        关于书店存放图书需要描述存放位置。

二、E-R图

数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第1张

三、关系模式

        供应商:(供应商编号,供应商地址,供应商联系人,供应商联系电话,供应商名字,供应商备注)。

        书店:(书店编号,书店地址,书店名字,书店老板电话)

        员工:(身份证,员工名字,员工性别,员工年龄,书店编号,聘用时期)

        图书:(图书编号,书名,价格,库存量,书店编号,存放位置)

        会员:(会员编号,会员姓名,会员电话,积分)。

        供应信息:(供应商编号,书店编号,供应时间)

        购买信息:(会员编号,图书编号,购买数量)

 备注:

        下划线为主键,红色字为外键;

四、数据表的设计

表1 供应商

字段

数据类型

长度

备注

供应商编号

varchar

50

主键

供应商地址

varchar

50

供应商联系人

varchar

50

供应商联系电话

varchar

50

供应商名字

varchar

50

Not null

供应商备注

varchar

50

 表2 书店

字段

数据类型

长度

备注

书店编号

varchar

50

主键

书店地址

varchar

50

书店名字

varchar

50

Not null

书店老板电话

Varchar

50

表3 员工

字段

数据类型

长度

备注

身份证

varchar

20

主键

员工性别

varchar

50

员工年龄

Int

3

员工名字

varchar

50

Not null

书店编号

varchar

50

外键

聘用时间

date

Not null

表4 图书

字段

数据类型

长度

备注

图书编号

varchar

50

主键

书名

varchar

50

Not null

价格

float

8

库存量

int

8

书店编号

varchar

50

外键

存放位置

varchar

50

Not null

表5 会员

字段

数据类型

长度

备注

会员编号

varchar

50

主键

会员姓名

varchar

50

Not null

会员电话

varchar

50

积分

int

50

表6 供应信息

字段

数据类型

长度

备注

供应商编号

varchar

50

主键

书店编号

varchar

50

主键

供货时间

date

Not null

表7 购买信息

字段

数据类型

长度

备注

图书编号

varchar

50

主键

会员编号

varchar

50

主键

购买数量

int

8

Not null

五、创建数据库

Create database 书店图书进销存管理系统 character set utf8 collate utf8_general_ci
-- 在新建表前选择数据库
Use 书店图书进销存管理系统

创建各实体表:

1. 供应商
create table 供应商
(
 供应商编号 VARCHAR(50) PRIMARY KEY,
 供应商地址 VARCHAR(50),
 供应商联系人 VARCHAR(50),
 供应商联系电话 VARCHAR(50),
 供应商名字 VARCHAR(50) NOT NULL,
 供应商备注 VARCHAR(50)
)
2.书店
CREATE TABLE 书店
(
 书店编号 varchar(50) PRIMARY KEY,
 书店地址 VARCHAR(50),
 书店名字 VARCHAR(50) NOT NULL,
 书店老板电话 VARCHAR(50)
)
3.员工
CREATE TABLE 员工
(
 身份证 VARCHAR(50) PRIMARY KEY,
 员工姓名 VARCHAR(50) NOT NULL,
 员工性别 VARCHAR(50),
 员工年龄 int(3),
 书店编号 VARCHAR(50),
 聘用时间 DATE NOT NULL,
 CONSTRAINT FK书店编号 FOREIGN KEY(书店编号) REFERENCES 书店(书店编号)
)
4.图书
CREATE TABLE 图书
(
 图书编号 VARCHAR(50) PRIMARY KEY,
 书名 VARCHAR(50) NOT NULL,
 价格 FLOAT(8),
 库存量 INT(8),
 书店编号 VARCHAR(50),
 存放位置 VARCHAR(50) NOT NULL,
 CONSTRAINT FK_书店编号 FOREIGN KEY (书店编号) REFERENCES 书店(书店编号)
)
5.会员
CREATE TABLE 会员
(
 会员编号 VARCHAR(50) PRIMARY KEY,
 会员姓名 VARCHAR(50) NOT NULL,
 会员电话 VARCHAR(50),
 积分 INT(5)
)
6. 供应信息
CREATE TABLE 供应信息
(
 供应商编号 VARCHAR(50),
 书店编号 VARCHAR(50),
 供应时间 DATE NOT NULL,
 PRIMARY KEY(供应商编号,书店编号)
)
7. 购买信息
CREATE TABLE 供应信息
(
 供应商编号 VARCHAR(50),
 书店编号 VARCHAR(50),
 供应时间 DATE NOT NULL,
 PRIMARY KEY(供应商编号,书店编号)
)

插入数据:

1. 供应商
INSERT INTO 供应商 VALUES ('G001','春熙路12号','李明','13123451234','邮电出版社','优等')
INSERT INTO 供应商 VALUES ('G002','天府路85号','薛鹏','15198762347','工业出版社','良好')
INSERT INTO 供应商 VALUES ('G003','太升路35号','林波','15823140987','机械出版社','良好')
INSERT INTO 供应商 VALUES ('G004','民航路94号','苏珊','18078651234','民航出版社','优等')
INSERT INTO 供应商 VALUES ('G005','芙蓉路53号','林达','18698704563','商务出版社','良好')
INSERT INTO 供应商 VALUES ('G006','天府三街6号','小野','19382069330','三街出版社','优等')
INSERT INTO 供应商 VALUES ('G007','十三区43号','成龙','17865989988','符咒出版社','优等')
INSERT INTO 供应商 VALUES ('G008','成华大道66号','谭警官','16666666666','成华出版社','良好')
INSERT INTO 供应商 VALUES ('G009','天益街83号','橙汁','18765498596','橙汁出版社','优等')
INSERT INTO 供应商 VALUES ('G0010','二仙桥23号','二大爷','15465989586','大爷版社','优等')
2.书店
INSERT INTO 书店 VALUES ('S001', '长城路5号', '求实书店', '13612345678')
INSERT INTO 书店 VALUES ('S002', '长江路64号', '上进书店', '13703456784')
INSERT INTO 书店 VALUES ('S003', '黄河路93号', '梦想书店', '13882346743')
INSERT INTO 书店 VALUES ('S004', '泰山路59路', '书虫书店', '13998762345')
INSERT INTO 书店 VALUES ('S005', '青城山路23号', '创业书店', '13976543214')
INSERT INTO 书店 VALUES ('S006', '春熙路13号', '邮电书店', '13598657412')
INSERT INTO 书店 VALUES ('S007', '天府路86号', '工业书店', '15146523698')
INSERT INTO 书店 VALUES ('S008', '太升路36号', '机械书店', '14756329833')
INSERT INTO 书店 VALUES ('S009', '民航路95号', '民航书店', '16654233322')
INSERT INTO 书店 VALUES ('S010', '芙蓉路54号', '商务书店', '13322336655')
3.员工
INSERT INTO 员工 VALUES ('511001199001011234', '张三', '男', 33, 'S001', '2009-07-01')
INSERT INTO 员工 VALUES ('510102199102032345', '李四', '男', 32, 'S002', '2008-03-01')
INSERT INTO 员工 VALUES ('510101199203033456', '王丽', '女', 31, 'S003', '2007-04-01')
INSERT INTO 员工 VALUES ('510101199303033456', '王宝玉', '男', 30, 'S004', '2007-04-01')
INSERT INTO 员工 VALUES ('510104199408095678', '秦松', '男', 29, 'S005', '2006-08-01')
INSERT INTO 员工 VALUES ('510001199105079965', '丁真', '男', 32, 'S006', '2010-06-28')
INSERT INTO 员工 VALUES ('510011199304261355', '李明', '男', 30, 'S007', '2009-01-15')
INSERT INTO 员工 VALUES ('510010199512140932', '李华', '女', 28, 'S008', '2012-05-29')
INSERT INTO 员工 VALUES ('510110199811230623', '王明', '男', 25, 'S009', '2013-04-30')
INSERT INTO 员工 VALUES ('510023199407112556', '林琬茹', '女', 29, 'S010', '2009-09-01')
4.图书
INSERT INTO 图书 VALUES ('T001', '围城', 58, 31, 'S001', '一楼')
INSERT INTO 图书 VALUES ('T002', '边城', 46, 12, 'S002', '二楼')
INSERT INTO 图书 VALUES ('T003', '平凡的世界', 32, 87, 'S003', '三楼')
INSERT INTO 图书 VALUES ('T004', '撒野', 36, 67, 'S004', '二楼')
INSERT INTO 图书 VALUES ('T005', '人间失格', 28, 28, 'S005', '二楼')
INSERT INTO 图书 VALUES ('T006', '狂人日记', 99, 16, 'S006', '三楼')
INSERT INTO 图书 VALUES ('T007', '乌合之众', 32, 86, 'S007', '一楼')
INSERT INTO 图书 VALUES ('T008', '自卑与超越', 42, 66, 'S008', '二楼')
INSERT INTO 图书 VALUES ('T009', '人生', 66, 74, 'S009', '三楼')
INSERT INTO 图书 VALUES ('T010', '活着', 78, 33, 'S010', '一楼')
5.会员
INSERT INTO 会员 VALUES ('V001', '林丹', '17109872345', 654)
INSERT INTO 会员 VALUES ('V002', '十三', '17209874321', 1368)
INSERT INTO 会员 VALUES ('V003', '陈羽', '17308763456', 69)
INSERT INTO 会员 VALUES ('V004', '杨帆', '17408765467', 743)
INSERT INTO 会员 VALUES ('V005', '小白', '17567431298', 475)
INSERT INTO 会员 VALUES ('V006', '小黑', '17632684456', 216)
INSERT INTO 会员 VALUES ('V007', '黑大帅', '17698978445', 448)
INSERT INTO 会员 VALUES ('V008', '潇洒哥', '17544748596', 666)
INSERT INTO 会员 VALUES ('V009', '格林', '17488932254', 1473)
INSERT INTO 会员 VALUES ('V010', '路遥', '17588141121', 187)
6. 供应信息
INSERT INTO 供应信息 VALUES ('G001', 'S001', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G002', 'S002', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G003', 'S003', '2020-04-23')
INSERT INTO 供应信息 VALUES ('G004', 'S004', '2020-04-20')
INSERT INTO 供应信息 VALUES ('G005', 'S005', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G006', 'S006', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G007', 'S007', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G008', 'S008', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G009', 'S009', '2020-04-24')
INSERT INTO 供应信息 VALUES ('G010', 'S010', '2020-04-23')
7. 购买信息
INSERT INTO 购买信息 VALUES ('T001', 'V010', 2)
INSERT INTO 购买信息 VALUES ('T002', 'V009', 4)
INSERT INTO 购买信息 VALUES ('T003', 'V008', 5)
INSERT INTO 购买信息 VALUES ('T004', 'V007', 2)
INSERT INTO 购买信息 VALUES ('T005', 'V006', 1)
INSERT INTO 购买信息 VALUES ('T006', 'V005', 6)
INSERT INTO 购买信息 VALUES ('T007', 'V004', 7)
INSERT INTO 购买信息 VALUES ('T008', 'V003', 3)
INSERT INTO 购买信息 VALUES ('T009', 'V002', 2)
INSERT INTO 购买信息 VALUES ('T010', 'V001', 1)

 六、主要查询命令

  1. 查询所有书店地址信息结果
    select 书店地址 from 书店

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第2张

  2. 查询四月所有供应商中哪些供应过书籍。(查看供应商编号)
    select DISTINCT 供应商编号 from 供应信息 where 供应时间 like '2020-04%'

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第3张

  3. 查询所有书店中年龄最大的男员工姓名。
    select 员工姓名 from 员工 where 员工性别 = '男' ORDER BY 员工年龄 desc limit 1

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第4张

  4. 查询书店老板电话为139开头的书店名字。
    select 书店名字 from 书店 where 书店老板电话 like '139%'

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第5张

  5. 查询价格低于平均价格的书籍名字。
    SELECT 书名 FROM 图书 WHERE 价格  

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第6张

  6. 查询购买书籍数量最多的会员名字。
    SELECT 会员姓名 FROM 会员 WHERE 会员编号 = (select 会员编号 from 购买信息 GROUP BY 会员编号 ORDER BY(购买数量) desc limit 1)

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第7张

  7. 查询员工人数最少的书店所在地址。
    select 书店地址 from 书店 where 书店编号 = (select 书店编号 from 员工 GROUP BY 书店编号 ORDER BY count(*) asc limit 1)

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第8张

  8. 查询优等供应商给哪些书店供货过,并按照供货时间从早到晚排序。
    select * from 供应信息 where 供应商编号 in (select 供应商编号 from 供应商 where 供应商备注 = '优等') ORDER BY 供应时间

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第9张

  9. 查询价格最贵的三种图书,存放在哪些书店里。(查看书店名字)。
    select 书店名字 from 书店 where 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 1) or 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 1,1)or 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 2,1)

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第10张

  10. 查询人生这本书,被哪些会员购买过。
    select 会员姓名 from 会员 where 会员编号 in (select 会员编号 from 购买信息 where 图书编号 in (select 图书编号 from 图书 where 书名 = '人生'))

    数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码) 第11张

七、答疑解惑 

        代码有问题或需要其他的查询语句,都可以随时评论留言或联系博主QQ。

        还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。

博主QQ:1196094293

谢谢各位的支持~~


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,5701人围观)

还没有评论,来说两句吧...

目录[+]