《数据库原理及应用》课程设计报告.docx

上传人:b****4 文档编号:3732531 上传时间:2022-11-25 格式:DOCX 页数:20 大小:243.04KB
下载 相关 举报
《数据库原理及应用》课程设计报告.docx_第1页
第1页 / 共20页
《数据库原理及应用》课程设计报告.docx_第2页
第2页 / 共20页
《数据库原理及应用》课程设计报告.docx_第3页
第3页 / 共20页
《数据库原理及应用》课程设计报告.docx_第4页
第4页 / 共20页
《数据库原理及应用》课程设计报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

《数据库原理及应用》课程设计报告.docx

《《数据库原理及应用》课程设计报告.docx》由会员分享,可在线阅读,更多相关《《数据库原理及应用》课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。

《数据库原理及应用》课程设计报告.docx

《数据库原理及应用》课程设计报告

 

信息技术学院

《数据库原理及应用》课程设计报告

 

专业:

计算机科学与技术

班级:

姓名:

学号:

设计题目:

图书管理系统

 

2012年12月28日至2013年1月3日

一、系统需求分析

1.1从读者角度考虑的数据流程图

1.2图书管理系统数据流程图

顶层数据流图:

第2层数据流图:

(读者借阅,读者还书,读者查询,管理员查询,管理员修改)

第3层数据流图:

(读者借阅)

第3层数据流图:

(读者还书)

第3层数据流图:

(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息)

第3层数据流图:

(管理员添加、删除、修改图书信息)

第3层数据流图:

(管理员添加、删除、修改读者信息)

1.3图书管理系统数据字典

表1-1 Book书籍信息表

表中列名

数据类型

可否为空

说明

BookID

varchar

notnull(主键)

图书编号

ISBN

varchar

notnull

索书号

SPlace

varchar

notnull

存放位置

State

varchar

Notnull

当前状态

表1-2  Reader读者信息表格

表中列名

数据类型

可否为空

说明

RID

varchar

notnull(主键)

读者借书证号

Name

varchar

notnull

读者姓名

Tel

varchar

notnull

读者电话

Email

varchar

notnull

读者邮箱

BNumber

Int

notnull

可借书数

表1-3Manager管理员信息表格

表中列名

数据类型

可否为空

说明

MID

varchar

notnull(主键)

工号

Name

varchar

notnull

姓名

RoomID

varchar

馆室号

表1-4 CIP书目信息表

表中列名

数据类型

可否为空

说明

ISBN

Varchar

Notnull(主键)

索书号

bookname

Varchar

Notnull

书籍名称

Author

Varchar

Null

书籍作者

Pyear

Char

Null

出版年月

Publisher

Varchar

Null

出版者

Number

Int

Null

册数

表1-5 Borrow借阅记录信息表

表中列名

数据类型

可否为空

说明

RID

Varchar

Notnull(外主键)

读者借阅证编号

BookID

Varchar

Notnull(外主键)

书籍编号

BDate

Datetime

Notnull

读者借书时间

SRDate

Datetime

Notnull

应还日期

ISBN

Varcher

Notnull(外键)

索书号

表1-6 History借阅历史信息表

表中列名

数据类型

可否为空

说明

BookID

Varchar

Notnull(外主键)

读者借阅证编号

RID

Varchar

Notnull(外主键)

书籍编号

RDate

datetime

Notnull

读者还书时间

BDate

Datetime

Notnull

读者借书日期

表1-7 fine罚款记录信息表

RID

varchar

Notnull(外主键)

读者借书证编号

ClState

Datetime

null

是否缴纳罚金

BookID

varchar

Notnull(外主键)

书籍编号

SRDate

Datetime

Notnull

书籍名称

Fine

varchar

Null

罚款金额

BDate

datetime

NotNull

借阅时间

MID

Varcher

Notnull(外键)

工号

RDate

Datetime

Notnull

还书日期

表1-8 room馆室信息表

表中列名

数据类型

可否为空

说明

RoomID

Varchar

Notnull(主键)

馆室编号

RoomName

Varchar

Notnull

馆室名

表1-9 Appiontmnet预约信息表

表中列名

数据类型

可否为空

说明

ISBN

Varchar

Notnull(外主键)

索书号

RID

Varchar

Notnull(外主键)

读者编号

BDate

Datetime

Null

借阅日期

MID

Datetime

Notnull(外键)

工号

Applimit

Varchar

Null

预约时间限制

RDate

Datetime

Null

归还日期

二、概念结构设计

可以用E/R模型表述该模型的设计,E/R图如图所示。

三、逻辑结构设计

通过E/R模型到关系模型的转化,可以得到如下关系模式:

(一)各E-R图各实体的属性如下所示

1、图书:

Book(BookID,ISBN,SPlace,State)

2、读者:

Reader(RID,Name,Tel,Email,BNumeber)

3、管理员:

Manager(MID,Name,RoomID)

4、书目:

CIP(ISBN,BookName,Author,Publisher,Pyear,Number)

5、馆室:

Room(RoomID,RoomName)

(二)各E-R图中联系的属性如下所示:

6、借阅信息:

Borrow(BookID,RID,BDate,SRDate)

7、借阅历史:

History(BookID,RID,BDate,RDate)

8、罚款信息:

Fine(RID,BookID,BDate,RDate,Fine,CLState,MID)

9、预约信息:

Appiontmnet(RID,ISBN,RDate,AppLimit,MID)

3.1.1将E-R图转换为关系模型

实体型转换为关系模式。

实体的属性就是关系的属性,实体的码就是关系的码。

对于实体间的联系则有以下不同的情况:

一个m:

n联系转换为一个关系模式。

与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

一个1:

n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

一个1:

1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

三个或三个以上实体间的一个多元联系可以转换为一个关系模式。

与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合具有相同码的关系模式可合并。

由于图书与CIP、资料室与图书的联系方式是1:

n(一对多),可以将其之间的联系与n端实体CIP、图书合并,管理员与图书之间的维护联系也是1:

n(一对多),同样也将其之间的联系与n端实体合并,而读者与图书之间的借阅和归还联系方式则是n:

m(多对多),这样要把它们之间的联系转化为独立的关系模式,读者与管理员之间的罚款联系是m:

n(多对多),将其联系也转化成独立的关系模式,具体的基本E-R图向关系模型的转化如下:

图书:

Book(BookID,ISBN,SPlace,State)

读者:

Reader(RID,Name,Tel,Email,BNumeber)

管理员:

Manager(MID,Name,RoomID)

书目:

CIP(ISBN,BookName,Author,Publisher,Pyear,Number)

馆室:

Room(RoomID,RoomName,)

借阅信息:

Borrow(BookID,RID,BDate,SRDate)

借阅历史:

History(BookID,RID,BDate,RDate)

罚款信息:

Fine(RID,BookID,BDate,SRDate,RDate,Fine,CLState,MID)

预约信息:

Appiontmnet(RID,ISBN,RDate,AppLimit,MID)

(注:

标有直线下划线的为主属性,标有波浪线下划线的是外键属性,主属性与外键属性一起构成主码)

3.2.1模型优化

关系模式Book,Reader,Room,Maneger,CIP,Room不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,但是借阅关系模式、借阅历史关系模式、罚款关系模式及预约信息模式(Borrow,History,Fine,Appontment)中存在着一些数据冗余,现将四个关系模型进行合并,消除冗余,优化为:

借阅信息:

Borrow(BookID,RID,ISBN,BDate,RDate,SRDate,Fine,AppLimitCLStaete,MID)

四、系统实现(SQL编程)

4.1.1建立视图

1、建立Book表

CREATETABLEBook

BookIDvarchar(20)PRIMARYKEY,

ISBNvarchar(50)NOTNULL,

SPlacevarchar(50)NOTNULL,

Statechar

(2)

);

2、建立Reader表

CREATETABLEReader

RIDvarchar(10)PRIMARYKEY,

Namevarchar(18)NOTNULL,

Telvarchar(18)NOTNULL,

Emailvarchar(18)NOTNULL,

BNumberintcheck(BNumber<=10andBNumber>=0)default10,--可借书的数量

);

3、建立CIP表

CREATETABLECIP

ISBNvarchar(10)PRIMARYKEY,

BookNamevarchar(20)NOTNULL

Authorvarchar(20)

Publishervarchar(50),

Pyearchar(8)

Numberintcheck(Number>=0)

);

4、建立Manager表

CREATETABLEManager

MIDvarchar(8)PRIMARYKEY,

Namevarchar(18)NOTNULL,

RoomIDvarchar(18)

CONSTRAINTFK_Manager_RoomID

FOREIGNKEY(RoomID)REFERENCESRoomID(RoomID),

);

5、建立Room表

CREATETABLERoom

RoomIDvarchar(8)PRIMARYKEY,

RoomNamevarchar(18)NOTNULL,

);

6、建立Borrow表

CREATETABLEBorrow

BookIDvarchar(20)NOTNULL,

RIDvarchar(10)NOTNULL,

ISBNvarchar(50)NOTNULL,

BDatedatetimeNOTNULL,

SRDatedatetimeNOTNULL,

primarykey(BookID,RID),

CONSTRAINTFK_Borrow_BookID

FOREIGNKEY(BookID)REFERENCESBook(BookID),

CONSTRAINTFK_Borrow_ISBN

FOREIGNKEY(ISBN)REFERENCESCIP(ISBN),

CONSTRAINTFK_Borrow_RID

FOREIGNKEY(RID)REFERENCESReader(RID)

);

7、建立History表

CREATETABLEHistory

BookIDvarchar(20)NOTNULL,

RIDvarchar(10)NOTNULL,

BDatedatetimeNOTNULL,

RDatedatetimeNOTNULL,

primarykey(BookID,RID),

CONSTRAINTFK_History_BookID

FOREIGNKEY(BookID)REFERENCESBook(BookID),

CONSTRAINTFK_History_RID

FOREIGNKEY(RID)REFERENCESReader(RID)

);

8、建立Fine表

CREATETABLEFine

RIDvarchar(20)NOTNULL,

MIDvarchar(8)NOTNULL,

BookIDvarchar(20)NOTNULL,

BDatedatetimeNOTNULL,

SRDatedatetimeNOTNULL,

RDatedatetimeNOTNULL,

Finevarchar(20)

CLStatechar(8),

primarykey(BookID,RID),

CONSTRAINTFK_Fine_RID

FOREIGNKEY(RID)REFERENCESReader(RID),

CONSTRAINTFK_Fine_MID

FOREIGNKEY(MID)REFERENCESManager(ID),

CONSTRAINTFK_Fine_BookID

FOREIGNKEY(BookID)REFERENCESBook(BookID)

);

9、建立Appiontmnet表

CREATETABLEAppiontmnet

RIDvarchar(8)NOTNULL,

MIDvarchar(6)NOTNULL,

ISBNvarchar(20)NOTNULL,

RDatedatetime

BDatedatetime

AppLimitvarchar(20)default‘10’

primarykey(ISBN,RID),

CONSTRAINTFK_Appiontment_RID

FOREIGNKEY(RID)REFERENCESReader(ID),

CONSTRAINTFK_Appiontment_MID

FOREIGNKEY(MID)REFERENCESManager(ID),

CONSTRAINTFK_RETURN_ISBN

FOREIGNKEY(ISBN)REFERENCESCIP(ISBN)

);

4.1.2建立视图

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

createviewBookview(索书号,书号,书名,出版社,册数,存放位置,当前状态)

as

selectCIP.ISBN,BookID,BookName,Publisher,Number,Splace,State

fromCIP,Book

whereCIP.ISBN=Book.ISBN

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

createviewReaderview(读者姓名,编号,电话,邮箱)

as

selectName,RID,Tel,Email

fromReader

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

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

as

selectRID,BookName,Author,BDate,SRDate

fromBorrow,CIP

whereBorrow.ISBN=CIP.ISBN

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

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

as

selectBorrow.RID,BookName,BDate,SRDate

fromBorrow,CIP,Reader

whereBorrow.RID=Reader.RID

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

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

as

selectBorrow.RID,BookName,Borrow.BDate,RDate,Fine,CLState

fromBorrow,CIP,Fine

whereBorrow.ISBN=CIP.ISBNandFineisnotnull

(6)用于预定信息的视图如下:

CreateviewAppiontmentview(读者编号,索书号,预约时间,预约期限天)

As

SelectAppiontment.RID,Appiontment.ISBN,BDate,Applimit

FromAppiontment,CIP

WhereAppiontment.ISBN=CIP.ISBNand

CIP.Numberisnull/*当某书目可借书数量为零时*/

4.1.3建立触发器

本系统创建了三个触发器,它们分别实现删除图书、统计图书可借数量、借阅图书信息的功能。

其代码如下。

1创建删除图书的触发器

createtriggerdeletebook

onBookinsteadofdelete

as

deletefromBorrowwhereRIDin(selectRIDfromdeleted)

deletefromBookwhereidin(selectBookIDfromdeleted)

2创建统计图书可借数量的触发器

createtriggerReadercountable

onBorrowafterinsert

as

updateReadersetBNumber=BNumber-1whereRIDin(selectRIDfrominserted)

--借书后用户的可借数量减1—

3创建借阅图书信息功能的触发器

/*借书管理,当在中增加一条借阅记录时,使该图书的状态由“未借”变为“已借出*/

createtriggerBorrow_insert1

onBorrow

forinsert

as

declare@BookIDchar(9)

select@BookID=BookID

frominserted

updateBook

setState='已'/*已借出*/

whereBookID=@BookID

/*验证*/

insertintoBorrowvalues('07','04','806','2012-2-4','2012-4-4')

4还书管理

/*还书管理(举实例论证,预约功能在上一触发器中实现)*/

BEGINTRANSACTION

INSERTINTOHistory(BookID,RID,BDate,RDate)

VALUES('11','02','2012-4-6','2012-4-8')

UPDATEBOOKSETState='0'WHEREBookID='11'

COMMIT;

5自动计算罚金公式

/*若超过时间限制,计算罚金公式*/

/*1.把没归还日期的归还日期改为系统时间*/

UPDATEHistorySETRDate=getdate()whereRDateisnulll

/*2.假设有个可借天数字段天*/

updateFinesetfine=(datediff(day,'2012-3-1','2012-6-3')-60)*0.2

/*没有可借天数的话把-可借天数以及外面的一对括号删除*/

4.1.4管理员操作

1)入库管理:

/*入库管理,新书入库*/

insertintoCIP(ISBN,BookName,Number,Author,Publisher,Pyear)

values(813,'中外通史',5,'方严','高教','2007.5')

/*旧书入库*/

updateCIP

setNumber=Number+1

whereISBN='805'

2)增加读者:

INSERTINTOReader(RID,Name,Tel,Email,BNumber)VALUES(#RID,#Name,#Tel,#BNumber);

3)删除读者:

DELETEFROMReaderWHERE(RID=#RID);

4)修改读者信息:

UPDATEReaderSETName=#Name,Tel=#TelWHERE(RID=#RID);

5)增加书籍:

INSERTINTOCIP(ISBN,BookName,Author,Publisher,Pyear,Number)VALUES(#ISBN,#BookName,#Author,#Publisher,#Pyear,#Number);

6)删除书籍:

DELETEFROMBookWHERE(BookID=#BookID);

7)修改书籍信息:

UPDATEBookSETBookName=#BookName,Author=#Author,Publisher=#Publisher,

Pyear=#Pyear,Number=#NumberWHERE(BookID=#BookID);

8)学生借阅图书:

BEGINTRANSACTION

INSERTINTOBorrow(RID,BookID,SRDate,BDate)

VALUES(#RID,#BookID,#SRDate,#BDate);

UPDATEBOOKSETState=’2’WHEREBookID=#BookID

COMMIT;

9)学生归还图书:

BEGINTRANSACTION

INSERTINTOHistory(RID,BookID,RDate,BDate)

VALUES(#RID,#BookID,#RDate,#BDate);

UPDATEBOOKSETState=’0’WHEREBookID=#BookID

COMMIT;

(说明:

要知道图书当前的状态,是图书馆存放,还是被借阅等,需要再Book模式中增加对应项用以表示图书当前的状态。

比如我们增加State,并且约定取值和状态的对应关系如下:

0:

在图书馆中并且没有被

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

当前位置:首页 > 求职职场 > 简历

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

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