【数据库】图书管理系统

分析学校的图书借阅系统,尝试模拟该借阅系统的数据库结构自行设计一个数据库。数据库所支持的功能和存储的信息需至少包含如下几个方面。

读者信息,可参考下图,只需设计其中主要属性信息即可。需要注意,每个读者可能有着不同的借阅权限,比如:本科生能借阅50本,教师能借阅100本,而且借阅时限也不同,所以,为了便于管理,将读者分为不同等级,每个等级有着不同的借阅权限。因此需要设计借阅等级信息的结构,其中应包含最大借阅量,最长借阅时限等信息。

图书信息,可参考下图,只需设计其中主要属性信息即可。与图书内容相关的学科主题词信息(主题词经常要临时增加,所以要单独保存)。为了方便图书馆采购,还需要存储出版社联系信息(地址、通信方式等)。(注意,一部书只能由一个出版社出版)

注意,同一部书一般提供了多本供借阅,多本书有着不同的条码号,如下图所示,同一个书籍信息下提供了多本图书,而且存放在不同位置。因此,需要考虑每部图书信息和具体的每本图书信息之间的关系。

读者可以针对图书进行评论,如下图所示,包括评论内容,评论时间,评论者,评分等信息。注意评论针对的是一部图书,而并非某一本书(因为有多本)。

----------要求-----------

分析设计以上基本问题的概念模型(E-R图)。

根据概念模型设计相应的关系模式。

设定一些约束:例如,读者姓名不能为空,读者等级默认为0,图书条码为7位数字构成。

向每个数据表中输入若干测试数据。

创建如下视图:

视图1:显示所有当前仍未归还的图书条码、借阅者姓名、编号、借阅时间和应还时间;

视图2:显示某图书条码和历史总借阅量;

视图3:显示与某主题词相关的所有图书条码和历史总借阅量;

视图4:显示某读者的编号(如20181001)和其当前所有未归还图书的条码、图书名称和应还日期;

视图5:显示某读者的编号和其对应的历史借阅信息,包括图书条码、图书名称、实际借阅日期和实际归还日期;

视图6:显示某读者编号和其发表的书评内容,包括评论的图书名称、评论时间和评论内容;

视图7:显示某出版社名称及其出版的所有图书名称。

ER图:

代码:

create database db
use db

create table 借阅等级信息(
    借阅等级 int primary key,
    最长借阅时间 int,
    最大借阅数量 int,
)

insert into 借阅等级信息 values
(0, 30, 10),
(1, 60, 20),
(2, 90, 30),
(3, 120, 40)

create table 读者信息(
    姓名 char(15) not null,
    证件号 char(12) primary key,
    借阅等级 int default 0,
    累计借书 int default 0,
    foreign key(借阅等级) references 借阅等级信息(借阅等级)
)

insert into 读者信息(姓名, 证件号, 借阅等级) values
(‘张三‘, ‘541607120165‘, 1),
(‘李四‘, ‘541707010185‘, 3),
(‘王五‘, ‘541707120165‘, 1),
(‘赵六‘, ‘541505980268‘, 2),
(‘孙七‘, ‘541407010169‘, 0),
(‘周八‘, ‘541307010489‘, 1)

create table 出版社信息(
    出版社 varchar(20) primary key,
    地址 varchar(25),
    联系电话 char(7)
)

insert into 出版社信息 values
(‘清华大学出版社‘, ‘北京‘, ‘4979421‘),
(‘晟威出版社‘, ‘天津‘, ‘5564130‘),
(‘南海出版公司‘, ‘海南‘, ‘4984910‘),
(‘上海文艺出版社‘, ‘上海‘, ‘6640239‘)

create table 图书信息(
    索书号 char(15) primary key,
    作者 char(15),
    书名 char(15),
    出版社 varchar(20),
    出版时间 date,
    foreign key(出版社)references 出版社信息(出版社)
)
insert into 图书信息 values
(‘b12987‘, ‘严蔚敏‘, ‘数据结构‘, ‘清华大学出版社‘, ‘2012-02-06‘),
(‘b97894‘, ‘东野圭吾‘, ‘幻夜‘, ‘南海出版公司‘, ‘2004-08-02‘),
(‘b16546‘, ‘吴玉华‘, ‘物理实验教程‘, ‘清华大学出版社‘, ‘2013-05-15‘),
(‘b89490‘, ‘张雪峰‘, ‘考研指点‘, ‘晟威出版社‘, ‘2016-12-12‘),
(‘b56400‘, ‘郏宗培‘, ‘纸上寻仙记‘, ‘上海文艺出版社‘, ‘2011-02-05‘)

create table 单本图书信息(
    条码号 char(7) primary key check(len(条码号) = 7),
    索书号 char(15),
    馆藏地 varchar(40),
    书刊状态 varchar(6) check(书刊状态 in (‘可借‘, ‘借出‘, ‘非可借‘)),
    历史借阅量 int default 0,
    foreign key(索书号)references 图书信息(索书号)
)

insert into 单本图书信息(条码号, 索书号, 馆藏地, 书刊状态) values
(‘t987628‘, ‘b97894‘, ‘三楼A8‘, ‘借出‘),
(‘t594805‘, ‘b97894‘, ‘二楼C7‘, ‘可借‘),
(‘t984910‘, ‘b89490‘, ‘五楼A2‘, ‘借出‘),
(‘t940566‘, ‘b12987‘, ‘负一楼D3‘, ‘借出‘)

create table 借阅信息(
    借阅号 char(6) primary key,
    借阅时间 date,
    归还时间 date,
    图书条码号 char(7),
    借阅人证件号 char(12),
    foreign key(图书条码号) references 单本图书信息(条码号),
    foreign key(借阅人证件号) references 读者信息(证件号)
)

create table 评论信息(
    评论号 char(8) primary key,
    评分 numeric(2, 1),
    内容 varchar(200),
    评论时间 date,
    评论者id char(12),
    索书号 char(15),
    foreign key(索书号)references 图书信息(索书号),
    foreign key(评论者id)references 读者信息(证件号)
)

insert into 评论信息 values
(‘p12391‘, 8.9, ‘很有趣‘, ‘2015-06-24‘, ‘541707010185‘, ‘b97894‘),
(‘p98523‘, 7.8, ‘受益颇多‘, ‘2016-05-22‘, ‘541307010489‘, ‘b89490‘),
(‘p94606‘, 6.8, ‘完全看不懂orz‘, ‘2017-05-02‘, ‘541607120165‘, ‘b12987‘)

create table 主题词信息(
    ID char(8) primary key,
    类别 char(15),
    索书号 char(15),
    foreign key(索书号)references 图书信息(索书号)
)

insert into 主题词信息 values
(‘z64400‘, ‘计算机‘, ‘b12987‘),
(‘z95410‘, ‘物理‘, ‘b16546‘),
(‘z98500‘, ‘考研‘, ‘b89490‘),
(‘z64165‘, ‘推理\悬疑‘, ‘b97894‘),
(‘z69850‘, ‘仙侠‘, ‘b56400‘)

--触发器1:读者借书后引发的一系列操作
use db
go
create trigger trigger1
on 借阅信息
after insert
as
begin
update 读者信息                                                 --更改读者累计借书量
set 累计借书 = 累计借书 + 1
from 读者信息, inserted
where 读者信息.证件号 = inserted.借阅人证件号

update 单本图书信息                                             --更改图书状态
set 单本图书信息.书刊状态 = ‘借出‘
from inserted, 单本图书信息
where inserted.图书条码号 = 单本图书信息.条码号

update 单本图书信息
set 历史借阅量 = 历史借阅量 + 1                                 --更改图书历史借阅量
from inserted, 单本图书信息
where inserted.图书条码号 = 单本图书信息.条码号
end

insert into 借阅信息 values
(‘j13488‘, ‘2018-05-01‘, ‘2018-08-01‘, ‘t987628‘, ‘541407010169‘)
insert into 借阅信息 values
(‘j14910‘, ‘2016-12-11‘, ‘2017-01-25‘, ‘t984910‘, ‘541607120165‘)
insert into 借阅信息 values
(‘j97890‘, ‘2018-05-14‘, ‘2018-06-14‘, ‘t940566‘, ‘541607120165‘)

--试图1:显示所有当前仍未归还的图书条码、借阅者姓名、编号、借阅时间和应还时间
go
create view view_1(图书条码, 借阅者姓名, 编号, 借阅时间, 应还时间)
as
select 图书条码号, 姓名, 证件号, 借阅时间, 归还时间
from 借阅信息, 读者信息
where 借阅信息.借阅人证件号 = 读者信息.证件号 and 归还时间 > getdate()

--试图2:显示某图书条码和历史总借阅量
go
create view view_2(图书条码, 历史总借阅量)
as
select 条码号, 历史借阅量
from 单本图书信息, 图书信息
where 单本图书信息.索书号 = 图书信息.索书号 and 书名 = ‘幻夜‘

--视图3:显示与某主题词相关的所有图书条码和历史总借阅量
go
create view view_3(类别, 图书条码, 历史总借阅量)
as
select 类别, 条码号, 历史借阅量
from 单本图书信息, 图书信息, 主题词信息
where 主题词信息.索书号 = 图书信息.索书号 and 图书信息.索书号 = 单本图书信息.索书号 and 类别 = ‘考研‘

--试图4:显示某读者的编号(如20181001)和其当前所有未归还图书的条码、图书名称和应还日期
go
create view view_4(读者编号, 条码, 图书名称, 应还日期)
as
select 借阅人证件号, 图书条码号, 书名, 归还时间
from 单本图书信息, 图书信息, 借阅信息
where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 图书信息.索书号
and 归还时间 > getdate() and 借阅人证件号 = ‘541607120165‘

--试图5:显示某读者的编号和其对应的历史借阅信息,包括图书条码、图书名称、实际借阅日期和实际归还日期
go
create view view_5(读者编号, 图书条码, 图书名称, 借阅日期, 归还日期)
as
select 借阅人证件号, 图书条码号, 书名, 借阅时间, 归还时间
from 单本图书信息, 图书信息, 借阅信息
where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 图书信息.索书号
and 借阅人证件号 = ‘541607120165‘

--试图6:显示某读者编号和其发表的书评内容,包括评论的图书名称、评论时间和评论内容
go
create view view_6(读者编号, 图书名称, 评论时间, 评论内容)
as
select 评论者id, 书名, 评论时间, 内容
from 借阅信息, 单本图书信息, 评论信息, 图书信息
where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 评论信息.索书号
and 评论信息.索书号 = 图书信息.索书号 and 评论者id = ‘541607120165‘

--视图7:显示某出版社名称及其出版的所有图书名称,并按出版时间排序
go
create view view_7(出版社名称, 图书名称, 出版时间)
as
select top 100 percent 出版社信息.出版社, 书名, 出版时间
from 出版社信息, 图书信息
where 出版社信息.出版社 = 图书信息.出版社
order by 出版时间 asc

--执行
select * from view_1

select * from view_2

select * from view_3

select * from view_4

select * from view_5

select * from view_6

select * from view_7 order by 出版时间 asc

原文地址:https://www.cnblogs.com/lesroad/p/9072915.html

时间: 2024-10-07 03:32:24

【数据库】图书管理系统的相关文章

c语言小项目-使用mysql数据库的图书管理系统

VS2013通过MySQL方式连接到MySQL MySQL官网上C++的API有两个.一个是很成熟的mysql++,另一个是MySQL Connector/C++,近两年才出的,模仿JDBC做的,封装得很方便使用.这里使用的是mysql方式. 1.新建bookAdminSys工程 2.将文件夹MySQL目录下的include添加到VC++目录中的包含目录中,另外将文件夹MySQL目录下的lib添加到VC++目录中的库目录中 3.添加附加依赖项,将MySQL目录下的libmysql.lib添加到L

jsp数据库增删改查——简单的图书管理系统网页版

登录(指定登录号密码的简单判断): 1 <%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

图书管理系统

该图书馆里系统能实现基本的对图书信息的操作和借阅.归还功能. 一.主要内容: 本课程设计结合本学期所学C语言知识,数组.函数.结构体.指针.链表.文件读取操作等等,准备设计开发一个简单的图书管理系统.设计开发这个系统需要用到链表.文件读取操作.结构体.函数.指针.等C语言知识.本课程设计将会实现对图书信息的账号登录.注册账号.密码修改.密码查找.查找.输出.排序.备份.恢复.图书借阅和归还功能.本着简单.易用的设计原则,本课程设计在尽量优化界面在保证输入输出美观的同时又不失友好的交互界面. 本次

图书管理系统------软件设计图纸

图书管理系统------软件设计图纸 一.图书馆管理系统总体功能概述 图书馆管理系统功能图: 1.系统登录模块 : 本模块的功能点包括: (1) 判断用户名和密码是否相符: (2) 根据用户的权限类型,登录到系统的制定界面操作使用. 2.图书管理模块: 在本模块中图书馆工作人员可以对图书进行管理操作. 本模块的功能点包括: (1) 新书入库,将新进图书按其类型将图书的基本信息录入系统数据库: (2) 图书出库,某一部分图书会随着时间的增长及知识的更新而变得不再有收藏的价值,或者图书被损坏,这些图

Java图书管理系统(用Java常用集合实现)

图书管理系统 一.需求说明 1.功能:登录,注册,忘记密码,管理员管理,图书管理. 2.管理员管理:管理员的增删改查. 3.图书管理:图书的增删改查. 4.管理员属性包括:id,姓名,性别,年龄,家庭住址,手机号码,登录名称,登录密码,状态. 5.图书属性包括:id,图书名称,作者,单价,出版社,出版日期,类别. 6.技术:通过用集合来模拟数据库实现该系统,建议采用List集合实现,集合模拟数据库只是一个数据的临时保存. 二.功能说明 1.注册功能 描述:注册需要用户输入所有的必须的用户信息.

[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website development Tags asp.net / mvc4 相关资源 ibatis manual pro git 廖雪峰的官方网站 BookMS-V1.0 上一篇链接 任务简介 开发工具:VS2010 项目框架:MVC4 浏览器:Chrome 数据库ORM框架:iBatis.net 数据库:mysql 后端开

基于jsp+servlet图书管理系统之后台用户信息删除操作

上一篇的博客写的是修改操作,且附有源码和数据库,这篇博客写的是删除操作,附有从头至尾写的代码(详细的注释)和数据库! 此次删除操作的源码和数据库:http://download.csdn.net/detail/biexiansheng/9732955 自此,基于jsp+servlet开发的用户信息增删该查已经全部写完了,上面的链接是全部的代码,包含增删该查和数据库. 注意点: 1:删除操作使用的是伪删除.即只是不在页面显示了,但是还保存在数据库. 2:分页查询使用的是一个小工具,后面有时间把这些

《图书管理系统》软件需求说明书

图书管理系统                                                                 软件需求说明书 一.引言 1.1编写目的 一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉.在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工.一个最典型的手工处理还书过程就是:读者将要借的书和借阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借阅证放在一个小格栏里,并在借阅证

【图书管理系统】——要学会抓住机会

图书管理系统经历了一个月,算是完成了,这算是自己参与的第一个B/S系统,感觉什么东西都是新的,在这个系统里真的可以学到很多东西,最想说的就是感谢老师给了这么一个锻炼的机会,最重要的还是自己抓住了这个机会. 最先开始的时候,听说了有这个系统,师傅也一直在说让我做一个项目,然后就毫不犹豫的参加了.后来听说没有师姐带着,就是自己做,突然就觉得这个项目并没有很正式,一下子就泄了心气了,不过好在当初没有退出,还是坚持做了下来,到最后做完为止,才发觉这个系统对自己现阶段是多么的重要,才觉得自己的眼界一下子就

图书管理系统的设计

1.导言 1.1.目的 1.2.范围 2.系统定义 2.1.项目来源背景 2.2.项目要达到的目标 2.3.系统整体结构 3.应用环境 3.1.系统运行网络环境 3.2.系统运行硬件环境 3.3.系统运行软件环境 4.功能规格 4.1.XXX模块功能说明 5.性能需求 5.1.界面需求 6.产品提交 7.实现约束       1.目 的 1.1.目 的    为了方便借阅图书,制定了图书管理系统,可以从网上直接进行预定借阅,y在网上阅读电子版的书籍. 1.2.范 围 适用于本校学生,和老师,以及