在此图书馆管理系统中,使用到了一个重要的连接,即与数据库Accesss相连。数据库中存有图书馆中所信息,包括读者信息、管理员资料、借阅与退还记录。所有与管理有关的数据皆在其中,是保证系统能够正常实现各种功能的一架桥。
1、 数据库需求分析
⒈ Admi表,即管理员表,记录了用户名和密码。
⒉ Admirz表,即管理日志表,记录了书号、书名、图书证号、借/还、 *** 作日期、已付款额。
⒊ book表,即图书表,记录了书号、书名、作者、出版社、入库时间、是否借出、价格。
⒋ borrowbook表,即借阅表,记录了图书证号、书号、借阅日期、应还日期。
⒌ person表,即读者表,记录了图书证号、姓名、性别、系别、班级。
2 、数据库表的设计
⒈Admi表
表中记录了可以使管理员进入该系统的用户名及密码,如表1所示。
表1 管理员信息表
⒉Admirz表
表中记录借还书日志,用于存下所有对图书 *** 作的记录,以便以后可以翻阅和查找,如表2所示。
表2 管理日志表
⒊book表
表中记录了库内所有图书的所有资料,如表3-3。
表3 图书表
⒋person表
表中记录库中所有读者的相关信息,如表4所示。
表4 读者表
⒌borrowbook表
表内记录了此时图书的借阅情况,如表5所示。
表5 借阅表
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', 89, '很有趣', '2015-06-24', '541707010185', 'b97894'),
('p98523', 78, '受益颇多', '2016-05-22', '541307010489', 'b89490'),
('p94606', 68, '完全看不懂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')
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')
go
create view view_1(图书条码, 借阅者姓名, 编号, 借阅时间, 应还时间)
as
select 图书条码号, 姓名, 证件号, 借阅时间, 归还时间
from 借阅信息, 读者信息
where 借阅信息借阅人证件号 = 读者信息证件号 and 归还时间 > getdate()
go
create view view_2(图书条码, 历史总借阅量)
as
select 条码号, 历史借阅量
from 单本图书信息, 图书信息
where 单本图书信息索书号 = 图书信息索书号 and 书名 = '幻夜'
go
create view view_3(类别, 图书条码, 历史总借阅量)
as
select 类别, 条码号, 历史借阅量
from 单本图书信息, 图书信息, 主题词信息
where 主题词信息索书号 = 图书信息索书号 and 图书信息索书号 = 单本图书信息索书号 and 类别 = '考研'
go
create view view_4(读者编号, 条码, 图书名称, 应还日期)
as
select 借阅人证件号, 图书条码号, 书名, 归还时间
from 单本图书信息, 图书信息, 借阅信息
where 借阅信息图书条码号 = 单本图书信息条码号 and 单本图书信息索书号 = 图书信息索书号
and 归还时间 > getdate() and 借阅人证件号 = '541607120165'
go
create view view_5(读者编号, 图书条码, 图书名称, 借阅日期, 归还日期)
as
select 借阅人证件号, 图书条码号, 书名, 借阅时间, 归还时间
from 单本图书信息, 图书信息, 借阅信息
where 借阅信息图书条码号 = 单本图书信息条码号 and 单本图书信息索书号 = 图书信息索书号
and 借阅人证件号 = '541607120165'
go
create view view_6(读者编号, 图书名称, 评论时间, 评论内容)
as
select 评论者id, 书名, 评论时间, 内容
from 借阅信息, 单本图书信息, 评论信息, 图书信息
where 借阅信息图书条码号 = 单本图书信息条码号 and 单本图书信息索书号 = 评论信息索书号
and 评论信息索书号 = 图书信息索书号 and 评论者id = '541607120165'
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
扩展资料:
数据库模型:
对象模型
层次模型(轻量级数据访问协议)
网状模型(大型数据储存)
关系模型
面向对象模型
半结构化模型
平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)
架构
数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。
内层:最接近实际存储体,亦即有关数据的实际存储方式。
外层:最接近用户,即有关个别用户观看数据的方式。
概念层:介于两者之间的间接层。
数据库索引
主条目:数据库索引
数据索引的观念由来已久,像是一本书前面几页都有目录,目录也算是索引的一种,只是它的分类较广,例如车牌、身份z字号、条码等,都是一个索引的号码,当我们看到号码时,可以从号码中看出其中的端倪,若是要找的人、车或物品,也只要提供相关的号码,即可迅速查到正确的人事物。
另外,索引跟字段有着相应的关系,索引即是由字段而来,其中字段有所谓的关键字段(Key Field),该字段具有唯一性,即其值不可重复,且不可为"空值(null)"。
例如:在合并数据时,索引便是扮演欲附加字段数据之指向性用途的角色。故此索引为不可重复性且不可为空。
数据库 *** 作:事务
主条目:数据库事务
事务(transaction)是用户定义的一个数据库 *** 作序列,这些 *** 作要么全做,要么全不做,是一个不可分割的工作单位。
事务的并发性是指多个事务的并行 *** 作轮流交叉运行,事务的并发可能会访问和存储不正确的数据,破坏交易的隔离性和数据库的一致性。
网状数据模型的数据结构 网状模型 满足下面两个条件的基本层次联系的集合为网状模型。 1 允许一个以上的结点无双亲; 2 一个结点可以有多于一个的双亲。
参考资料来源:百度百科——数据库
(1)select from 读者表 where 部门=法律系
(2)select 图书的书号,借书证号,借书日期 from 借书登记表 where 还书时期 is null or 还书时期=''
(3)select 书号,还书时期-借书日期 as 借出天数 from 借书登记表 where 还书时期 is null or 还书时期=''
(4)select 书号,count() as 借阅次数 from 借书登记表 group by 书号
(5)select 出版社,sum(价格) as 价格总计 from 图书表 group by 出版社 order by 价格总计 desc
1开发背景数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的树木逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,通过使用PowerBuilder创建的图书管理系统可以让管理人员方便而快捷的进行管理、查询、借阅、录入等工作。2需求分析21系统目标图书管理信息系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。系统开发的总体任务是实现各种信息的系统化,规范化和自动化。22需求定义图书馆管理系统开发。系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。本系统结构分为读者类别管理、读者档案管理、图书类型管理、图书档案管理以及图书流程管理,读者管理可以浏览读者的信息,可以对读者信息进行维护。图书管理可以浏览图书的信息,可以对图书信息进行维护。借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。本系统主要解决的问题是利用关键字对数据库进行查询。其系统的功能模块图如下:图2-1系统功能模块图针对一般图书管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计如下面所示的数据项:读者信息属性:读者学号,读者姓名,读者性别,联系电话,所在院系,生效日期,失效日期,违章状况,累计借书主键:读者学号书籍信息属性:ISBN,书名,作者,出版社,出版日期,简介主键:ISBN管理员信息属性:工作号,姓名,性别,电话,家庭住址主键:工作号23数据流程231读者作为学生对图书管理系统的要求有:1能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。2能够方便地借阅图书、续借图书、归还图书。3能够查询自己的基本资料、借阅图书情况。4能够熟悉图书管理系统的使用。读者进入系统工作的流程图为:2-1进入系统工作的流程图232图书管理员作为图书管理员,他们对图书管理系统的要求有:1能方便的对图书进行录入登记,注销陈旧的书籍。2能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。3能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况等信息,以便各学院能够随时获知本院学生的一些借书信息。图书管理员工作的流程图为:2-2图书管理员工作流程图3功能描述系统功能分析是在系统开发的总体任务的基础上完成。本系统需要完成的功能主要有5部分:(1)图书基本情况的录入,修改,删除等基本 *** 作。1.书籍类别标准的制定,类别信息的输入,包括类别编号,类别名称,关键词,备注信息等。2.书籍类别信息的查询,修改,包括类别编号,类别名称,关键词,备注信息等。3.书籍信息的输入,包括书籍编号,书籍名称,书籍类别,作者名称,出版社名称,出版日期,书籍页数,关键词,登记日期,备注信息等。(2)借书卡模块。1.新生借书证。2.丢失借书证。(3)实现借书功能。1.借书信息的输入,包括借书信息编号,读书编号,读者姓名,书籍编号,书籍名称,借书日期,备注信息等。2.借书信息的查询,修改,包括借书信息编号,读者编号,读者姓名,书籍编号,书籍名称,借书日期,备注信息等。(4)实现还书功能。1.还书信息的输入,包括还书信息编号,读者编号,读者姓名,书籍编号,书籍名称,借书日期,还书日期,备注信息等。2.还书信息的查询和修改,包括还书信息编号,读书编号,读者姓名,书籍编号,书籍名称,借书日期,还书日期,备注信息等。(5)能方便的对图书进行查询。对超期的情况能自动给出提示信息4概念模型设计各部分E-R图如下:(1)读者信息类别实体E-R图4-1读者类别实体E-R图(2)书籍信息类别实体E-R图4-2书籍类别实体E-R图(3)图书借阅实体E-R图:4-3图书借阅实体E-R图(4)投诉管理实体E-R图:4-4投诉管理实体E-R图4-5实体之间关系的E-R图借阅关系(读者、管理员、书籍三元关系)图4-6CDM图5逻辑模型设计和优化从理论‘E-R模型’到理论‘关系模型’的整理转换,通过E-R模型到关系模型的转化,可以得到如下关系模式:借阅关系属性:工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注。主键:工作号,读者学号,ISBN管理员_书籍关系属性:工作号,ISBN,添加时间,是否在馆主键:工作号,ISBN管理员_学生关系属性:工作号,读者学号,确认借还主键:工作号,读者学号通过由概念模型设计得到CDM图powerdesigner转换成对应的PDM图:PDM图51图书信息表列名数据类型可否为空ISBNvarchar否书名varchar否作者varchar否出版社varchar是出版日期datetime是简介varchar是52读者信息表列名数据类型可否为空读者学号varchar否读者姓名varchar否读者性别varchar否联系电话varchar是所在院系varchar否53管理员信息表列名数据类型可否为空工作号varchar否姓名varchar否性别varchar否电话varchar是家庭住址varchar是54借阅表列名数据类型可否为空工作号char否ISBNchar否读者学号char否借阅日期datetime否还书日期datetime否是否续借char否55管理员_书籍列名数据类型可否为空工作号char否ISBNchar否添加时间datatime是是否在馆char是56管理员_学生列名数据类型可否为空工作号char否读者学号char否借还确认char否6物理设计和实施从理论‘关系模型’到实现\实施‘数据库建立’,物理文件的安排和建立索引61建立索引为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引是各表中建立索引的表项:(1)读者信息(读者学号)(2)书籍信息(ISBN)(3)管理员信息(工作号)(4)借阅(工作号,读者学号,ISBN)(5)管理员_书籍(工作号,ISBN)(6)管理员_学生(工作号,读者学号)62SQL语句如下所示:/==============================================================//Table:书籍信息//==============================================================/createtable书籍信息(ISBNchar(20)notnull,书名char(20),作者char(10),出版社char(15),出版日期char(30),简介char(160),constraintPK_书籍信息primarykey(ISBN));/==============================================================//Index:书籍信息_PK//==============================================================/createuniqueindex书籍信息_PKon书籍信息(ISBNASC);/==============================================================//Table:投诉//==============================================================/createtable投诉(工作号char(10)notnull,学号char(10)notnull,投书意见char(100),投诉日期char(30),受诉日期char(30),constraintPK_投诉primarykey(工作号,学号));/==============================================================//Index:投诉_PK//==============================================================/createuniqueindex投诉_PKon投诉(工作号ASC,学号ASC);/==============================================================//Index:投诉_FK//==============================================================/createindex投诉_FKon投诉(工作号ASC);/==============================================================//Index:投诉2_FK//==============================================================/createindex投诉2_FKon投诉(学号ASC);/==============================================================//Table:登记//==============================================================/createtable登记(工作号char(10)notnull,学号char(10)notnull,ISBNchar(20)notnull,证书日期char(30)notnull,还书日期char(30)notnull,违章状况char(160),累计借书char(160),备注char(160),constraintPK_登记primarykey(工作号,学号,ISBN));/==============================================================//Index:登记_PK//==============================================================/createuniqueindex登记_PKon登记(工作号ASC,学号ASC,ISBNASC);/==============================================================//Index:登记_FK//==============================================================/createindex登记_FKon登记(工作号ASC);/==============================================================//Index:登记2_FK//==============================================================/createindex登记2_FKon登记(学号ASC);/==============================================================//Index:登记3_FK//==============================================================/createindex登记3_FKon登记(ISBNASC);/==============================================================//Table:管理员信息//==============================================================/createtable管理员信息(工作号char(10)notnull,姓名char(10),性别char(5),电话char(15),所在院系char(25),constraintPK_管理员信息primarykey(工作号));/==============================================================//Index:管理员信息_PK//==============================================================/createuniqueindex管理员信息_PKon管理员信息(工作号ASC);/==============================================================//Table:读者信息//==============================================================/createtable读者信息(学号char(10)notnull,姓名char(10),性别char(5),电话char(15),所在院系char(25),constraintPK_读者信息primarykey(学号));/==============================================================//Index:读者信息_PK//==============================================================/createuniqueindex读者信息_PKon读者信息(学号ASC);7主要数据 *** 纵语句71管理员 *** 作(1)注册(register)INSERTINTO管理员(工作号,姓名,性别,电话,家庭住址,备注)VALUES(#工作号,#姓名,#性别,#电话,#家庭住址,#备注)说明:在登记 *** 作后,管理员得到一个唯一的工作号,可以根据这个工作号采查询和修改数据。(2)注销(unregister)DELETEFROMProviderWHERE(工作号=#工作号);(3)修改个人信息(update)UPdate管理员Set(工作号=#工作号,姓名=#姓名,性别=#性别,电话=#电话,家庭住址=#家庭住址)WHERE(工作号=#工作号)(4)增加书籍(addbooks)INSERTINTO图书(ISBN,书名,作者,出版社,出版日期,简介,)VALUES(#ISBN,#书名,#作者,#出版社,#出版日期,#简介,#备注)INSERTINTO管理员_书籍表(工作号,ISBN,添加时间,是否在馆)VALUES(#工作号,#ISBN,#添加时间,#是否在馆)(5)删除书籍(deletebooks)DELETE图书WHERE(ISBN=#ISBN)(6)修改书籍(updatebooks)UPDATE图书(书名=#书名,作者=#作者,出版社=#出版社,出版日期=#出版日期,简介=#简介)WHERE(ISBN=#ISBN)72读者 *** 作(1)注册(register)INSERTINTO读者(读者学号,读者姓名,读者性别,联系电话,所在系,生效日期,失效日期,违章状况,累计借书,备注)VALUES(#读者学号,#读者姓名,#读者性别,#联系电话,#所在系,#生效日期,#失效日期,#违章状况,#累计借书,#备注)说明:在登记 *** 作后,读者得到一个唯一的ID,可以根据这个ID来查询和修改自己的信息。(2)注销(unregister)DELETE读者WHERE(读者学号=#读者学号)(3)修改个人信息(update)UPDATE读者Set(读者姓名=#读者姓名,联系电话=#联系电话,所在系=#所在系,生效日期=#生效日期,失效日期=#失效日期,违章状况=#违章状况,累计借书=#累计借书,备注=#备注)WHERE(读者学号=#读者学号)(4)查询(select)SELECTISBN,书名,作者,出版社FROM图书WHEREISBN=#ISBNOR书名=#书名73管理员对借阅关系的 *** 作(1)插入读者的信息(insert)INSERTINTO借阅(工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注)VALUES(#工作号,#读者学号,#ISBN,#是否续借,#借书日期,#还书日期,#备注)(2)更新信息(update)①更新借出信息UPDATE借阅SET(借书日期=#借书日期,还书日期=借书日期+30,是否续借=0)WHERE(工作号=#工作号AND读者学号=#读者学号ANDISBN=#ISBN)UPDATE管理员_图书SET(是否在馆=0)WHERE(ISBN=#ISBN)UPDATA学生SET(累积借书=累积借书+1)WHERE(读者学号=#读者学号)INSERTINTO管理员_学生(工作号,读者学号,确认借还,ISBN)VALUES(#工作号,#读者学号,”0”,#ISBN))②更新续借信息UPDATE借阅SET(是否续借=#是否续借)WHERE(工作号=#工作号AND读者学号=#读者学号ANDISBN=#ISBN)③更新还书信息UPDATE管理员_图书SET(是否在馆=1)WHERE(ISBN=#ISBN)UPDATE管理员_学生SET(确认借还=”1”)WHERE(工作号=#工作号AND读者学号=#读者学号ANDISBN=#ISBN)
有三个数据库文件,可以用SQL语句来查询。具体语段如下:
现有图书管理数据库的三个关系模式,他们的字段分别如下:
图书:编号, 分类号, 书名, 作者, 出版单位, 单价
读者:借书证号, 单位, 姓名, 性别, 职称, 地址
借阅:借书证号, 总编号, 借书日期
以上表对应的字段明细如下:
book:b_no,b_type,b_name,b_author,b_publish,b_price
reader:r_no,r_unit,r_name,r_sex,r_pro,r_address
borrow:r_no,b_no,b_time
SQL语句特点
1、高度非过程化
非关系数据模型的数据 *** 纵语言是面向过程的语言,用其完成用户请求时,必须指定存取路径。
而用SQL进行数据 *** 作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的 *** 作过程由系统自动完成。
这不但大大减轻了用户负担,而且有利于提高数据独立性。
2、面向集合的 *** 作方式
SQL采用集合 *** 作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新 *** 作的对象也可以是元组的集合。
以上资料参考 百度百科—sql
以上就是关于sql题目,关于图书信息管理系统全部的内容,包括:sql题目,关于图书信息管理系统、数据库图书管理系统代码、1.图书管理数据库中有“读者表”(借书证号,姓名,部门,办证时间,照片)、“图书表”(书号,书名,作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)