图书管理系统数据库.docx

上传人:wj 文档编号:26243394 上传时间:2023-06-17 格式:DOCX 页数:13 大小:851.52KB
下载 相关 举报
图书管理系统数据库.docx_第1页
第1页 / 共13页
图书管理系统数据库.docx_第2页
第2页 / 共13页
图书管理系统数据库.docx_第3页
第3页 / 共13页
图书管理系统数据库.docx_第4页
第4页 / 共13页
图书管理系统数据库.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

图书管理系统数据库.docx

《图书管理系统数据库.docx》由会员分享,可在线阅读,更多相关《图书管理系统数据库.docx(13页珍藏版)》请在冰豆网上搜索。

图书管理系统数据库.docx

一、需求分析:

1.1图书管理系统的需求定义为:

1.1.1使用读者编号、读者姓名、图书编号和图书姓名实现图书借阅功能;

1.1.2使用读者类型和类型编号实体对教师、学生和其他三种身份进行不同的借阅条件管理;

1.1.3使用限借数量、借阅日期和归还日期实现不同身份的借阅管理功能;

二、概要设计:

2.1图书馆管理系统数据表设计:

2.1.1Readers表:

读者信息表,存取读者信息;

2.1.2Books表:

图书信息表,存取图书信息;

2.1.3Borrowinf表:

借阅信息表,管理借阅情况;

2.1.4Readtype表:

读者类型表,管理读者类型;

这些数据表结合图书馆数据库中的四个存储过程,即实现了普通图书馆的大部分功能。

如读者借阅图书功能、读者归还图书功能、读者查询图书借阅情况功能、读者检索的图书信息功能;

图2.1数据E-R图

三、逻辑设计

3.1图书馆管理系统触发器设计:

3.1.1Tri_bowbook功能表现:

只有在图书馆内相关书籍尚有库存的情况下,读者才可以进行借阅操作;

3.1.2Tri_bowbook2功能表现:

还书时将还书信息更新到各表中;

3.1.3Tri_bowbook3功能表现:

限制借书数目,其中教师不得借阅超过3本,学生不得借阅超过2本,其他人不得借阅超过1本;

四、物理设计:

表4.1Readers

列名

数据类型

允许空值

说明

ReaderID

char(10)

标明读者唯一编号

Name

char(8)

读者姓名

BorrowedQuantity

int

已借数目

TypeID

int

读者类型

表4.2Books

列名

数据类型

允许空值

说明

BookID

char(15)

标明图书唯一编号

Name

varchar(50)

图书名称

Author

char(8)

图书作者

Publisher

varchar(30)

出版社

Standing

int

剩余数量

表4.3Borrowinf

列名

数据类型

允许空值

说明

ReaderID

char(10)

标明读者唯一编号

BookID

char(15)

标明图书唯一编号

BorrowedDate

datetime

借书日期

ReturnDate

datetime

还书日期

表4.4Readtype

列名

数据类型

允许空值

说明

TypeID

int

标明类型唯一编号

Name

varchar(20)

类型名称

LimitBorrowQuantity

int

限借数量

BorrowTerm

int

限借时间

五、数据库实施:

5.1建立数据库:

5.1.1使用SQLServerManagementStudio新建数据库:

使用SQLServerManagementStudio创建一个图书管理数据库,初始大小为5MB,最大为30MB,数据库自动增长,增长方式是按1%的比例增长;日志文件初始为1MB,最大可增长到10MB,按1MB增长。

数据库名称为student_grade,存放路径为“D:

\XSCJSYS”。

日志文件的名称为student_log,存放路径为“D:

\XSCJSYS”。

如下图所示:

图5.1.1新建数据库

5.1.2设计数据库表:

在登录后依次打开文件资源管理器中的数据库-TSGL-表,并选择“新建”,进行数据库表的设计(在此时设计好主键);

图5.1.2数据库表设计

5.1.3数据初始化:

在创建好的数据表中右键选择-并击前200行,输入编辑好的数据:

图5.1.3设定表数据

5.2完整性测试与检查:

5.2.1参照完整性测试:

useTSGL

insertintoreadersvalues('2014010323','李老师')

insertintoreadersvalues('2014030335','小何')

insertintoreadersvalues('2014039999','小王')

go

图5.2.1参照完整性测试

5.2.2创建图书借出数量不超过总数的CHECK约束:

go

altertablebooks

withnocheckaddconstraintbooks_Standing

check(Standing>=0andStanding<=5)

go

图5.2.2创建CHECK约束

5.3使用SQL语句查询:

5.3.1使用like语句查询所有姓王的读者:

select*fromreaderswherenamelike'王%';

图5.3.1模糊查询

5.2查询所有已经借阅的图书名称、总数:

selectborrowinf.bookid,books.name,count(*)as借出数目

fromborrowinfinnerjoinbooksonborrowinf.BookID=books.BookID

groupbybooks.name,borrowinf.bookid

orderby借出数目desc

图5-7多表查询、统计查询

5.3查询所有已借图书的读者信息:

useTSGL

selectreaders.Name,readers.ReaderID,readers.BorrowedQuantityas已借数目

fromreadersinnerjoinborrowinfonborrowinf.readerID=readers.readerID

groupbyreaders.Name,readers.ReaderID,readers.BorrowedQuantity

图5-8多表查询、统计查询

5.4查询被借出的图书中出版社是机械工业出版社的书名和书籍编号:

useTSGL

selectbooks.Name,books.BookID

frombooksinnerjoinborrowinfonborrowinf.BookID=books.BookIDandbooks.Publisher='机械工业出版社'

groupbybooks.Name,books.BookID

图5-9多表查询

5.5查询借阅了《数据库原理》的读者的姓名和读者编号:

useTSGL

selectreaders.Name,readers.ReaderID

fromreaders

wherereaders.ReaderIDin(

selectborrowinf.ReaderIDfromborrowinfwhereBookID=(

selectBookIDfrombookswherebooks.Name='数据库原理'

))

图5-10子查询

5.6查询王同学借阅的图书名称和编号:

useTSGL

selectbooks.Name,books.BookID

frombooks

wherebooks.bookIDin(

selectborrowinf.bookIDfromborrowinfwhereBookIDin(

selectBookIDfromborrowinfwhereReaderID=(

selectReaderIDfromreaderswherereaders.Name='王同学'

)))

图5-11子查询

6触发器实现:

6.1若无库存无法借书的触发器:

createtriggertri_bowbook

onborrowinf

forinsert,update

as

declare@bidchar(15),@bstdint

select@bid=bookidfrominserted

select@bstd=standingfrombookswhere@bid=books.BookID

if(@bstd=0)

beginrollbacktransaction

print'借阅失败!

'

print'此书已无库存!

'

end

图5-12借阅限制触发器

6.2不得超过读者类型限制的借阅上限触发器:

USE[TSGL]

GO

/******Object:

Trigger[dbo].[tri_bowbook2]ScriptDate:

2020/6/2921:

12:

30******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERtrigger[dbo].[tri_bowbook2]

on[dbo].[borrowinf]

forinsert,update

as

declare@rdidchar(10),@typeint,@limint,@numint

select@rdid=readeridfrominserted

select@type=typeidfromreaderswhere@rdid=readers.readerid

select@lim=LimitBorrowQuantityfromreadtypewhere@type=readtype.typeid

select@num=BorrowedQuantityfromreaderswhere@rdid=readers.readerid

if(@num=@lim)

beginrollbacktransaction

print'借阅失败!

'

print'已达到借阅上限,请先归还图书再进行借书操作!

'

end

图5-13限制触发器

6.3添加借阅记录时自动更新信息以实现借阅功能的触发器:

createtriggertri_bowbook3

onborrowinf

forinsert

as

declare@bidchar(15),@reidchar(10),@stdint,@nstdint,@borint,@nborint

select@bid=bookidfrominserted

select@reid=readeridfrominserted

select@std=standingfrombookswhere@bid=books.BookID

select@nstd=@std+1

select@bor=BorrowedQuantityfromreaderswhere@reid=readers.ReaderID

select@nbor=@bor+1

UPDATEbookssetStanding=@nstdwhere@bid=books.BookID

UPDATEreaderssetBorrowedQuantity=@nborwhere@reid=readers.ReaderID

图5-14借阅触发器

一、数据库安全与备份:

1.改变身份验证模式:

使用“对象资源管理器”中的“服务器属性”对话框改变服务器身份验证模式:

图6-1设置身份验证模式

2.分离数据库:

使用sp_detach_db存储过程分离JXGL数据库:

图6-2分离数据库

二、总结:

通过本次课程设计,我掌握了设计数据库的基本流程,掌握了E-R图的制作方法,熟悉了使用SQL语句进行统计查询、多表查询、子查询等多种查询数据的方式,掌握了使用触发器对数据库进行增删改查的各种操作,但有的部分仍有不熟悉的情况,需要在今后的学习工作中继续深入学习关于数据库的各种知识。

感谢老师一个学期的辛勤教导!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1