目录

一.需求分析

二.概念结构设计

三.逻辑结构设计

四.物理结构设计


一.需求分析

图书(Book)信息包括图书编号(BookID)、图书名称(BookName)、图书类别(BookType)、作者姓名(Author)、出版社编号(PublishID)、单价(Price)、图书总量(BookSum)、在馆数量(Stock);读者(Reader)信息有:读者编号(ReaderID)、读者姓名(ReaderName)、性别(Sex)、专业(Subject)、在借书数(BorrowNum);出版社(Publisher)信息有:出版社编号(PublisherID)、出版社姓名(PublisherName)、电话(Phone)、地址(Address)。

任何读者可以借阅(Borrow)多本书,任何一种书可为多人借阅;借阅每本图书时,需要登记借书时间(BorrowTime),且该书的在馆数量减一;归还图书时,需要登记还书时间(ReturnTime),且该书的在馆数量加一;

一个出版社可以出版(Publish)多种图书,一种图书可由多个出版社出版,出版时登记每本书的出版数量(PublishNum)和出版时间(PublishTime)。

二.概念结构设计

三.逻辑结构设计

Book(BookID,BookName,BookType,Author,PublishID,Price,BookSum,Stock)。

Reader(ReaderID,ReaderName,Sex,Subject,BorrowNum)。

Publisher(PublisherID,PublisherName,Phone,Address)。

Borrow(ReaderID ,BookID,BorrowTime,ReturnTime)。

Publish(PublisherID,BookIDPublishNum,PublishTime)。

四.物理结构设计

表1:图书信息表结构

  字段名

 数据类型

  长度

是否允许为空

备注

BookID

VARCHAR

20

   

主键

BookName

VARCHAR

100

非空

BookType

VARCHAR

100

非空

Author

VARCHAR

100

非空

PublishID

VARCHAR

20

非空

Price

DECIMAL

(7,2)

非空

BookSum

INT

Stock

INT

   表2:读者信息表结构

  字段名

   数据类型

  长度

是否允许为空

备注

ReaderID

VARCHAR

20

 

主键

ReaderName

VARCHAR

100

非空

Sex

VARCHAR

20

检查

Subject

VARCHAR

100

非空

BorrowNum

INT

表3:出版社信息表结构

  字段名

   数据类型

  长度

是否允许为空

备注

PublisherID

VARCHAR

20

 

主键

PublisherName

VARCHAR

200

非空

Phone

VARCHAR

20

非空

Address

VARCHAR

200

非空

表4:借阅信息表结构 

  字段名

   数据类型

  长度

是否允许为空

备注

ReaderID

VARCHAR

20

主键

外键

BookID

VARCHAR

20

主键

外键

BorrowTime

DATE

ReturnTime

DATE

表4中ReaderID与bookID作为联合主键

表5:出版信息表结构 

  字段名

   数据类型

  长度

是否允许为空

备注

PublisherID

VARCHAR

20

主键

BookID

VARCHAR

20

主键

PublishNum

INT

非空

PublishTime

DATE

非空

3、创建数据库与数据表

(1)创建名为“Library”的数据库;

(2)根据逻辑设计中的表结构,创建该数据库的所有数据表;

CREATE DATABASE Library;USE Library;-- 创建该数据库的所有数据表;#图书信息表
CREATE TABLE Book(BookID VARCHAR(20) PRIMARY KEY,-- 书编号BookName VARCHAR(100) NOT NULL,-- 图书名称BookType VARCHAR(100) NOT NULL,-- 图书类别Author VARCHAR(100) NOT NULL,PublishID VARCHAR(20) NOT NULL,Price DECIMAL(7,2) NOT NULL,BookSum INT,Stock INT-- 在馆数量);#读者信息表
CREATE TABLE Reader(ReaderID VARCHAR(20) PRIMARY KEY,ReaderName VARCHAR(100) NOT NULL,Sex VARCHAR(20)NOT NULL,`Subject` VARCHAR(100) NOT NULL,-- 专业BorrowNum VARCHAR(20),-- 在借书数CHECK(Sex IN('男','女')));#出版社(Publisher)信息表
CREATE TABLE Publisher(PublisherID VARCHAR(20) PRIMARY KEY,PublisherName VARCHAR(200) NOT NULL,Phone VARCHAR(20) NOT NULL,Address VARCHAR(200) NOT NULL);#借阅信息表Borrow
CREATE TABLE Borrow (ReaderID VARCHAR(20),BookID VARCHAR(20),BorrowTime DATE,ReturnTime DATE,PRIMARY KEY(ReaderID,BookID),FOREIGN KEY(ReaderID)REFERENCES Reader(ReaderID),FOREIGN KEY(BookID)REFERENCES Book(BookID));#出版信息表
CREATE TABLE Publish(PublisherID VARCHAR(20),BookID VARCHAR(20),PublishNum INT NOT NULL,PublishTime DATE NOT NULL,PRIMARY KEY(PublisherID,BookID),FOREIGN KEY(PublisherID)REFERENCES Publisher(PublisherID),FOREIGN KEY(BookID)REFERENCES Book(BookID));SHOW TABLES;

实施结果:

4、表数据添加与处理

  1. 给数据表添加初始记录
INSERT INTO Book VALUES('b001', '《MySQL数据库技术及应用》', '计算机类', '苗雪兰', 'p003', 29.50, 10, 4),('b002', '《软件工程》', '计算机类', '李建中', 'p003', 48.00, 8, 2),('b003', '《MySQL数据库技术与应用》', '计算机类', '张素青,翟慧,黄静 ', 'p002', 42.00, 15, 8),('b004', '《WEB技术》', '计算机类', '汤惟', 'p004', 32.00, 12, 4),('b005', '《自动控制原理》', '自动化类', '胡寿松', 'p005', 52.00, 15, 8),('b006', '《线性控制理论》', '自动化类', '郑大钟', 'p005', 32.50, 10, 2),('b007', '《计算机导论》', '计算机类', '袁方', 'p003', 49.8, 15, 5),('b008', '《计算机导论》', '计算机类', '王玉龙', 'p004', 46.00, 10, 3),('b009', '《算法导论》', '计算机类', '科曼', 'p005', 128, 10, 2),('b010', '《数学之美》', '基础类', '吴军', 'p002', 35.00, 10, 0),('b011', '《计算机网络技术》', '网络技术类', '施晓秋', 'p001', 23.70, 10, 4);SELECT * FROM Book; INSERT INTO Reader VALUES('r001','李芳芳','女','软件工程', 3),('r002','刘钦','男','自动化', 2),('r003','王琳','女','自动化', 3),('r004','张芬芳','女','网络工程', 4),('r005','陈丽丽','女','软件工程', 5);SELECT * FROM Reader;INSERT INTO Publisher VALUES('p001', '高等教育出版社', '028-83203676', '四川省成都市成华区建设北路'),('p002', '人民邮电出版社', '13504411556', '北京市大兴区育祥街2号'),('p003', '清华出版社', '13219096229', '北京市海淀区清华科技园学研大厦a'),('p004', '电子工业出版社', '010-88254338', '北京丰台区金家村288号'),('p005', '机械工业出版社', '010-88379033', '北京西城区百万庄大街22号院3');SELECT * FROM Publisher;INSERT INTO Borrow VALUES
('r001','b001',"2022-04-19 09:58:03","2022-05-19 08:38:23"),
('r001','b002',"2022-07-01 15:28:12","2022-07-18 09:14:02"),
('r001','b007',"2022-07-01 15:28:12","2022-07-18 09:14:02"),
('r001','b010',"2022-10-01 16:06:02",NULL),
('r002','b005',"2022-07-03 15:28:30","2022-07-17 19:10:32"),
('r002','b006',"2022-07-03 15:28:30",NULL),
('r002','b010',"2022-09-09 16:06:02",NULL),
('r003','b001',"2022-05-01 11:28:24",NULL),
('r003','b005',"2022-11-01 10:43:12","2022-12-01 14:09:56"),
('r003','b006',"2022-05-01 11:28:24",NULL),
('r004','b003',"2022-11-11 16:06:02",NULL),
('r004','b010',"2022-11-11 10:43:12","2022-12-01 14:09:56"),
('r004','b011',"2022-11-01 16:06:02",NULL),
('r005','b003',"2022-10-15 16:06:02","2022-12-01 14:09:56"),
('r005','b004',"2022-10-15 10:43:12","2022-12-01 14:09:56"),
('r005','b010',"2022-11-01 16:06:02",NULL);SELECT * FROM Borrow;INSERT INTO Publish VALUES
('p001','b011',50,'2021-09-02'),
('p002','b003',40,'2020-07-06'),
('p002','b010',100,'2021-09-25'),
('p003','b001',120,'2020-11-02'),
('p003','b002',50,'2021-07-03'),
('p003','b007',120,'2020-03-02'),
('p004','b004',100,'2022-01-12'),
('p004','b008',120,'2022-05-19'),
('p005','b005',120,'2020-03-02'),
('p005','b006',100,'2021-11-12'),
('p005','b009',120,'2022-07-16'),
('p005','b004',120,'2022-07-16');SELECT * FROM Publish;

实施结果:

2. 编写SQL语句实现以下操作要求:

  • 图书馆新购买了5本“清华出版社”出版的“计算机类”的“严蔚敏”编写的图书《数据结构》,单价“35”元,现需要录入到系统中。
  • 增加一条读者借阅记录,借阅时间为当前时间(自动获取系统时间),归还时间为空,内容自定。
  • 修改一条图书信息,如,修改某本图书(图书编号)的单价,内容自定。
  • 删除“xx”作者编写的所有图书,作者姓名自行确定。

5、数据查询

  1. 编写SQL语句实现以下查询要求:
  • 查询图书名称以“论”结束的所有图书信息。
  • 查询所有“在馆数量”小于3的图书信息。
  • 查询“人民邮电出版社”出版的图书包括哪些类别。
  • 查询读者中男女生的人数和总人数。
  • 查询借阅图书次数最多的前三名学生的姓名。
  • 查询最受读者喜欢(借阅次数最多)的图书名称和被借阅的次数。
  • ​​​​​​​
  • 查询所有超过60天未归还的图书的读者姓名、图书名称、借阅时间。
  • 查询每种图书的所有出版社名称和单价,并按单价从低到高的顺序排序(图书名称相同表示同一种图书)。
  • 统计每个读者借阅图书的总数量,降序排序,并输出前5名
  • 查询借阅了“b005”这本图书的所有读者的姓名(使用exists)。
  • 查询借阅了图书编号“b001”和“b003”的读者的学号(图书编号可根据具体添加的图书信息进行修改)。

6、数据库对象的创建

  • 在出版社表上创建关于“出版社姓名”列的一个唯一索引
  • 创建一个包含“读者姓名”、借阅的“图书名称”、“借阅时间”和图书“单价”等信息的视图
  • 创建一个存储过程,实现查询指定出版社(出版社名称)出版某本图书(图书名称)的数量和单价。(其中,出版社名称和图书名称以存储过程的输入参数设定),并执行该存储过程检查其正确性。
  • 创建一个触发器,使得读者借阅某本图书时,图书表中该图书的在馆数量减一。
  • 创建一个触发器,使得读者归还某本图书时,图书表中该图书的在馆数量加一。

7、数据库安全管理与维护

(1)用户管理

  • 通过SQL语句添加数据库用户“sa”,密码为“sa”;
  • 修改用户“sa”的用户名为“admin1”,密码为“123456”;

(2)权限管理

  • 授予admin1用户对“借阅”数据表的insert、select、update和delete权限;
  • 收回admin1用户对“借阅”数据表的insert权限。

(3)数据备份与恢复

  • 使用mysqldump命令对Library数据库进行备份到文件“e:\library\library.sql”;
  • 使用mysql命令将备份文件library_bak.sql恢复到数据库。
  • 对library数据库中book表中的数据进行备份到文件“e:/library/book_bak.txt”中;
  • 将“e:/library/book_bak.txt”文件中的数据恢复到library数据库的book表中。

本次实训就到这里结束啦!

有什么疑问可以在评论区提,文章中若有不当之处,也恳请各位帮忙指正

如果本文对铁子们有所帮助的话,可以一键三连哦

数据库实训项目之图书借阅系统相关推荐

  1. 【个人项目】东北大学软件学院2020级2021年夏季实训项目——东软颐养社区系统

    ps:没想到过了一年这么多学弟来问,看来今年的实训题也没变? 补档:https://cloud.189.cn/t/ZnuiQjQNz67j (访问码:7i6c) 写在前面: 这个项目是大一暑期的实践项 ...

  2. android实训项目无线点餐系统服务器的设置,实现Android客户端软件与云计算的无线点餐系统设计...

    移动互联网时代来临,一个崭新的时代开始了! 所谓移动互联网就是将移动通信和互联网整合在一起,是移动设备(包括手机和上网本)可以随时随地访问互联网资源和应用. 云是由许多水分子组成的,几乎有几亿个.云没 ...

  3. java swing实训项目(图书管理系统)

    1.项目布局(供新手参考) 学校老师任务,因为我也是新手所以写的不是特别的好,所以可以提供参考. package GUI_Object.GUI;import GUI_Object.mysql.Data ...

  4. C网络编程项目 图书借阅系统(一)

    1.项目名称 图书借阅系统 2.项目需求 对于图书馆中的书籍信息的管理,可以增.删.改.查书籍的信息,完成借阅.归还书籍的要求. 3.项目功能 1.采用并发服务器,可以同时处理多个客户端的请求. 2. ...

  5. Java实训项目--小型书店管理系统(ssm框架)

    系列文章目录 MyBatis专栏: 一:Java实训项目–小型图书管理系统(ssm框架) 二:"spring与mybatis整合"考试题目测试与解析 三:"SSM框架整合 ...

  6. 【计算机毕业设计】图书借阅系统

    一.系统截图(需要演示视频可以私聊) 摘 要 随着电子商务快速发展世界各地区,各个高校对图书馆也起来越重视.图书馆代表着一间学校或者地区的文化标志,因为图书馆丰富的图书资源能够带给我们重要的信息资源, ...

  7. Java实战案例一:图书借阅系统

    项目:图书借阅系统 项目简介:开发一个图书借阅系统,包括图书常用的查看.新增.删除.借出.归还等功能 开发工具:eclipse 语言:Java 知识点:程序控制结构.数组.IO 模块流程划分 将整个系 ...

  8. 4.2 图书借阅系统数据库设计 --MySQL

    本文目录 前言 一.背景和需求分析 1.1 背景 1.2 信息需求 1.3 功能需求 管理员 学生 1.4 数据流图 二.概念结构设计 1. 抽象出系统实体 2. 局部E-R图 2.1 学生 E-R图 ...

  9. 基于Servlet的图书借阅系统,万能项目,写毕设不用愁了

    目录 获取方式 项目技术栈 适合对象 适合课题 项目功能概述 部分运行截图 一天完成毕业设计 获取方式 本站下载链接 基于Servlet的图书馆借阅管理系统-Java文档类资源-CSDN下载 项目技术 ...

最新文章

  1. AngularJS开发指南4:指令的详解
  2. 数组名的地址,和数组名取地址的讨论
  3. python单元测试的应用_单元测试使用请求库的python应用程序
  4. GDAL/ORG之Python获取与安装
  5. System V IPC之共享内存
  6. IOS经常使用的性能优化策略
  7. 自定义滚动条,可解决火狐滚动条默认样式修改不了问题
  8. 关于QQ非会员发图限制
  9. HDU4027 (线段树/修改区间,询问区间和)
  10. Android 优化布局层次结构
  11. transaction already active
  12. Maven生命周期详解及常用命令
  13. 超纤商标为精美时尚服饰再添点睛之笔
  14. 杜立特尔分解法 MATLAB,chase追赶法算法
  15. (自我介绍范文)java面试自我介绍
  16. keystore java_Java KeyStore getEntry()用法及代码示例
  17. pandas_计算年化收益率
  18. 怎么打开unity tweak tool
  19. java excel 密码_Java 加密Excel文件(打开时需输入密码)
  20. Java 中获取错误代码_错误代码:99999, 错误信息:无法获取到文件名

热门文章

  1. Mac十大生产力工具
  2. 手机安装Linux教程
  3. 多测师肖sir_高级金牌讲师_测试理论之IT常见术语(1.2)
  4. 苹果传pc用文件功能连接服务器url无效,iOS 9的 Universal Links 通用链接使用介绍
  5. 正则表达式匹配限制位数数字
  6. 丝瓜藤 de JAVA学习
  7. canvas:绘制视频封面
  8. element-ui 设置table表格单元格背景样式
  9. 国产高性价比蓝牙耳机推荐,双11百元级优质蓝牙耳机
  10. 抖音小店开店怎么样选择类目和商品?