赞
踩
说明:本文章的图书管理系统设计将演示mysql数据库设计的基本流程:总体需求,功能需求,数据流图,数据字典,概念模型设计,逻辑模型设计,创建数据库,创建数据库表,创建视图,功能相关sql语句。不涉及前端页面的编写,前后端交互等部分。
设计需求:设计并开发一个小型的图书借阅管理系统。图书借阅管理系统主要有三类用户,(1)系统管理员:实现对读者、图书以及图书管理员信息的增加、删除、查询、修改等。读者信息包括证件号、姓名、证件状态(有效和失效)、联系方式等。图书信息包括图书编号、图书名称、作者、出版社、价格等。工作人员信息包括工作证号、姓名、电话等。
(2)读者:可以实现借书、还书,查阅图书信息、查询借书信息等。
(3)工作人员:可以实现办理借书、还书,图书超期罚款等。
图书馆规定:每位读者可以借阅多本图书,一本图书可以被不同的读者借阅,每借出一本书都有借阅日期、应还日期,每本图书的借阅期限是一个月,超期一天罚款0.5元。
图书管理系统主要满足三类用户需求:系统管理员、读者、工作人员
1)系统管理员:
实现对读者、图书以及图书管理员信息的增加、删除、查询、修改等。
读者信息包括证件号、姓名、证件状态(有效和失效)、联系方式等。
图书信息包括图书编号、图书名称、作者、出版社、价格等。
工作人员信息包括工作证号、姓名、电话等。
(2)读者:
可以实现借书、还书,查阅图书信息、查询借书信息等。
(3)工作人员:
可以实现办理借书、还书,图书超期罚款等。
图书馆规定:每位读者可以借阅多本图书,一本图书可以被不同的读者借阅,每借出一本书都有借阅日期、应还日期,每本图书的借阅期限是一个月,超期一天罚款0.5元
1)系统管理员
查询图书,读者,工作人员,借书信息
新增图书,读者,工作人员,借书信息
修改图书,读者,工作人员,借书信息
删除图书,读者,工作人员,借书信息
(2)读者:
查询所有书籍信息
查询借书信息
提交借书申请
提交还书申请
对自己的读者信息进行查询,修改
(3)工作人员:
查询所有书籍信息
查询借书信息
处理借书申请
处理还书申请并决定是否罚款
对自己的工作人员信息进行查询,修改
图书借阅系统功能模块划分:
第0层数据流:
第1层数据流
第2层数据流
登录(以读者为例)
借书
还书
处理借书申请
处理还书申请
1数据项
名称 | 说明 | 数据类型 | 字符个数 |
book_id | 图书编号 | varchar | 10 |
book_name | 图书名称 | varchar | 10 |
author | 作者 | varchar | 12 |
publish_name | 出版社 | varchar | 12 |
price | 价格 | int | / |
lend | 剩余数量 | int | / |
worker_id | 工作证号 | varchar | 8 |
worker_name | 工作人员姓名 | varchar | 5 |
worker_phone | 工作人员电话 | varchar | 11 |
worker_pwd | 工作人员密码 | varchar | 11 |
reader_id | 读者证号 | varchar | 8 |
reader_name | 读者姓名 | varchar | 5 |
reader_phone | 读者电话 | varchar | 11 |
reader_pwd | 读者密码 | varchar | 11 |
reader_staitc | 读者证状态 | varchar | 5 |
lend_date | 借阅日期 | date | YYYY-MM-DD |
borrow_date | 应还日期 | date | YYYY-MM-DD |
cost | 罚款 | float(5,2) | / |
2数据结构
名称:图书表
说明:图书的详细信息
结构:
名称 | 说明 |
book_id | 图书编号 |
book_name | 图书名称 |
author | 作者 |
publish_name | 出版社 |
price | 价格 |
lend | 剩余数量 |
名称:借书表
说明:借书信息
结构:
名称 | 说明 |
reader_id | 读者证号 |
book_name | 图书名字 |
lend_date | 借阅日期 |
borrow_date | 应还日期 |
名称:工作人员表
说明:工作人员详细信息
结构:
名称 | 说明 |
worker_id | 工作证号 |
worker_name | 工作人员姓名 |
worker_phone | 工作人员电话 |
worker_pwd | 工作人员密码 |
名称:读者表
说明:读者详细信息
名称 | 说明 |
reader_id | 读者证号 |
reader_name | 读者姓名 |
reader_phone | 读者电话 |
reader_pwd | 读者密码 |
reader_staitc | 读者证状态 |
名称:罚款表
说明:罚款信息
名称 | 说明 |
reader_id | 读者证号 |
worker_id | 工作证号 |
book_name | 图书名字 |
cost | 罚款 |
概念模型设计
实体:读者,工作人员,图书
读者属性:读者证号,读者姓名,读者电话,读者密码,读者证状态
工作人员属性:工作证号,工作人员姓名,工作人员电话,工作人员密码
图书属性:图书编号,图书名称,作者,出版社,价格,借阅状态
实体与实体之间的关系
一个读者可以借阅、归还多本书,每本书可以被多个读者借阅、归还
工作人员可以修改多本图书借阅状态,一本图书借阅状态只能由一个工作人员修改
工作人员可对多个读者进行罚款,一个读者可被多个工作人员罚款
E-R模型图
逻辑模型设计
Book(book_id, book_name,author,publish_name,price,lend);
Lend_book(reader_id, book_id, lend_date, borrow_date);
Worker(worker_id, worker_name, worker_phone, worker_pwd);
Reader(reader_id,reader_name,reader_phone,reader_pwd,reade;r_static);
Cost(reader_id,worker_id,book_name,cost);
数据库表结构设计
Book表
列名 | 数据类型 | 约束 | 说明 |
book_id | varchar(10) | primary key | 图书编号 |
book_name | varchar(10) | not null | 图书名称 |
author | varchar(12) | not null | 作者 |
publish_name | varchar(12) | not null | 出版社 |
price | int | not null | 价格 |
lend | int | not null | 剩余数量 |
Lend_book表
列名 | 数据类型 | 约束 | 说明 |
reader_id | varchar(8) | foreign key | 读者证号 |
book_name | varchar(10) | foreign key | 图书名字 |
lend_date | date | not null | 借阅日期 |
borrow_date | date | not null | 应还日期 |
Worker表
列名 | 数据类型 | 约束 | 说明 |
worker_id | varchar(8) | primary key | 工作证号 |
worker_name | varvhar(5) | not null | 工作人员姓名 |
worker_phone | varchar(11) | not null | 工作人员电话 |
worker_pwd | varchar(11) | not null | 工作人员密码 |
Reader表
列名 | 数据类型 | 约束 | 说明 |
reader_id | varchar(8) | primary key | 读者证号 |
reader _name | varvhar(5) | not null | 读者姓名 |
reader _phone | varchar(11) | not null | 读者电话 |
reader _pwd | varchar(11) | not null | 读者密码 |
reader_staitc | varvhar(5) | not null | 读者证状态 |
Cost表
列名 | 数据类型 | 约束 | 说明 |
reader_id | varchar(8) | foreign key | 读者证号 |
worker_id | varchar(8) | foreign key | 工作证号 |
book_name | varchar(10) | foreign key | 图书名字 |
cost | float(5,2) | not null | 罚款 |
创建数据库
create database library;
创建数据库表
创建图书表
- create table Book(
-
- book_id varchar(10) primary key,
-
- book_name varchar(10) not null,
-
- author varchar(12) not null,
-
- publish_name varchar(12) not null,
-
- price int not null ,
-
- lend int not null
-
- );
创建借书表
- create table Lend_book (
-
- reader_id varchar(8),
-
- book_name varchar(10) ,
-
- lend_date date not null,
-
- borrow_date date not null,
-
- foreign key (reader_id) references Reader(reader_id),
-
- foreign key (book_name) references Reader(book_name)
-
- );
创建工作人员表
- create table Worker(
-
- worker_id varchar(8) primary key,
-
- worker_name varchar(5) not null,
-
- worker_phone varchar(11) not null,
-
- worker_pwd varchar(11) not null,
-
- );
创建读者表
- create table Cost(
-
- reader_id varchar(8) primary key,
-
- reader _name varchar(5) not null,
-
- reader _phone varchar(11) not null,
-
- reader _pwd varchar(11) not null,
-
- reader_staitc varchar(5) not null
-
- );
创建罚款表
- create table Worker(
-
- reader_id varchar(8) ,
-
- worker_id varchar(8),
-
- book_name varchar(10),
-
- cost float(5,2) not null,
-
- foreign key (reader_id) references Reader(reader_id),
-
- foreign key (worker_id) references Worker(worker_id),
-
- foreign key (book_name) references Worker(book_name)
-
- );
创建索引
- create unique index ibook on Book(book_id);
-
- create cluster index ilend on Lend_book(reader_id);
-
- create unique index iworker on Worker(worker_id);
-
- create unique index ireader on Reader (reader_id);
-
- create cluster index icost on Lend(reader_id);
创建视图
创建超过归还日期的图书视图
create view over as select * from Book where DATE_SUB(CURRENT_DATE(),INTERVAL 1 month) > borrow_date;
创建借阅证失效的读者视图
create view miss as select * from Reader where reader_staitc=’outdate’;
功能相关sql语句:
增加图书
insert into Book values(‘001’,’红楼梦’,’曹雪芹’,’东方出版社’,55,20);
修改图书
update Book set lend=19 where book_id=’001’;
查询图书
select * from Book;
删除图书
delete from Book where book_id=’001’;
增加工作人员
insert into Worker values(‘202301’,’老王’,’666666’,’123456’);
修改工作人员
update Worker set pwd=’123’ where worker_id=’202301’;
查询工作人员
select * from Worker where worker_id=’202301’;
删除工作人员
delete from Worker where worker_id =’202301’;
增加读者
insert into Reader values(‘00001’,’小明’,’888888,’123456’);
修改读者
update Reader set pwd=’123’ where reader_id=’ 00001’;
查询读者
select * from Reader where reader_id=’ 00001’;
删除读者
delete from Reader where reader_id=’ 00001’;
增加借书信息
insert into Lend_book values(‘00001’,’红楼梦’,’2023-11-11’,’2023-12-11’);
修改借书信息
update Lend_book set borrow_date=’2024-1-1’ where reader_id=’ 00001’ and book_name=’红楼梦’;
查询借书信息
select * from Lend_book where book_name=’红楼梦’;
删除借书信息
delete from Lend_book where reader_id=’ 00001’ and book_name=’红楼梦’;
增加罚款
insert into Cost values(‘00001’,’202301’,’红楼梦’,18.5);
修改罚款
update Cost set cost=19.5 where reader_id=’ 00001’ and book_name=’红楼梦’ ;
查询罚款
select * from Cost where reader_id=’ 00001’;
删除罚款
delete from Cost where reader_id=’ 00001’ and book_name=’红楼梦’;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。