共享图书管理系统
共享图书管理系统数据库实现
## 系统目标:
通过系统分析对基本功能进行定型,在调研和收集现有投入使用的图书管理系统的基础上,增加符合本系统需求所要的功能。其中基础功能包括:图书信息的录入和编目,图书的借阅、续借和归还,图书定期盘点、损坏处理和借阅超期功能,读者和图书管理员的权限管理。根据以上功能设计实现系统,进行测试和改进或添加现有功能,实现借阅-归还-共享为一体的图书系统。
一、数据库设计
对于一个共享图书管理系统,对所要处理的数据和信息主要有以下几个。
1.用户
使用系统的用户首先要注册,必须填写用户名,密码,手机号,通过自增生成的id来唯一区分用户。用户首先是借阅者,拥有借阅书籍的权限,其次是潜在的分享者,可以把自己的书籍共享进入平台。
2.书籍
书籍必须拥有书籍id,书籍名称,出版社,出版日期等等信息,关联一张主题表,以分类书籍其特有的图书主题,其次也关联借阅、共享、评论表,以此展示书籍被用户所关心的数据和信息。
3.评论
读者可以针对图书进行评论,如下图所示,包括评论内容,评论时间,评论者,评分等信息。注意评论针对的是一部图书,而并非某一本书(因为有多本)。
4.借阅/共享信息表
用户还需要关联一张查看自己借阅和共享书籍的信息表,以查看自己正在借阅和借阅过的书籍,正在共享和共享过的书籍。
二、E-R图
三、表设计(mysql)
1.bs_info
借阅等级、可借阅最长时间和数量
CREATE TABLE `bsinfo`(
`b_grade` INT PRIMARY KEY,
`longest_time` INT,
`maximum_count` INT
)ENGINE=INNODB DEFAULT CHARSET=utf8;
2.user
用户信息管理表
CREATE TABLE `user`(
`username` VARCHAR(15) NOT NULL,
`password` VARCHAR(20) NOT NULL,
`phone_num` INT(13) NOT NULL,
`email` VARCHAR(20),
`address` VARCHAR(30),
`authority` INT(1) DEFAULT 0,
`user_id` INT PRIMARY KEY AUTO_INCREMENT,
`b_grade` INT DEFAULT 0,
`totally_borrowed` INT DEFAULT 0,
FOREIGN KEY(`b_grade`) REFERENCES bs_info(`b_grade`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
3.publisher
出版社信息
CREATE TABLE `publisher`(
`press_name` VARCHAR(20) PRIMARY KEY,
`press_address` VARCHAR(25),
`press_phone` VARCHAR(11)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
4.books_info
图书信息管理表
CREATE TABLE `books_info`(
`book_id` CHAR(15) PRIMARY KEY,
`book_author` VARCHAR(15),
`book_name` VARCHAR(15),
`press_name` VARCHAR(20),
`press_date` DATE,
`book_status` VARCHAR(6) CHECK(`book_status` IN(`可借`,`借出`,`不可借`)),
`book_counts` INT DEFAULT 0,
`book_borrowed_amount` INT DEFAULT 0,
FOREIGN KEY(`press_name`) REFERENCES publisher(`press_name`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
5.borrowed_info
借出标识信息表
CREATE TABLE `books_info`(
`book_id` CHAR(15) PRIMARY KEY,
`book_author` VARCHAR(15),
`book_name` VARCHAR(15),
`press_name` VARCHAR(20),
`press_date` DATE,
`book_status` VARCHAR(6) CHECK(`book_status` IN(`可借`,`借出`,`不可借`)),
`book_counts` INT DEFAULT 0,
`book_borrowed_amount` INT DEFAULT 0,
FOREIGN KEY(`press_name`) REFERENCES publisher(`press_name`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
6.shared_info
共享表示信息表
CREATE TABLE `shared_info`(
`shared_id` CHAR(6) PRIMARY KEY,
`shared_time` DATE,
`shared_back` DATE,
`book_id` CHAR(15),
`user_id` INT,
FOREIGN KEY(`book_id`) REFERENCES books_info(`book_id`),
FOREIGN KEY(`user_id`) REFERENCES users(`user_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
7.comment_info
评论管理表
CREATE TABLE `comment_info`(
`c_id` INT AUTO_INCREMENT PRIMARY KEY,
`c_content` VARCHAR(200),
`c_time` DATE,
`user_id` INT,
`book_id` CHAR(15),
FOREIGN KEY(`user_id`) REFERENCES users(`user_id`),
FOREIGN KEY(`book_id`) REFERENCES books_info(`book_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
8.theme_info
图书主题管理表
CREATE TABLE `comment_info`(
`c_id` INT AUTO_INCREMENT PRIMARY KEY,
`c_content` VARCHAR(200),
`c_time` DATE,
`user_id` INT,
`book_id` CHAR(15),
FOREIGN KEY(`user_id`) REFERENCES users(`user_id`),
FOREIGN KEY(`book_id`) REFERENCES books_info(`book_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
参考
https://blog.csdn.net/lingchen336/article/details/104109265
https://www.cnblogs.com/lesroad/p/9072915.html