图书管理系统数据库设计-MYSQL实现
更新时间:2023-09-02 03:03:01 阅读量: 教育文库 文档下载
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
图书管理系统数据库设计
一、系统概述
1、系统简介
图书管理是每个图书馆都需要进行的工作。一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。
2、需求分析
图书管理系统的需求定义为:
1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。
2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。
3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息。
4.学生直接归还图书,根据图书编码修改借阅信息
5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息
6.管理员可以注销学生信息。
通过需求定义,画出图书管理系统的数据流图:
1
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
数据流图
2
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
三、数据库设计方案图表
1、系统E-R模型
总体E-R图:
3
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
4
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
给出设计的表名、结构以及表上设计的完整性约束。student:
5
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
book:
book_sort:
borrow:存储学生的借书信息
return_table:存储学生的归还信息
6
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
ticket:存储学生的罚单信息
manager:
3、设计索引
给出在各表上建立的索引以及使用的语句。student:
7
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
1.为stu_id创建索引,升序排序
sql:create index index_id on student(stu_id asc);
2.为stu_name创建索引,并且降序排序
sql:alter table student add index index_name(stu_name, desc);
插入索引操作和结果如下所示:
mysql> create index index_id on student(stu_id asc);
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table student add index index_name(stu_name desc); Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql>
book:
1.为book_id创建索引,升序排列
sql:create index index_bid on book(book_id);
2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:sql:create index index_brecord on book(book_record);
8
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
插入索引的操作和结果如下所示:
mysql> create index index_bid on book(book_id);
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> create index index_brecord on book(book_record);
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
borrow:
1.为stu_id和book_id创建多列索引:
sql:create index index_sid_bid on borrow(stu_id asc, book_id asc);
插入索引的操作和结果如下所示:
mysql> create index index_sid_bid on borrow(stu_id asc, book_id asc); Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
return_table:
1.为stu_id和book_id创建多列索引:
9
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
sql:create index index_sid_bid on return_table(stu_id asc, book_id asc);
插入索引的操作和结果如下所示:
mysql> create index index_sid_bid_r on return_table(stu_id asc, book_id asc); Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
ticket:
1. 为stu_id和book_id创建多列索引:
sql:create index index_sid_bid on ticket(stu_id asc, book_id asc);
插入索引的操作和结果如下所示:
mysql> create index index_sid_bid on ticket(stu_id asc, book_id asc); Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
manager:
1.为manager_id创建索引:
sql:create index index_mid on manager(manager_id);
插入索引的操作和结果如下所示:
10
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
mysql> create index index_mid on manager(manager_id); Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
4、设计视图
给出在各表上建立的视图以及使用的语句。
1.在表student上创建计算机专业(cs)学生的视图stu_cs:sql: create view stu_cs as
select *
from student
where pro = ‘cs’;
操作和结果:
mysql> create view stu_cs as
select *
from student
where stu_pro = 'cs';
Query OK, 0 rows affected
11
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
2. 在表student, borrow和book上创建借书者的全面信息视图stu_borrow:
sql: create view stu_borrow as
select student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddate(borrow_date,30) expect_return_date
from student, book, borrow
where student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;
操作和结果:
mysql> create view stu_borrow as
select student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddate(borrow_date,30) expect_return_date
from student, book, borrow
where student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;
Query OK, 0 rows affected
3.创建类别1的所有图书的视图cs_book:
sql: create view cs_book as
select *
from book
12
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
where book.book_sort in
(select book_http://www.77cn.com.cn
from book_sort
where sort_id = 1);
操作和结果显示:
mysql> create view cs_book as
select *
from book
where book.book_sort in
(select book_sort.sort_name
from book_sort
where sort_id = 1);
Query OK, 0 rows affected
4.创建个人所有借书归还纪录视图stu_borrow_return: sql:
create view stu_borrow_return as
13
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
select student.stu_id, student.stu_name, book.book_id, book.book_name,return_table.borrow_date,return_table.return_date
from student, book, return_table
where student.stu_id = return_table.stu_id and book.book_id = return_table.book_id;
5、设计触发器
给出在各表上建立的触发器以及使用的语句。
1.设计触发器borrow, 当某学生借书成功后,图书表相应的图书不在架上,变为0:
sql:
create trigger borrow
after insert on borrow
for each row
begin
update book set book_num = book_num – 1
where book_id = new.book_id;
end
操作与结果显示:
mysql> delimiter $$
mysql> create trigger trigger_borrow
-> after insert on borrow
14
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
-> for each row
-> begin
-> update book set book_num = book_num - 1
-> where book_id = new.book_id;
-> end
-> $$
Query OK, 0 rows affected
在插入表borrow之前,book_id = 1 的图书还在架上,为1:
学生1借了这本书后,在borrow中插入了一条记录:
在borrow中插入这条记录后,book_id =1的图书,不在架上,为0:
2.设计触发器trigger_return,还书成功后,对应的书籍book_num变为1:sql:
create trigger trigger_return
after insert on return_table
for each row
begin
update book set book_num = book_num + 1
15
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
where book_id = new.book_id;
end
还书时在return_table插入表项:
此时图书归还架上:
3.定义定时器(事件)eventJob,每天自动触发一次,扫描视图stu_borrow,若发现当前有预期归还时间小于当前时间,则判断为超期,生成处罚记录,这个定时器将每天定时触发存储过程proc_gen_ticket:
sql:
create event if not exists eventJob
on schedule every 1 DAY /*每天触发*/
on completion PRESERVE
do call proc_gen_ticket(getdate()); /*调用存储过程*/
set global event_scheduler = 1;
alter event eventJob on completion preserve enable; /*开启定时器*/
操作和结果显示:
1). 学生1借了图书1,生成借书记录stu_borrow视图,如下:
2). 当他在1月27日前还书时,没有生成罚单:
16
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
3). 当他在1月27日后还书时,生成罚单:
4.设计触发器trigger_credit,若处罚记录超过30条,则将这个学生的诚信级设置为0,下次不允许借书:
sql:
create trigger trigger_credit
after insert on ticket
for each row
begin
if (select count(*) from ticket where stu_id=new.stu_id)>30 then
update student set stu_integrity = 0 where stu_id = new.stu_id;
end if;
end
操作和结果显示,测试时选择插入ticket项大于3,因为30太大了,不容易测试:
学生1超过3次超期归还图书后,产生了4条罚单:
17
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
此时触动触发器trigger_credit,将学生1的诚信级设置为0:
四、应用程序设计与编码实现
1、系统实现中存储函数和存储过程的设计
要求给出功能描述和代码。
1. 设计存储过程,产生罚单proc_gen_ticket:
当日期超过预定归还日期时,产生罚单,并将记录写入表ticket中,这个存储过程在定时器eventJob中调用:
sql:
create procedure proc_gen_ticket(in currentdate datetime)
BEGIN
declare cur_date datetime;
set cur_date = currentdate;
18
这是一个简单的图书管理系统的MYSQL设计,包含了数据插入,删除,定时器,触发器设计
replace into ticket(stu_id, book_id, over_date, ticket_fee)
select stu_id, book_id, datediff(cur_date,stu_borrow.expect_return_date),0.1*datediff(cur_date,stu_borrow.exp ect_return_date)
from stu_borrow
where cur_date>stu_borrow.expect_return_date;
end
操作和结果显示:
1). 学生1借了图书1,生成借书记录stu_borrow视图,如下:
2). 当他在1月27日前还书时,没有生成罚单:
3). 当他在1月27日后还书时,生成罚单:
2.设计学生注册信息存储过程:学生注册信息stu_register
sql:
19
正在阅读:
图书管理系统数据库设计-MYSQL实现09-02
基于单片机的红外测温系统05-26
国立暨南国际大学人文学院九十学年度第一次教师评审委员会会议议04-14
北师大版八年级物理上册期末测试卷及答案汇总-共9页04-10
氧气瓶和乙炔瓶的安全技术操作规程12-14
德育课程一体化实施方案07-01
Excel多选题04-20
《难忘的一课》教学设计12-20
复杂网络的构建方法研究与实现05-30
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 管理系统
- 实现
- 数据库
- 图书
- 设计
- MYSQL
- 正泰KG316T微电脑时控开关使用说明
- 高数同济§1.9 连续函数的运算与初等函数的连续性例题09-2
- 保安部(技能考核标准)
- CF刀口法兰的正确安装方法
- 保安考核奖罚标准试题
- 脑出血病人的护理查房2
- 中英对照美国公司法概要幻灯片
- 非公开定向债务融资工具的法律意见书
- 综合素质作文范文教师资格证
- 青岛版小学数学三年级下册第四单元《长方形和正方形的面积》
- 重庆市建设项目环境保护设计备案文件标准样式及设计备案编制规定
- 英语写作课教案
- 2017-2023年中国金融行业市场分析与投资前景研究报告(目录)
- 学习小学生行为规范的心得体会李秀梅
- 2014版洗中煤余热发电项目(立项及贷款用)可行性研究报告编制机构服务流程及案例展示
- 数学物理方程与特殊函数课后答案
- 地砖铺贴施工技术交底
- 申请减免垃圾清运费的报告
- 高层塔吊装拆方案编制及安全技术控制
- Mercer+salary的人力资源薪酬设计方案