图书馆借阅系统数据库设计说明书.docx

上传人:b****7 文档编号:16164808 上传时间:2023-07-11 格式:DOCX 页数:17 大小:46.27KB
下载 相关 举报
图书馆借阅系统数据库设计说明书.docx_第1页
第1页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第2页
第2页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第3页
第3页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第4页
第4页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第5页
第5页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第6页
第6页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第7页
第7页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第8页
第8页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第9页
第9页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第10页
第10页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第11页
第11页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第12页
第12页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第13页
第13页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第14页
第14页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第15页
第15页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第16页
第16页 / 共17页
图书馆借阅系统数据库设计说明书.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

图书馆借阅系统数据库设计说明书.docx

《图书馆借阅系统数据库设计说明书.docx》由会员分享,可在线阅读,更多相关《图书馆借阅系统数据库设计说明书.docx(17页珍藏版)》请在冰点文库上搜索。

图书馆借阅系统数据库设计说明书.docx

图书馆借阅系统数据库设计说明书

南昌航空大学实验报告

二016年3月28日

课程名称:

数据库原理实验名称:

图书馆借阅系统

班级:

14207218姓名:

胡合达同组人:

指导教师评定:

签名:

一、实验环境

1.Windows2000或以上版本;

2.SQLServer2005。

二、实验目的

了解并掌握数据库设计基本方法

3.系统需求分析

1.设计本系统模拟学生在图书馆借阅图书的内容,能够实现以下功能:

借阅信息的查询功能;

图书信息的多关键字检索查询;

  图书的出借、返还及超期罚款;

2.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。

3.对查询、统计的结果能够列表显示。

4.处理对象:

学生,馆藏图书信息,借阅信息,罚款信息,借阅历史

5.安全性要求

系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。

安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。

6.完整性要求

系统完整性要求系统中数据的正确性以及相容性。

可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。

 

4.概念结构设计

系统开发的总体目标是实现图书馆管理的系统化和自动化,缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书管理效率的目的。

概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。

图书借阅系统的E-R图

 

读者nm

m1

1m

1nmn

nnm

 

E-R图各实体的属性如下所示:

图书:

Book(BookID,BookNo,BookName,BookWriter,BookPublish,,BookDate,BookClass,BookState,

BookRNo)

读者:

Reader(ReaID,ReaName,ReaSex,ReaNo,ReaLBID,ReaDep,ReaGrade,ReaPref,ReaDate,Reasx)

管理员:

Maneger(MID,MName,MSex)

馆室:

Room(RoomNo,RoomMID,RoomNum,RoomAddre)

借阅信息:

Borrow(BookID,ReaderID,BookName,BookWriter,Outdate,YHdate)

借阅历史:

History(BookID,ReaderID,BookName,BookWriter,Outdate,

Indate,YHdate)

罚款信息:

Fine(BookID,ReaderID,BookName,Outdate,Indate,Fine,CLState,MID)

 

5.逻辑结构设计

以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。

具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。

将图书借阅E-R图转换为关系模型

图书

列名

数据类型

可否为空

说明

BookID

Char

notnull

图书编号

BookNo

Char

notnull

图书的索书号

BookName

Char

notnull

图书的书名

BookWriter

Char

notnull

图书作者

BookPulish

Char

notnull

图书出版社

Booknum

Smallint

Notnull

图书数量

BookDate

Date

出版日期

BookClass

Char

图书的分类

Booknums

smallint

Notnull

图书可借数量

BookState

Char

notnull

图书是否可借

BookRNo

Char

notnull

图书所在馆室号

读者

列名

数据类型

可否为空

说明

ReaID

Char

notnull

读者编号

ReaName

Char

notnull

读者姓名

ReaSex

Char

notnull

读者性别

ReaNo

Char

notnull

读者学号

ReaDep

Char

读者所在学院

ReaPref

Char

读者所属专业

ReaGrade

Char

读者的年级

ReaDate

Date

notnull

办证日期

ReaBs

Smallint

Notnull

已借本数

Reastate

Char

Notnnll

借书状态

Reasx

Smallint

Notnull

借书上限

 

管理员

列名

数据类型

可否为空

说明

MID主键

Char

notnull

管理员编号

MName

Char

notnull

管理员姓名

MSex

Char

管理员性别

馆室

列名

数据类型

可否为空

说明

RoomNo

Char

notnull

馆室号

RoomMID

Char

notnull

馆室管理员编号

Roomnum

Char

notnull

馆室拥有图书数目

RoomAddre

Char

馆室地址

RoomType,

Char

馆室类型

借阅信息

列名

数据类型

可否为空

说明

ReaID

Char

notnull

读者编号

BookID

Char

notnull

图书编号

BookName

Char

notnull

图书名

BookWriter

Char

作者

Outdate

Date

notnull

借阅时间

Indate

Date

归还时间

YHdate

Date

notnull

应还时间

Fine

Char

Notnull

罚款金额

CLState

Char

处理状态

MID

Char

notnull

管理员编号

 

 

6.数据库的实施

创建数据库及表格

管理员基本信息表的建立:

createtableManeger(

MIDchar(10)primarykey,

MNamechar(10)notnull,

MSexchar

(2),

check(MSex='男'orMSex='女')

图书馆室基本信息表的建立:

createtableRoom(

RoomNochar(5)primarykey,

RoomMIDchar(10)notnull,

Roomnumchar(5)notnull,

RoomAddrechar(20),

RoomTypechar(10),

foreignkey(RoomMID)referencesManeger(MID)ondeletecascadeonupdatecascade,

馆藏图书基本信息表的建立:

createtableBook(

BookIDchar(9)primarykey,

BookNochar(20)notnull,

BookNamechar(50)notnull,

BookWriterchar(30)notnull,

BookPublishchar(20)notnull,

Booknumsmallintcheck(Booknum>=0),

BookDatedatetime,

BookClasschar(20),

Booknumssmallintcheck(Booknum>=0),

BookStatechar(10)default‘可借’notnull,

BookRNochar(5)notnull,

check(Booknum>Booknums),

foreignkey(BookRNo)referencesRoom(RoomNo)ondeletecascadeonupdatecascade,

读者基本信息表的建立:

createtableReader(

ReaIDchar(9)primarykey,

ReaNamechar(10)notnull,

ReaSexchar

(2)notnull,

ReaNochar(9)notnull,

Reasxsmallintnotnull,

ReaBssmallintnotnull,

ReaDepchar(20),

ReaGradechar(5),

ReaPrefchar(20),

ReaDateDatetime,

Reastatechar(5)notnulldefault‘可借’,

foreignkey(ReaLBID)referencesReaderType(LBID)ondeletecascadeonupdatecascade,

check(ReaSex='男'orReaSex='女')

(6)借阅基本信息表的建立:

createtableBorrow(

BookIDchar(9),

ReaIDchar(9),

OutdateDatetimenotnull,

YHdateDatetimenotnull,

IndateDatetime,

Finechar(5)notnulldefault‘0’,

CLStatechar(8),

MIDchar(10)notnull,

primarykey(BookID,ReaID),

foreignkey(MID)referencesManeger(MID)ondeletecascadeonupdatecascade

建立视图

(1)用于查询图书基本信息的视图定义如下:

createviewBookview(索书号,书名,作者,出版社,图书状态)

as

selectBookNo,BookName,BookWriter,BookPublish,BookState

fromBook

(2)用于读者基本信息查询的视图定义如下:

createviewReaderview(读者姓名,类型,学院,专业,办证日期)

as

selectReaName,ReaType,ReaDep,ReaPref,ReaDate

fromReader

(3)用于显示当前借阅基本信息的视图定义如下:

createviewBorrowview(读者编号,书名,作者,借阅日期,到期日期)

as

selectReaID,BookName,BookWriter,Outdate,YHdate

fromBorrow,Book

whereBorrow.BookID=Book.BookIDandBorrow.Indateisnull

(4)用于借阅历史信息查询的视图定义如下:

createviewHistoryview(读者编号,书名,借阅日期,归还日期)

as

selectReaID,BookName,Outdate,Indate

fromBorrow,Book

whereBorrow.BookID=Book.BookIDandBorrow.Indateisnotnull

(5)用于查询罚款信息的视图定义如下:

createviewFineview(读者编号,书名,借阅日期,归还日期,罚款,处理状态)

as

selectReaID,BookName,Outdate,Indate,Fine,CLState

fromBorrow,Book

whereBorrow.BookID=Book.BookIDandFineisnotnull

建立索引

createclusteredindexBookPublishonBook(BookPublish);

createclusteredindexReaDeponReader(ReaDep);

建立触发器

当在中增加一条借阅记录时,书的可借数量减少一本,修改读者,并检查读者状态

createtriggerBorrow_insert1

onBorrow

forinsert

as

declare@BookIDchar(9)

declare@ReaIDchar(9)

select@ReaID=ReaID

frominserted

select@BookID=BookID

frominserted

Select@Reastate=Reastate

FromReader

WhereReaID=@ReaId

If(@Reastate=’不可借’)

Begin

Raiserror(‘该学生状态不可借书’,16,1)

Rollbacktransaction

End

updateBook

setBooknums=Booknums-1

whereBookID=@BookID

updateReader

setReaBs=ReaBs+1

whereReaID=@ReaID

当读者达到借书上限,设置借书状态为‘不可借’

createtriggerReader_update

onReader

forupdate

as

declare@ReaBssmallint

select@ReaBs=ReaBs

frominserted

declare@ReaIDchar(9)

select@ReaID=ReaID

frominserted

Select@Reasx=Reasx

FromReader

whereBookID=@BookID

If(@Reasx=@ReaBs)

Begin

updateReader

setReastate=’不可借’

whereReaID=@ReaID

End

还书的时候,书的可借数量增加一本,修改读者状态

createtriggerBorrow_insert

onBorrow

forinsert

as

declare@BookIDchar(9)

declare@ReaIDchar(9)

select@ReaID=ReaID

frominserted

select@BookID=BookID

frominserted

Select@Reastate=Reastate

FromReader

WhereReaID=@ReaId

If(@Reastate=’超期’)

Begin

Raiserror(‘该学生状态借书超期’,16,1)

Rollbacktransaction

End

updateBook

setBooknums=Booknums+1

whereBookID=@BookID

updateReader

setReaBs=ReaBs-1

whereReaID=@ReaID

存储过程

1.Book_Insert的定义:

CREATEPROCEDUREBook_Insert

@BookIDchar(9),

@BookNochar(20),

@BookNamechar(50),

@BookWriterchar(30),

@BookPublishchar(20),

@BookDatedatetime,

@BookClasschar(20),

@Booknumssmallint,

@Booknumsmallint,

@BookStatechar(10),

@BookRNochar(5)

as

insertintoBook

values(@BookID,@BookNo,@BookName,@BookWriter,@BookPublish,@BookDate,@BookClass,@BookState,@BookRNo,@Booknums,@Booknum);

2.Reader_Insert的定义:

CREATEPROCEDUREReader_Insert

@ReaIDchar(9),

@ReaNamechar(10),

@ReaSexchar

(2),

@ReaNochar(9),

@ReaDepchar(20),

@ReaGradechar(5),

@ReaPrefchar(20),

@ReaDateDatetime

@ReaBssmallint,

@Reastatechar(5),

@Reasxsmallint,

as

insertintoReader

values(@ReaID,@ReaName,@ReaSex,@ReaNo,@ReaDep,

@ReaGrade,@ReaPref,@ReaDate,@ReaBs,@Reastate,@Reasx;

3.Maneger_Insert的定义:

CREATEPROCEDUREManeger_Insert

@MIDchar(10),

@MNamechar(10),

@MSexchar

(2),

as

insertintoManeger

alues(@MID,@MName,@MSex);

4.Borrow_Insert的定义:

CREATEPROCEDUREBorrow_Insert

@BookIDchar(9),

@ReaIDchar(9),

@OutdateDatetime,

@YHdateDatetime,

@IndateDatetime,

@Finechar(5),

@CLStatechar(8),

@MIDchar(10)

as

insertintoBorrow

values(@BookID,@ReaID,@Outdate,@YHdate,@Indate,@Fine,@CLState,@MID);

5.Query_Reader_R的定义:

createprocedureQuery_Reader_R

@ReaIDchar(9)

as

select*

fromReaderview

where编号=ltrim(@ReaID);

6.Query_Reader_M的定义:

createprocedureQuery_Reader_M

as

select*

fromReaderview

7.Query_Book_Writer的定义:

createprocedureQuery_Book_Writer

@BookWriterchar(50)

as

select*

fromBookview

where作者like'%'+ltrim(@BookWriter)+'%';

8.Query_Book_Name_Publish的定义:

createprocedureQuery_Book_Name_Publish

@BookNamechar(50),

@BookPublishchar(20)

as

select*

fromBookview

where书名=ltrim(@BookName)and出版社=ltrim(@BookPublish);

9.Delete_Reader的定义:

createprocedureDelete_Reader

@ReaNochar(9)

as

delete

fromReader

whereReaNo=ltrim(@ReaNo);

10.Delete_Book的定义:

createprocedureDelete_Book

@BookIDchar(9)

as

delete

fromBook

whereBookID=ltrim(@BookID);

 

七.实验小结

这次实验使我熟悉了如何独立的建立一个系统,通过自己所学的知识,综合运用,并了解自己的不足之处。

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2