数据库综合作业图书管理系统.docx
《数据库综合作业图书管理系统.docx》由会员分享,可在线阅读,更多相关《数据库综合作业图书管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
数据库综合作业图书管理系统
图书馆数据管理系统
一、图书馆数据管理系统的描述
1、概念模型(E-R图)
2、关系模式
(1)书籍类别(种类编号、种类名称)
(2)读者(借书证编号,读者姓名、读者性别、读者种类、登记时间)
(3)书籍(书籍编号、书籍名称、书籍类别、书籍作者、出版社名称、出版日期、登记日期)
!
(4)借阅(借书证编号、书籍编号、读者借书日期)
(5)还书(借书证编号、书籍编号、读者还书时间)
(6)罚款(借书证编号、读者姓名、书籍编号、读者借书时间、读者还书日期)
二、图书馆数据库的建立
--
(1)书本类别表
createtablebook_style
(bookstylenovarchar(30)primarykey,--种类编号
bookstylevarchar(30))--种类名称
:
go
--
(2)书库表
createtablesystem_books
(bookidvarchar(20)primarykey,--书籍编号
booknamevarchar(30)notnull,--书籍名称
bookstylenovarchar(30)notnull,--书籍种类
bookauthorvarchar(30),--书籍作者
bookpubvarchar(30),--出版社
。
bookpubdatedatetime,--出版日期
bookindatedatetime,--登记日期
isborrowedvarchar
(2),--是否借出
foreignkey(bookstyleno)referencesbook_style(bookstyleno))
go
--(3)借书证表
createtablesystem_readers
(readeridvarchar(9)primarykey,--读者借书证号
,
readernamevarchar(9)notnull,--读者姓名
readersexvarchar
(2)notnull,--读者性别
readertypevarchar(10),--读者种类
regdatedatetime)--登记日期
go
--(4)借书记录表
createtableborrow_record
(bookidvarchar(20)primarykey,--书籍编号
·
readeridvarchar(9),--读者借书证编号
borrowdatedatetime,--读者借书时间
foreignkey(bookid)referencessystem_books(bookid),
foreignkey(readerid)referencessystem_readers(readerid))
go
--(5)还书记录表
createtablereturn_record
(bookidvarchar(20)primarykey,--书籍编号
!
readeridvarchar(9),--读者借书证编号
returndatedatetime,--读者还书时间
foreignkey(bookid)referencessystem_books(bookid),
foreignkey(readerid)referencessystem_readers(readerid))
go
--(6)罚款单表
createtablereader_fee
(readeridvarchar(9)notnull,--读者借书证号
<
readernamevarchar(9)notnull,--读者姓名
bookidvarchar(20)primarykey,--书籍编号
booknamevarchar(30)notnull,--书籍名称
bookfeevarchar(30),--罚款金额
borrowdatedatetime,--借书时间
foreignkey(bookid)referencessystem_books(bookid),
foreignkey(readerid)referencessystem_readers(readerid))
go
数据库的表的截图:
三、图书馆数据库数据的添加
uselibrary
--书籍类别导入book_style表中
insertintobook_style(bookstyleno,bookstyle)values('1','恐怖小说')
insertintobook_style(bookstyleno,bookstyle)values('2','穿越小说')
insertintobook_style(bookstyleno,bookstyle)values('3','恐怖小说')
<
insertintobook_style(bookstyleno,bookstyle)values('4','都市小说')
insertintobook_style(bookstyleno,bookstyle)values('5','科幻小说')
insertintobook_style(bookstyleno,bookstyle)values('6','仙侠小说')
insertintobook_style(bookstyleno,bookstyle)values('7','言情小说')
--已有书籍导入system_books表中
insertintosystem_books(bookid,bookname,bookstyleno,bookauthor,bookpub,bookpubdate,bookindate,isborrowed)
values('901','飘邈之旅','1','萧乾','向往','2015-09-01','2018-03-25','1')
insertintosystem_books(bookid,bookname,bookstyleno,bookauthor,bookpub,bookpubdate,bookindate,isborrowed)
values('902','明朝那些事儿','2','多一半','新星出版社','2015-05-09','2018-05-23','1')
insertintosystem_books(bookid,bookname,bookstyleno,bookauthor,bookpub,bookpubdate,bookindate,isborrowed)
values('903','鬼吹灯','3','天下霸唱','安徽文艺出版社','2014-09-18','2018-05-27','1')
insertintosystem_books(bookid,bookname,bookstyleno,bookauthor,bookpub,bookpubdate,bookindate,isborrowed)
values('904','盛夏晚晴天','4','顾漫','中国海关出版社','2015-09-01','2018-05-28','1')
insertintosystem_books(bookid,bookname,bookstyleno,bookauthor,bookpub,bookpubdate,bookindate,isborrowed)
values('905','三体','5','刘慈欣','凤凰出版社','2015-10-11','2018-05-29','1')
/
insertintosystem_books(bookid,bookname,bookstyleno,bookauthor,bookpub,bookpubdate,bookindate,isborrowed)
values('906','凡人修仙传','6','三十','凡人出版社','2013-04-21','2018-05-30','1')
insertintosystem_books(bookid,bookname,bookstyleno,bookauthor,bookpub,bookpubdate,bookindate,isborrowed)
values('907','霸道总裁爱上我','7','桐华','民族出版社','2012-06-20','2018-05-31','1')
--将已有图书证的读者加入system_readers表中
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('Q','白一','男','学生','2018-01-1812:
20')
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
/
values('Q','白二','男','学生','2018-01-1913:
15')
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('Q','白三','男','学生','2018-01-2013:
33')
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('Q','白四','男','学生','2018-01-2112:
01')
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('Q','白五','男','学生','2018-01-2215:
23')
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
)
values('201005','黑五','男','教师','2018-01-2318:
50')
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('201006','黒六','男','教师','2018-01-2418:
25')
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('GL001','空一','女','管理','2018-01-0116:
20')
--添加已借书读者的记录导入borrow_record表中,同时将在已借出的标记0
insertintoborrow_record(bookid,readerid,borrowdate)
。
values('901','Q','2018-01-1812:
20')
updatesystem_books
setisborrowed=0
wherebookid='901'andisborrowed='1'
insertintoborrow_record(bookid,readerid,borrowdate)
values('902','Q','2018-01-1913:
15')
updatesystem_books
setisborrowed=0
/
wherebookid='902'andisborrowed='1'
insertintoborrow_record(bookid,readerid,borrowdate)
values('903','Q','2018-01-2013:
33')
updatesystem_books
setisborrowed=0
wherebookid='903'andisborrowed='1'
insertintoborrow_record(bookid,readerid,borrowdate)
values('904','Q','2018-01-2112:
01')
·
updatesystem_books
setisborrowed=0
wherebookid='904'andisborrowed='1'
insertintoborrow_record(bookid,readerid,borrowdate)
values('905','Q','2018-01-2215:
23')
updatesystem_books
setisborrowed=0
wherebookid='905'andisborrowed='1'
、
insertintoborrow_record(bookid,readerid,borrowdate)
values('906','201005','2018-01-2318:
50')
updatesystem_books
setisborrowed=0
wherebookid='906'andisborrowed='1'
insertintoborrow_record(bookid,readerid,borrowdate)
values('907','201006','2018-01-2418:
25')
updatesystem_books
{
setisborrowed=0
wherebookid='907'andisborrowed='1'
四、图书馆数据库的查询
--
(1)查询所有书对应的类型
selectdistinctbookname书籍名称,bookstyle书籍类别
frombook_style,system_books
where=
:
go
--
(2)查询所有穿越小说类的书
selectdistinctbookname书籍名称,bookstyle书籍类别
frombook_style,system_books
where=
and='2'
go
|
--(3)查询中国海关出版社出版的书
selectdistinctbookname书籍名称,bookpub
frombook_style,system_books
wherebookpub='中国海关出版社
go
'
--(4)查询白三借了什么书
"
selectreadername读者姓名,bookname书籍名称
fromborrow_record,system_books,system_readers
where=
and=
andreadername='白三'
Go
--(5)查询同名同姓读者,同时统计同名同姓人数(先插入一个同名同姓读者)
.
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('Q','白五','男','学生','2018-01-2215:
26')
selectreadername读者姓名,count(readername)as'同名人数'
fromsystem_readers
groupbyreadername
havingcount(*)>1
go
&
--(6)查询书名包括“盛”关键词的图书,输出书籍编号、书籍名称、作者
selectbookstyleno,bookname,bookauthor
fromsystem_books
wherebooknamelike'%盛%'
go
--(7)查询当前借了《三体》却没有借《盛夏晚晴天》的读者,输出其读者借书证编号,并按编号降序排列
select书籍编号,bookname书籍名称,bookauthor作者,readerid读者借书证编号
#
fromsystem_books,borrow_record
where=
andbookname='三体'
andreaderidnotin
(selectreaderid
fromsystem_books,borrow_record
where=
andbookname='盛夏晚晴天')
~
go
--(8)创建一个视图account,显示所有学生的借书信息(只显示姓名和书名)
createviewaccount
as
select,
fromborrow_record,system_books,system_readers
where=
¥
and=
and='学生'
go
select*
fromaccount
--(9)查询已借书的读者借书是否超期(30天)
select读者借书证编号,readername读者姓名,
"
书籍编号,bookname书名,borrowdate借书时间,
datediff(day,convert(smalldatetime,borrowdate),getdate())-30超过时间
fromborrow_record,system_readers,system_books
where=
and=
anddatediff(day,convert(smalldatetime,borrowdate),getdate())>=30
go
、
--(10)对超过天数的读者进行罚款,一天以结算,添加进reader_fee表里,再进行select查询
insertintoreader_fee(readerid,readername,bookid,bookname,bookfee,borrowdate)
select读者借书证编号,readername读者姓名,
书籍编号,bookname书名,borrowdate借书时间,
*(datediff(day,convert(smalldatetime,borrowdate),getdate())-30)超过时间
fromborrow_record,system_readers,system_books
where=
and=
@
anddatediff(day,convert(smalldatetime,borrowdate),getdate())>=30
go
selectreaderid书读者借书证编号,readername读者姓名,bookid书籍编号,bookfee超期罚款
fromreader_fee
五、图书馆数据库的更新
--
(一)还书操作
--1、添加一条还书记录
*
insertintoreturn_record(bookid,readerid,returndate)
selectbookid,readerid,getdate()
fromborrow_record
wherebookid='901'
go
selectbookid书籍编号,readerid读者借书证编号,returndate归还时间
fromreturn_record
¥
--2、删除相应书籍的借书记录
delete
fromborrow_record
wherebookid='901'
go
selectbookid书籍编号,readerid读者借书证编号,borrowdate归还时间
fromborrow_record
—
--3在书库中标记该书籍为1,表示已归还,其他读者可借阅
updatesystem_books
setisborrowed=1
wherebookid='901'
go
selectbookid书籍编号,bookname书籍名称,isborrowed是否借出
fromsystem_books
wherebookid='901'
--
(二)借书证
--1、申请借书证
insertintosystem_readers(readerid,readername,readersex,readertype,regdate)
values('Q','白六','女','学生',getdate())
go
select*fromsystem_readers
wherereaderid='Q'
--2、注销借书证(借书和归还记录都要删除)
deletefromsystem_readers
wherereaderid='Q'
go
deletefromreturn_record
wherereaderid='Q'
Go
--确认是否删除
select*fromsystem_readers
wherereaderid='Q'
六、总结与分析
通过这次数据库的综合作业设计,经过独立的思考以及运用,增强了对数据库应用方面的理解。
当然与此同时,也发现了自己的许多不足,对于知识点掌握的不够纯熟,思考以及运用得时候都略嫌生疏,还是需要多加练习,积累一些属于自己的经验。
在数据库设计过程中,队数据库设计理念以及思想上有了更深层次的认识,从需求分析到概念设计,E-R模型的设计(由于WPS的模板功能的限制:
只能使用60个约束条件,导致数据库的E-R模型中的‘读者信息实体’无法展示出其各个属性,致使E-R模型图有些瑕疵,敬请见谅),关系模式的建立,弄清了不少之前有些模糊的概念。
而在数据库的查询与更新中,更加深了对于SQL语句的理解与运用,插入、删除、修改、查询以及表与表之间的联系,主键与外键的定义,约束项的定义等等,都让我养成了更加出色的逻辑分析能力。
在完成设计的过程中,也通过网络查询了一些资料以增添自己贫瘠的创造能力,学以致用并不断完善,最终完成了这份数据库综合实践作业。