说明:本文章的图书管理系统设计将演示mysql数据库设计的基本流程:总体需求,功能需求,数据流图,数据字典,概念模型设计,逻辑模型设计,创建数据库,创建数据库表,创建视图,功能相关sql语句。不涉及前端页面的编写,前后端交互等部分。
设计需求:设计并开发一个小型的图书借阅管理系统。图书借阅管理系统主要有三类用户,(1)系统管理员:实现对读者、图书以及图书管理员信息的增加、删除、查询、修改等。读者信息包括证件号、姓名、证件状态(有效和失效)、联系方式等。图书信息包括图书编号、图书名称、作者、出版社、价格等。工作人员信息包括工作证号、姓名、电话等。
(2)读者:可以实现借书、还书,查阅图书信息、查询借书信息等。
(3)工作人员:可以实现办理借书、还书,图书超期罚款等。
图书馆规定:每位读者可以借阅多本图书,一本图书可以被不同的读者借阅,每借出一本书都有借阅日期、应还日期,每本图书的借阅期限是一个月,超期一天罚款0.5元。
1.总体需求
图书管理系统主要满足三类用户需求:系统管理员、读者、工作人员
1)系统管理员:
实现对读者、图书以及图书管理员信息的增加、删除、查询、修改等。
读者信息包括证件号、姓名、证件状态(有效和失效)、联系方式等。
图书信息包括图书编号、图书名称、作者、出版社、价格等。
工作人员信息包括工作证号、姓名、电话等。
(2)读者:
可以实现借书、还书,查阅图书信息、查询借书信息等。
(3)工作人员:
可以实现办理借书、还书,图书超期罚款等。
图书馆规定:每位读者可以借阅多本图书,一本图书可以被不同的读者借阅,每借出一本书都有借阅日期、应还日期,每本图书的借阅期限是一个月,超期一天罚款0.5元
2.功能需求
1)系统管理员
查询图书,读者,工作人员,借书信息
新增图书,读者,工作人员,借书信息
修改图书,读者,工作人员,借书信息
删除图书,读者,工作人员,借书信息
(2)读者:
查询所有书籍信息
查询借书信息
提交借书申请
提交还书申请
对自己的读者信息进行查询,修改
(3)工作人员:
查询所有书籍信息
查询借书信息
处理借书申请
处理还书申请并决定是否罚款
对自己的工作人员信息进行查询,修改
图书借阅系统功能模块划分:
3数据流图
第0层数据流:
第1层数据流
第2层数据流
登录(以读者为例)
借书
还书
处理借书申请
处理还书申请
4.数据字典
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
罚款
5.系统数据库结构设计
概念模型设计
实体:读者,工作人员,图书
读者属性:读者证号,读者姓名,读者电话,读者密码,读者证状态
工作人员属性:工作证号,工作人员姓名,工作人员电话,工作人员密码
图书属性:图书编号,图书名称,作者,出版社,价格,借阅状态
实体与实体之间的关系
一个读者可以借阅、归还多本书,每本书可以被多个读者借阅、归还
工作人员可以修改多本图书借阅状态,一本图书借阅状态只能由一个工作人员修改
工作人员可对多个读者进行罚款,一个读者可被多个工作人员罚款
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=’红楼梦’;
版权归原作者 封陽 所有, 如有侵权,请联系我们删除。