基于Workbench实现一个简易的图书馆管理系统 MySQL

目录

创建书籍信息表

创建借阅者信息表

创建借阅记录表

插入书籍

插入借阅者信息

插入完成后的结果

 借阅人的操作

浏览书籍

 借书

 还书

 管理员的操作

上架新书

增加书的数量

减少书的数量

下架书


创建书籍信息表

CREATE TABLE `library`.`books` (
  `bid` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL COMMENT '书籍名称',
  `count` INT NOT NULL COMMENT '存量',
  `total` INT NOT NULL COMMENT '总量',
  PRIMARY KEY (`bid`))
COMMENT = '书籍信息';

创建借阅者信息表

CREATE TABLE `library`.`readers` (
  `rid` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`rid`))
COMMENT = '借阅者信息';

创建借阅记录表

CREATE TABLE `library`.`records` (
  `reid` INT NOT NULL AUTO_INCREMENT,
  `rid` INT NOT NULL COMMENT '谁借的',
  `bid` INT NOT NULL COMMENT '借的哪本书',
  `borrowed_at` DATETIME NOT NULL DEFAULT current_timestamp COMMENT '借阅时间',
  PRIMARY KEY (`reid`))
COMMENT = '借阅记录';

插入书籍

-- 插入书籍
insert into books(name,count,total) values 
   ('西游记',10,10),
   ('红楼梦',20,20),
   ('三国演义',35,35),
   ('鲁滨逊漂流记',10,10),
   ('水浒传',10,10);

插入借阅者信息

-- 插入借阅者信息
insert into readers(name) values 
   ('张三'),
   ('李四');

插入完成后的结果

 

 借阅人的操作

浏览书籍

-- 借阅人:浏览书籍记录
select * from books order by id;

 借书

-- 借阅人:借书 rid为1的张三借阅了bid为2红楼梦
-- 把图书馆中红楼梦的存量-1
update books set count = count -1 where bid = 2;
-- 在借阅记录中插入张三借阅红楼梦的记录
insert into records (rid,bid) values (1,2);

 

 还书

-- 借阅人:借书 rid为1的张三把bid为2红楼梦归还
-- 把图书馆中红楼梦的存量+1
update books set count = count +1 where bid = 2;
-- 在借阅记录中删除张三借阅红楼梦的记录
delete from records where rid = 1 and bid = 2;

 

 管理员的操作

上架新书

-- 管理员 :上架新书海底两万里和巴黎圣母院
insert into books (name,count,total) values ('海底两万里',15,15),('巴黎圣母院',20,20);

 

 

增加书的数量

-- 管理员 :增加 bid 为1的书的数量
update books set count = count + 10,total = total + 10 where bid = 1;

 

减少书的数量

-- 管理员 :减少 bid 为7的书的数量
update books set count = count - 10,total = total - 10 where bid = 7;

 

 

下架书

  • 当没有人借书的时候才可以下架书
-- 管理员 :下架 bid 为1的书
delete from books where bid = 1;

 

 

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个简单的图书管理系统的数据库设计和实现: ### 数据库设计 我们需要创建以下几个表: 1. 书籍表(book) 2. 用户表(user) 3. 借书记录表(borrow) 其,书籍表和用户表分别用于存储所有书籍和用户的信息,借书记录表则用于记录用户借阅书籍的历史记录。 #### 书籍表(book) | 字段名 | 数据类型 | 主键 | 自增 | 允许为空 | 描述 | | ---------- | ----------- | ---- | ---- | -------- | ------------ | | id | INT | 是 | 是 | 否 | 书籍ID | | name | VARCHAR(50) | 否 | 否 | 否 | 书籍名称 | | author | VARCHAR(50) | 否 | 否 | 否 | 书籍作者 | | publisher | VARCHAR(50) | 否 | 否 | 否 | 书籍出版社 | | publish_at | DATE | 否 | 否 | 否 | 书籍出版日期 | | status | INT | 否 | 否 | 否 | 书籍状态 | `status`字段用于表示书籍的状态,0表示可借,1表示已借出。 #### 用户表(user) | 字段名 | 数据类型 | 主键 | 自增 | 允许为空 | 描述 | | ------ | ----------- | ---- | ---- | -------- | ---------- | | id | INT | 是 | 是 | 否 | 用户ID | | name | VARCHAR(50) | 否 | 否 | 否 | 用户名字 | | phone | VARCHAR(20) | 否 | 否 | 否 | 用户电话 | | email | VARCHAR(50) | 否 | 否 | 否 | 用户邮箱 | | gender | VARCHAR(5) | 否 | 否 | 是 | 用户性别 | | role | INT | 否 | 否 | 否 | 用户角色 | `role`字段用于表示用户的角色,0表示管理员,1表示普通用户。 #### 借书记录表(borrow) | 字段名 | 数据类型 | 主键 | 自增 | 允许为空 | 描述 | | ----------- | -------- | ---- | ---- | -------- | ---------- | | id | INT | 是 | 是 | 否 | 记录ID | | user_id | INT | 否 | 否 | 否 | 用户ID | | book_id | INT | 否 | 否 | 否 | 书籍ID | | borrow_date | DATE | 否 | 否 | 否 | 借书日期 | | return_date | DATE | 否 | 否 | 是 | 归还日期 | | status | INT | 否 | 否 | 否 | 借阅状态 | `status`字段用于表示借书记录的状态,0表示未归还,1表示已归还。 ### 数据库实现 我们可以使用MySQL Workbench来创建这些表和数据。以下是创建表的SQL代码: ``` sql -- 创建书籍表 CREATE TABLE `book` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `author` VARCHAR(50) NOT NULL, `publisher` VARCHAR(50) NOT NULL, `publish_at` DATE NOT NULL, `status` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ); -- 创建用户表 CREATE TABLE `user` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `phone` VARCHAR(20) NOT NULL, `email` VARCHAR(50) NOT NULL, `gender` VARCHAR(5), `role` INT NOT NULL DEFAULT 1, PRIMARY KEY (`id`) ); -- 创建借书记录表 CREATE TABLE `borrow` ( `id` INT NOT NULL AUTO_INCREMENT, `user_id` INT NOT NULL, `book_id` INT NOT NULL, `borrow_date` DATE NOT NULL, `return_date` DATE, `status` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ); ``` 接下来,我们可以向这些表添加一些样例数据,例如: ``` sql -- 向书籍表添加样例数据 INSERT INTO `book` (`name`, `author`, `publisher`, `publish_at`, `status`) VALUES ('人类简史', '尤瓦尔·赫拉利', '信出版社', '2014-01-01', 0); INSERT INTO `book` (`name`, `author`, `publisher`, `publish_at`, `status`) VALUES ('三体', '刘慈欣', '重庆出版社', '2008-01-01', 0); -- 向用户表添加样例数据 INSERT INTO `user` (`name`, `phone`, `email`, `gender`, `role`) VALUES ('张三', '13812345678', 'zhangsan@example.com', '男', 1); INSERT INTO `user` (`name`, `phone`, `email`, `gender`, `role`) VALUES ('李四', '13987654321', 'lisi@example.com', '女', 1); -- 向借书记录表添加样例数据 INSERT INTO `borrow` (`user_id`, `book_id`, `borrow_date`, `return_date`, `status`) VALUES (1, 1, '2021-07-01', NULL, 0); INSERT INTO `borrow` (`user_id`, `book_id`, `borrow_date`, `return_date`, `status`) VALUES (2, 2, '2021-07-02', NULL, 0); ``` 现在,我们已经成功创建了一个简单的图书管理系统的数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习java的张三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值